Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
777,777 NGN
Holders
498
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
NGN
Compiler Version
v0.8.9+commit.e5eed63a
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-01-10 */ // SPDX-License-Identifier: Unlicensed pragma solidity 0.8.9; // File: @uniswap/v2-core/contracts/interfaces/IUniswapV2Factory.sol pragma solidity >=0.5.0; 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; } // File: @uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router01.sol pragma solidity >=0.6.2; 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); } // File: @uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router02.sol pragma 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; } // File: @openzeppelin/contracts/utils/Context.sol // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } // File: @openzeppelin/contracts/access/Ownable.sol // OpenZeppelin Contracts v4.4.1 (access/Ownable.sol) pragma solidity ^0.8.0; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _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 { _transferOwnership(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"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // File: @openzeppelin/contracts/token/ERC20/IERC20.sol // OpenZeppelin Contracts v4.4.0 (token/ERC20/IERC20.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } // File: @openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol // OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol) pragma solidity ^0.8.0; /** * @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); } // File: @openzeppelin/contracts/token/ERC20/ERC20.sol // OpenZeppelin Contracts (last updated v4.5.0) (token/ERC20/ERC20.sol) pragma solidity ^0.8.0; /** * @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 Contracts guidelines: functions revert * instead returning `false` on failure. This behavior is nonetheless * conventional and does not conflict with the expectations of ERC20 * applications. * * Additionally, an {Approval} event is emitted on calls to {transferFrom}. * This allows applications to reconstruct the allowance for all accounts just * by listening to said events. Other implementations of the EIP may not emit * these events, as it isn't required by the specification. * * Finally, the non-standard {decreaseAllowance} and {increaseAllowance} * functions have been added to mitigate the well-known issues around setting * allowances. See {IERC20-approve}. */ contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; /** * @dev Sets the values for {name} and {symbol}. * * The default value of {decimals} is 18. To select a different value for * {decimals} you should overload it. * * All two of these values are immutable: they can only be set once during * construction. */ constructor(string memory name_, string memory symbol_) { _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 18, imitating the relationship between * Ether and Wei. This is the value {ERC20} uses, unless this function is * overridden; * * NOTE: This information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * {IERC20-balanceOf} and {IERC20-transfer}. */ function decimals() public view virtual override returns (uint8) { return 18; } /** * @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: * * - `to` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address to, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _transfer(owner, to, 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}. * * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on * `transferFrom`. This is semantically equivalent to an infinite approval. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _approve(owner, 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}. * * NOTE: Does not update the allowance if the current allowance * is the maximum `uint256`. * * Requirements: * * - `from` and `to` cannot be the zero address. * - `from` must have a balance of at least `amount`. * - the caller must have allowance for ``from``'s tokens of at least * `amount`. */ function transferFrom( address from, address to, uint256 amount ) public virtual override returns (bool) { address spender = _msgSender(); _spendAllowance(from, spender, amount); _transfer(from, to, amount); return true; } /** * @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) { address owner = _msgSender(); _approve(owner, spender, _allowances[owner][spender] + addedValue); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { address owner = _msgSender(); uint256 currentAllowance = _allowances[owner][spender]; require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(owner, spender, currentAllowance - subtractedValue); } return true; } /** * @dev Moves `amount` of tokens from `sender` to `recipient`. * * This internal function is equivalent to {transfer}, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a {Transfer} event. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `from` must have a balance of at least `amount`. */ function _transfer( address from, address to, uint256 amount ) internal virtual { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(from, to, amount); uint256 fromBalance = _balances[from]; require(fromBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[from] = fromBalance - amount; } _balances[to] += amount; emit Transfer(from, to, amount); _afterTokenTransfer(from, to, amount); } /** @dev Creates `amount` tokens and assigns them to `account`, increasing * the total supply. * * Emits a {Transfer} event with `from` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. */ function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; _balances[account] += amount; emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } /** * @dev Destroys `amount` tokens from `account`, reducing the * total supply. * * Emits a {Transfer} event with `to` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. * - `account` must have at least `amount` tokens. */ function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; } _totalSupply -= amount; emit Transfer(account, address(0), amount); _afterTokenTransfer(account, address(0), amount); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens. * * This internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } /** * @dev Spend `amount` form the allowance of `owner` toward `spender`. * * Does not update the allowance amount in case of infinite allowance. * Revert if not enough allowance is available. * * Might emit an {Approval} event. */ function _spendAllowance( address owner, address spender, uint256 amount ) internal virtual { uint256 currentAllowance = allowance(owner, spender); if (currentAllowance != type(uint256).max) { require(currentAllowance >= amount, "ERC20: insufficient allowance"); unchecked { _approve(owner, spender, currentAllowance - amount); } } } /** * @dev Hook that is called before any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * will be transferred to `to`. * - when `from` is zero, `amount` tokens will be minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} /** * @dev Hook that is called after any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * has been transferred to `to`. * - when `from` is zero, `amount` tokens have been minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens have been burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } error FeeCapExceeded(); error AccountIsBlacklisted(); error MaxWalletExceeded(); contract NGN is ERC20, Ownable { address payable public marketingAddress; address payable public teamAddress; address public liquidityAddress; // Receives LP tokens mapping(address => bool) public _isExcludedFromFees; mapping(address => bool) public _isBlacklisted; mapping(address => bool) public isExcludedMaxWalletAmount; mapping(address => uint256) private _lastBuyTime; uint256 teamBuyFee = 100; uint256 liquidityBuyFee = 400; uint256 marketingBuyFee = 500; uint256 totalBuyFees = 1000; uint256 teamSellFee = 100; uint256 liquiditySellFee = 400; uint256 marketingSellFee = 500; uint256 totalSellFees = 1000; uint256 liquidityPumpAndDumpFee = 1500; uint256 marketingPumpAndDumpFee = 1500; uint256 totalPumpAndDumpFee = 3000; uint256 residualTokens; uint256 public liquidityTokens; uint256 public marketingTokens; uint256 public teamTokens; uint256 public swapTokensAtAmount = 400 * 10**18; uint256 public maxWallet = 777777 * 10**16; bool public swapEnabled = true; IUniswapV2Router02 public uniswapV2Router; address public uniswapV2Pair; bool inSwapAndLiquify; event UpdateMaxWallet(uint256 maxWallet); event setSwapTokensAtAmount(uint256 swapTokensAtAmount); event ExcludedMaxWalletAmount(address indexed account, bool isExcluded); event ExcludedFromFee(address account, bool _isExcludedFromFees); event UpdateTeamAddress(address teamAddress); event UpdateMarketingFeeAddress(address _marketingFeeAddress); event UpdateLiquidityAddress(address _liquidityAddress); event SwapAndLiquify(uint256 tokensAutoLiq, uint256 ethAutoLiq); event SwapAndLiquifyEnabledUpdated(bool enabled); constructor(address _marketingWallet, address _teamWallet, address _liquidityWallet) ERC20("Next Generation Network", "NGN") { IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); uniswapV2Router = _uniswapV2Router; uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()); _isBlacklisted[address(0)] = true; marketingAddress = payable(_marketingWallet); teamAddress = payable(_teamWallet); liquidityAddress = _liquidityWallet; _isExcludedFromFees[_msgSender()] = true; _isExcludedFromFees[address(this)] = true; isExcludedMaxWalletAmount[_msgSender()] = true; isExcludedMaxWalletAmount[address(this)] = true; isExcludedMaxWalletAmount[address(uniswapV2Pair)] = true; isExcludedMaxWalletAmount[address(_uniswapV2Router)] = true; _mint(msg.sender, 777777 * 10**18); } function _transfer( address from, address to, uint256 amount ) internal override { if(_isBlacklisted[from] || _isBlacklisted[to]) revert AccountIsBlacklisted(); if(amount == 0) { return; } if (from == uniswapV2Pair) _lastBuyTime[tx.origin] = block.timestamp; //enforce max wallet on non-sells if (to != uniswapV2Pair && !isExcludedMaxWalletAmount[to] && amount + balanceOf(to) > maxWallet) { revert MaxWalletExceeded(); } bool overMinimumTokenBalance = balanceOf(address(this)) >= swapTokensAtAmount; if ( swapEnabled && !inSwapAndLiquify && overMinimumTokenBalance && from != uniswapV2Pair && !_isExcludedFromFees[from] && !_isExcludedFromFees[to] ) { uint256 total = liquidityTokens + marketingTokens + teamTokens; uint256 liqToSwap = swapTokensAtAmount * liquidityTokens / total; uint256 marketingToSwap = swapTokensAtAmount * marketingTokens / total; uint256 teamToSwap = swapTokensAtAmount * teamTokens / total; processFees(liqToSwap, marketingToSwap, teamToSwap); liquidityTokens -= liqToSwap; marketingTokens -= marketingToSwap; teamTokens -= teamToSwap; } if (!inSwapAndLiquify && !_isExcludedFromFees[from] && !_isExcludedFromFees[to]) { uint256 fees; if (from != uniswapV2Pair && totalPumpAndDumpFee !=0 && _lastBuyTime[tx.origin] + 24 hours > block.timestamp) { fees = amount * totalPumpAndDumpFee / 10000; liquidityTokens += fees * liquidityPumpAndDumpFee / totalPumpAndDumpFee; marketingTokens += fees * marketingPumpAndDumpFee / totalPumpAndDumpFee; } else if (to == uniswapV2Pair && totalSellFees != 0) { //sell fees = amount * totalSellFees / 10000; teamTokens += fees * teamSellFee / totalSellFees; liquidityTokens += fees * liquiditySellFee / totalSellFees; marketingTokens += fees * marketingSellFee / totalSellFees; } else if (from == uniswapV2Pair && totalBuyFees != 0) { //buy fees = amount * totalBuyFees / 10000; teamTokens += fees * teamBuyFee / totalBuyFees; liquidityTokens += fees * liquidityBuyFee / totalBuyFees; marketingTokens += fees * marketingBuyFee / totalBuyFees; } if (fees > 0) { amount -= fees; super._transfer(from, address(this), fees); } } super._transfer(from, to, amount); } function processFees(uint256 _liquidityTokens, uint256 _marketingTokens, uint256 _teamTokens) private { inSwapAndLiquify = true; _liquidityTokens += residualTokens; residualTokens = 0; uint256 halfLiquidity = _liquidityTokens / 2; uint256 otherHalfLiquidity = _liquidityTokens - halfLiquidity; uint256 swappingTotal = halfLiquidity + _marketingTokens + _teamTokens; _approve(address(this), address(uniswapV2Router), swappingTotal + otherHalfLiquidity); swapTokensForETH(swappingTotal); uint256 ETHBalance = address(this).balance; uint256 ETHForMarketing = ETHBalance * _marketingTokens / swappingTotal; uint256 ETHForTeam = ETHBalance * _teamTokens / swappingTotal; uint256 ETHForLiquidity = ETHBalance - ETHForMarketing - ETHForTeam; uint256 liquidityTokenAmount = addLiquidity(otherHalfLiquidity, ETHForLiquidity); residualTokens += (otherHalfLiquidity - liquidityTokenAmount); emit SwapAndLiquify(otherHalfLiquidity, ETHForLiquidity); address(teamAddress).call{value: ETHForTeam}(""); address(marketingAddress).call{value: ETHForMarketing}(""); inSwapAndLiquify = false; } function swapTokensForETH(uint256 tokenAmount) private { address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private returns (uint256) { (uint256 amountA,,) = uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable liquidityAddress, block.timestamp ); return amountA; } function setBlacklist(address account, bool value) external onlyOwner { _isBlacklisted[account] = value; } function setBuyFees(uint256 team, uint256 liquidity, uint256 marketing) external onlyOwner { uint256 total = team + liquidity + marketing; if (total > 3000) revert FeeCapExceeded(); teamBuyFee = team; liquidityBuyFee = liquidity; marketingBuyFee = marketing; totalBuyFees = total; } function setSellFees(uint256 team, uint256 liquidity, uint256 marketing) external onlyOwner { uint256 total = team + liquidity + marketing; if (total > 3000) revert FeeCapExceeded(); teamSellFee = team; liquiditySellFee = liquidity; marketingSellFee = marketing; totalSellFees = total; } function setPumpAndDumpFees(uint256 liquidity, uint256 marketing) external onlyOwner { uint256 total = liquidity + marketing; if (total > 10000) revert FeeCapExceeded(); liquidityPumpAndDumpFee = liquidity; marketingPumpAndDumpFee = marketing; totalPumpAndDumpFee = total; } function updateMaxWallet(uint256 _maxWallet) external onlyOwner { maxWallet = _maxWallet; emit UpdateMaxWallet(_maxWallet); } function excludeFromMaxWallet(address account, bool value) public onlyOwner { isExcludedMaxWalletAmount[account] = value; emit ExcludedMaxWalletAmount(account, value); } function setExcludedFromFees(address account, bool value) external onlyOwner { _isExcludedFromFees[account] = value; emit ExcludedFromFee(account, value); } function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner { swapEnabled = _enabled; emit SwapAndLiquifyEnabledUpdated(_enabled); } function setSwapAtAmount(uint256 _swapTokensAtAmount) external onlyOwner { swapTokensAtAmount = _swapTokensAtAmount; emit setSwapTokensAtAmount(_swapTokensAtAmount); } function updateTeamAddress(address _teamAddress) external onlyOwner { teamAddress = payable(_teamAddress); emit UpdateTeamAddress(_teamAddress); } function updateMarketingFeeAddress(address _marketingFeeAddress) external onlyOwner { marketingAddress = payable(_marketingFeeAddress); emit UpdateMarketingFeeAddress(_marketingFeeAddress); } function updateLiquidityAddress(address _liquidityAddress) external onlyOwner { liquidityAddress = (_liquidityAddress); emit UpdateLiquidityAddress(_liquidityAddress); } receive() external payable {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_marketingWallet","type":"address"},{"internalType":"address","name":"_teamWallet","type":"address"},{"internalType":"address","name":"_liquidityWallet","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"AccountIsBlacklisted","type":"error"},{"inputs":[],"name":"FeeCapExceeded","type":"error"},{"inputs":[],"name":"MaxWalletExceeded","type":"error"},{"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":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"_isExcludedFromFees","type":"bool"}],"name":"ExcludedFromFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludedMaxWalletAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensAutoLiq","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethAutoLiq","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_liquidityAddress","type":"address"}],"name":"UpdateLiquidityAddress","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_marketingFeeAddress","type":"address"}],"name":"UpdateMarketingFeeAddress","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxWallet","type":"uint256"}],"name":"UpdateMaxWallet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"teamAddress","type":"address"}],"name":"UpdateTeamAddress","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setSwapTokensAtAmount","type":"event"},{"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":"_isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"excludeFromMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedMaxWalletAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","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":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"team","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"}],"name":"setBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"}],"name":"setPumpAndDumpFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"team","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"}],"name":"setSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_swapTokensAtAmount","type":"uint256"}],"name":"setSwapAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"teamAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"teamTokens","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":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"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":"_liquidityAddress","type":"address"}],"name":"updateLiquidityAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingFeeAddress","type":"address"}],"name":"updateMarketingFeeAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxWallet","type":"uint256"}],"name":"updateMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_teamAddress","type":"address"}],"name":"updateTeamAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526064600d55610190600e556101f4600f556103e860105560646011556101906012556101f46013556103e86014556105dc6015556105dc601655610bb86017556815af1d78b58c400000601c556901a5a23dde9bc1f10000601d556001601e60006101000a81548160ff0219169083151502179055503480156200008757600080fd5b5060405162004ca738038062004ca78339818101604052810190620000ad919062000a98565b6040518060400160405280601781526020017f4e6578742047656e65726174696f6e204e6574776f726b0000000000000000008152506040518060400160405280600381526020017f4e474e00000000000000000000000000000000000000000000000000000000008152508160039080519060200190620001319291906200097e565b5080600490805190602001906200014a9291906200097e565b5050506200016d620001616200072d60201b60201c565b6200073560201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601e60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200020e57600080fd5b505afa15801562000223573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000249919062000af4565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620002ac57600080fd5b505afa158015620002c1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002e7919062000af4565b6040518363ffffffff1660e01b81526004016200030692919062000b37565b602060405180830381600087803b1580156200032157600080fd5b505af115801562000336573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200035c919062000af4565b601f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600a60008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555083600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160096000620004cd6200072d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60006200058c6200072d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620007233369a4b3602af4d7c2240000620007fb60201b60201c565b5050505062000d10565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156200086e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008659062000bc5565b60405180910390fd5b62000882600083836200097460201b60201c565b806002600082825462000896919062000c20565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620008ed919062000c20565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000954919062000c8e565b60405180910390a362000970600083836200097960201b60201c565b5050565b505050565b505050565b8280546200098c9062000cda565b90600052602060002090601f016020900481019282620009b05760008555620009fc565b82601f10620009cb57805160ff1916838001178555620009fc565b82800160010185558215620009fc579182015b82811115620009fb578251825591602001919060010190620009de565b5b50905062000a0b919062000a0f565b5090565b5b8082111562000a2a57600081600090555060010162000a10565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000a608262000a33565b9050919050565b62000a728162000a53565b811462000a7e57600080fd5b50565b60008151905062000a928162000a67565b92915050565b60008060006060848603121562000ab45762000ab362000a2e565b5b600062000ac48682870162000a81565b935050602062000ad78682870162000a81565b925050604062000aea8682870162000a81565b9150509250925092565b60006020828403121562000b0d5762000b0c62000a2e565b5b600062000b1d8482850162000a81565b91505092915050565b62000b318162000a53565b82525050565b600060408201905062000b4e600083018562000b26565b62000b5d602083018462000b26565b9392505050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000bad601f8362000b64565b915062000bba8262000b75565b602082019050919050565b6000602082019050818103600083015262000be08162000b9e565b9050919050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000c2d8262000be7565b915062000c3a8362000be7565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000c725762000c7162000bf1565b5b828201905092915050565b62000c888162000be7565b82525050565b600060208201905062000ca5600083018462000c7d565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000cf357607f821691505b6020821081141562000d0a5762000d0962000cab565b5b50919050565b613f878062000d206000396000f3fe60806040526004361061023f5760003560e01c806369d824531161012e578063b680fefb116100ab578063e052e73e1161006f578063e052e73e146108a4578063e0bf7fd1146108cd578063e2f456051461090a578063f2fde38b14610935578063f8b45b051461095e57610246565b8063b680fefb146107c1578063c3e3c7bc146107ea578063c49b9a8014610815578063d2fcc0011461083e578063dd62ed3e1461086757610246565b80638da5cb5b116100f25780638da5cb5b146106c657806395d89b41146106f1578063a457c2d71461071c578063a5ece94114610759578063a9059cbb1461078457610246565b806369d82453146105df5780636ddd17131461061c57806370a0823114610647578063715018a6146106845780638b27306d1461069b57610246565b80631cdd3be3116101bc57806349bd5a5e1161018057806349bd5a5e1461050e5780634b8ce60214610539578063590ffdce146105645780636402511e1461058d578063660d0af4146105b657610246565b80631cdd3be31461040157806323b872dd1461043e578063313ce5671461047b5780633221c93f146104a657806339509351146104d157610246565b8063153b0d1e11610203578063153b0d1e1461032e5780631694505e1461035757806318160ddd146103825780631c499ab0146103ad5780631c75f085146103d657610246565b806306fdde031461024b578063095ea7b3146102765780630d075d9c146102b35780630f683e90146102dc57806314eb76ac1461030557610246565b3661024657005b600080fd5b34801561025757600080fd5b50610260610989565b60405161026d91906130c8565b60405180910390f35b34801561028257600080fd5b5061029d60048036038101906102989190613183565b610a1b565b6040516102aa91906131de565b60405180910390f35b3480156102bf57600080fd5b506102da60048036038101906102d591906131f9565b610a3e565b005b3480156102e857600080fd5b5061030360048036038101906102fe91906131f9565b610b33565b005b34801561031157600080fd5b5061032c6004803603810190610327919061324c565b610c28565b005b34801561033a57600080fd5b50610355600480360381019061035091906132a5565b610d1f565b005b34801561036357600080fd5b5061036c610df6565b6040516103799190613344565b60405180910390f35b34801561038e57600080fd5b50610397610e1c565b6040516103a4919061336e565b60405180910390f35b3480156103b957600080fd5b506103d460048036038101906103cf9190613389565b610e26565b005b3480156103e257600080fd5b506103eb610ee3565b6040516103f891906133d7565b60405180910390f35b34801561040d57600080fd5b506104286004803603810190610423919061324c565b610f09565b60405161043591906131de565b60405180910390f35b34801561044a57600080fd5b50610465600480360381019061046091906133f2565b610f29565b60405161047291906131de565b60405180910390f35b34801561048757600080fd5b50610490610f58565b60405161049d9190613461565b60405180910390f35b3480156104b257600080fd5b506104bb610f61565b6040516104c8919061348b565b60405180910390f35b3480156104dd57600080fd5b506104f860048036038101906104f39190613183565b610f87565b60405161050591906131de565b60405180910390f35b34801561051a57600080fd5b50610523611031565b604051610530919061348b565b60405180910390f35b34801561054557600080fd5b5061054e611057565b60405161055b919061336e565b60405180910390f35b34801561057057600080fd5b5061058b600480360381019061058691906132a5565b61105d565b005b34801561059957600080fd5b506105b460048036038101906105af9190613389565b61116d565b005b3480156105c257600080fd5b506105dd60048036038101906105d8919061324c565b61122a565b005b3480156105eb57600080fd5b506106066004803603810190610601919061324c565b611321565b60405161061391906131de565b60405180910390f35b34801561062857600080fd5b50610631611341565b60405161063e91906131de565b60405180910390f35b34801561065357600080fd5b5061066e6004803603810190610669919061324c565b611354565b60405161067b919061336e565b60405180910390f35b34801561069057600080fd5b5061069961139c565b005b3480156106a757600080fd5b506106b0611424565b6040516106bd919061336e565b60405180910390f35b3480156106d257600080fd5b506106db61142a565b6040516106e8919061348b565b60405180910390f35b3480156106fd57600080fd5b50610706611454565b60405161071391906130c8565b60405180910390f35b34801561072857600080fd5b50610743600480360381019061073e9190613183565b6114e6565b60405161075091906131de565b60405180910390f35b34801561076557600080fd5b5061076e6115d0565b60405161077b91906133d7565b60405180910390f35b34801561079057600080fd5b506107ab60048036038101906107a69190613183565b6115f6565b6040516107b891906131de565b60405180910390f35b3480156107cd57600080fd5b506107e860048036038101906107e3919061324c565b611619565b005b3480156107f657600080fd5b506107ff611710565b60405161080c919061336e565b60405180910390f35b34801561082157600080fd5b5061083c600480360381019061083791906134a6565b611716565b005b34801561084a57600080fd5b50610865600480360381019061086091906132a5565b6117e6565b005b34801561087357600080fd5b5061088e600480360381019061088991906134d3565b61190b565b60405161089b919061336e565b60405180910390f35b3480156108b057600080fd5b506108cb60048036038101906108c69190613513565b611992565b005b3480156108d957600080fd5b506108f460048036038101906108ef919061324c565b611a74565b60405161090191906131de565b60405180910390f35b34801561091657600080fd5b5061091f611a94565b60405161092c919061336e565b60405180910390f35b34801561094157600080fd5b5061095c6004803603810190610957919061324c565b611a9a565b005b34801561096a57600080fd5b50610973611b92565b604051610980919061336e565b60405180910390f35b60606003805461099890613582565b80601f01602080910402602001604051908101604052809291908181526020018280546109c490613582565b8015610a115780601f106109e657610100808354040283529160200191610a11565b820191906000526020600020905b8154815290600101906020018083116109f457829003601f168201915b5050505050905090565b600080610a26611b98565b9050610a33818585611ba0565b600191505092915050565b610a46611b98565b73ffffffffffffffffffffffffffffffffffffffff16610a6461142a565b73ffffffffffffffffffffffffffffffffffffffff1614610aba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab190613600565b60405180910390fd5b6000818385610ac9919061364f565b610ad3919061364f565b9050610bb8811115610b11576040517f5a20e14c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b83600d8190555082600e8190555081600f819055508060108190555050505050565b610b3b611b98565b73ffffffffffffffffffffffffffffffffffffffff16610b5961142a565b73ffffffffffffffffffffffffffffffffffffffff1614610baf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba690613600565b60405180910390fd5b6000818385610bbe919061364f565b610bc8919061364f565b9050610bb8811115610c06576040517f5a20e14c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8360118190555082601281905550816013819055508060148190555050505050565b610c30611b98565b73ffffffffffffffffffffffffffffffffffffffff16610c4e61142a565b73ffffffffffffffffffffffffffffffffffffffff1614610ca4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9b90613600565b60405180910390fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fcfa776700abcd3e6f5c7efaf8b4bf9961d5b4c50e273e481a4c893ccaace896881604051610d14919061348b565b60405180910390a150565b610d27611b98565b73ffffffffffffffffffffffffffffffffffffffff16610d4561142a565b73ffffffffffffffffffffffffffffffffffffffff1614610d9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9290613600565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601e60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b610e2e611b98565b73ffffffffffffffffffffffffffffffffffffffff16610e4c61142a565b73ffffffffffffffffffffffffffffffffffffffff1614610ea2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9990613600565b60405180910390fd5b80601d819055507fdd4ef051c4c49233ec73abfc2ee1514725d2a818fbcde46ee5d34a49034922f981604051610ed8919061336e565b60405180910390a150565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a6020528060005260406000206000915054906101000a900460ff1681565b600080610f34611b98565b9050610f41858285611d6b565b610f4c858585611df7565b60019150509392505050565b60006012905090565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080610f92611b98565b9050611026818585600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611021919061364f565b611ba0565b600191505092915050565b601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60195481565b611065611b98565b73ffffffffffffffffffffffffffffffffffffffff1661108361142a565b73ffffffffffffffffffffffffffffffffffffffff16146110d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d090613600565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f2d43abd87b27cee7b0aa8c6f7e0b4a3247b683262a83cbc2318b0df398a49aa982826040516111619291906136a5565b60405180910390a15050565b611175611b98565b73ffffffffffffffffffffffffffffffffffffffff1661119361142a565b73ffffffffffffffffffffffffffffffffffffffff16146111e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e090613600565b60405180910390fd5b80601c819055507fafa4f3b222341211570f3fd33cf37303b12079b1c95c5833cdced0dd1f7256418160405161121f919061336e565b60405180910390a150565b611232611b98565b73ffffffffffffffffffffffffffffffffffffffff1661125061142a565b73ffffffffffffffffffffffffffffffffffffffff16146112a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129d90613600565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f443f3ff05802b8fd07582e749eed99d2c5e474aab2abab919aeaa213c69290b781604051611316919061348b565b60405180910390a150565b600b6020528060005260406000206000915054906101000a900460ff1681565b601e60009054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6113a4611b98565b73ffffffffffffffffffffffffffffffffffffffff166113c261142a565b73ffffffffffffffffffffffffffffffffffffffff1614611418576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140f90613600565b60405180910390fd5b611422600061271e565b565b601a5481565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461146390613582565b80601f016020809104026020016040519081016040528092919081815260200182805461148f90613582565b80156114dc5780601f106114b1576101008083540402835291602001916114dc565b820191906000526020600020905b8154815290600101906020018083116114bf57829003601f168201915b5050505050905090565b6000806114f1611b98565b90506000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050838110156115b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ae90613740565b60405180910390fd5b6115c48286868403611ba0565b60019250505092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080611601611b98565b905061160e818585611df7565b600191505092915050565b611621611b98565b73ffffffffffffffffffffffffffffffffffffffff1661163f61142a565b73ffffffffffffffffffffffffffffffffffffffff1614611695576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168c90613600565b60405180910390fd5b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f3a927e1b703df90363228745fb91fda65b154db03c6c055e64bfdf46d1986bef81604051611705919061348b565b60405180910390a150565b601b5481565b61171e611b98565b73ffffffffffffffffffffffffffffffffffffffff1661173c61142a565b73ffffffffffffffffffffffffffffffffffffffff1614611792576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178990613600565b60405180910390fd5b80601e60006101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516117db91906131de565b60405180910390a150565b6117ee611b98565b73ffffffffffffffffffffffffffffffffffffffff1661180c61142a565b73ffffffffffffffffffffffffffffffffffffffff1614611862576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185990613600565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f5956094251965a24e12663de1458c0d93ae46d0299678c87fb094b82fe3f2687826040516118ff91906131de565b60405180910390a25050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61199a611b98565b73ffffffffffffffffffffffffffffffffffffffff166119b861142a565b73ffffffffffffffffffffffffffffffffffffffff1614611a0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0590613600565b60405180910390fd5b60008183611a1c919061364f565b9050612710811115611a5a576040517f5a20e14c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826015819055508160168190555080601781905550505050565b60096020528060005260406000206000915054906101000a900460ff1681565b601c5481565b611aa2611b98565b73ffffffffffffffffffffffffffffffffffffffff16611ac061142a565b73ffffffffffffffffffffffffffffffffffffffff1614611b16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0d90613600565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611b86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7d906137d2565b60405180910390fd5b611b8f8161271e565b50565b601d5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611c10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0790613864565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611c80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c77906138f6565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611d5e919061336e565b60405180910390a3505050565b6000611d77848461190b565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611df15781811015611de3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dda90613962565b60405180910390fd5b611df08484848403611ba0565b5b50505050565b600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611e985750600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611ecf576040517fab73372a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000811415611edd57612719565b601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611f785742600c60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156120205750600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156120405750601d5461203383611354565b8261203e919061364f565b115b15612077576040517f2ce93b5900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000601c5461208530611354565b10159050601e60009054906101000a900460ff1680156120b25750601f60149054906101000a900460ff16155b80156120bb5750805b80156121155750601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b801561216b5750600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156121c15750600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561229f576000601b54601a546019546121db919061364f565b6121e5919061364f565b9050600081601954601c546121fa9190613982565b6122049190613a0b565b9050600082601a54601c546122199190613982565b6122239190613a0b565b9050600083601b54601c546122389190613982565b6122429190613a0b565b905061224f8383836127e4565b82601960008282546122619190613a3c565b9250508190555081601a600082825461227a9190613a3c565b9250508190555080601b60008282546122939190613a3c565b92505081905550505050505b601f60149054906101000a900460ff161580156123065750600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561235c5750600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561270c576000601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141580156123c45750600060175414155b801561241c57504262015180600c60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461241a919061364f565b115b156124a957612710601754846124329190613982565b61243c9190613a0b565b90506017546015548261244f9190613982565b6124599190613a0b565b6019600082825461246a919061364f565b92505081905550601754601654826124829190613982565b61248c9190613a0b565b601a600082825461249d919061364f565b925050819055506126e7565b601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156125095750600060145414155b156125c9576127106014548461251f9190613982565b6125299190613a0b565b90506014546011548261253c9190613982565b6125469190613a0b565b601b6000828254612557919061364f565b925050819055506014546012548261256f9190613982565b6125799190613a0b565b6019600082825461258a919061364f565b92505081905550601454601354826125a29190613982565b6125ac9190613a0b565b601a60008282546125bd919061364f565b925050819055506126e6565b601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480156126295750600060105414155b156126e5576127106010548461263f9190613982565b6126499190613a0b565b9050601054600d548261265c9190613982565b6126669190613a0b565b601b6000828254612677919061364f565b92505081905550601054600e548261268f9190613982565b6126999190613a0b565b601960008282546126aa919061364f565b92505081905550601054600f54826126c29190613982565b6126cc9190613a0b565b601a60008282546126dd919061364f565b925050819055505b5b5b600081111561270a5780836126fc9190613a3c565b9250612709853083612a93565b5b505b612717848484612a93565b505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6001601f60146101000a81548160ff0219169083151502179055506018548361280d919061364f565b9250600060188190555060006002846128269190613a0b565b9050600081856128369190613a3c565b90506000838584612847919061364f565b612851919061364f565b905061288b30601e60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff168484612886919061364f565b611ba0565b61289481612d14565b600047905060008287836128a89190613982565b6128b29190613a0b565b905060008387846128c39190613982565b6128cd9190613a0b565b905060008183856128de9190613a3c565b6128e89190613a3c565b905060006128f68783612f39565b905080876129049190613a3c565b60186000828254612915919061364f565b925050819055507f28fc98272ce761178794ad6768050fea1648e07f1e2ffe15afd3a290f8381486878360405161294d929190613a70565b60405180910390a1600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168360405161299b90613aca565b60006040518083038185875af1925050503d80600081146129d8576040519150601f19603f3d011682016040523d82523d6000602084013e6129dd565b606091505b505050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1684604051612a2690613aca565b60006040518083038185875af1925050503d8060008114612a63576040519150601f19603f3d011682016040523d82523d6000602084013e612a68565b606091505b5050506000601f60146101000a81548160ff0219169083151502179055505050505050505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612b03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612afa90613b51565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612b73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b6a90613be3565b60405180910390fd5b612b7e838383613025565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612c04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bfb90613c75565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612c97919061364f565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612cfb919061336e565b60405180910390a3612d0e84848461302a565b50505050565b6000600267ffffffffffffffff811115612d3157612d30613c95565b5b604051908082528060200260200182016040528015612d5f5781602001602082028036833780820191505090505b5090503081600081518110612d7757612d76613cc4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601e60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015612e1957600080fd5b505afa158015612e2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e519190613d08565b81600181518110612e6557612e64613cc4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601e60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612f03959493929190613e2e565b600060405180830381600087803b158015612f1d57600080fd5b505af1158015612f31573d6000803e3d6000fd5b505050505050565b600080601e60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719843087600080600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401612fc596959493929190613e88565b6060604051808303818588803b158015612fde57600080fd5b505af1158015612ff2573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906130179190613efe565b505090508091505092915050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561306957808201518184015260208101905061304e565b83811115613078576000848401525b50505050565b6000601f19601f8301169050919050565b600061309a8261302f565b6130a4818561303a565b93506130b481856020860161304b565b6130bd8161307e565b840191505092915050565b600060208201905081810360008301526130e2818461308f565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061311a826130ef565b9050919050565b61312a8161310f565b811461313557600080fd5b50565b60008135905061314781613121565b92915050565b6000819050919050565b6131608161314d565b811461316b57600080fd5b50565b60008135905061317d81613157565b92915050565b6000806040838503121561319a576131996130ea565b5b60006131a885828601613138565b92505060206131b98582860161316e565b9150509250929050565b60008115159050919050565b6131d8816131c3565b82525050565b60006020820190506131f360008301846131cf565b92915050565b600080600060608486031215613212576132116130ea565b5b60006132208682870161316e565b93505060206132318682870161316e565b92505060406132428682870161316e565b9150509250925092565b600060208284031215613262576132616130ea565b5b600061327084828501613138565b91505092915050565b613282816131c3565b811461328d57600080fd5b50565b60008135905061329f81613279565b92915050565b600080604083850312156132bc576132bb6130ea565b5b60006132ca85828601613138565b92505060206132db85828601613290565b9150509250929050565b6000819050919050565b600061330a613305613300846130ef565b6132e5565b6130ef565b9050919050565b600061331c826132ef565b9050919050565b600061332e82613311565b9050919050565b61333e81613323565b82525050565b60006020820190506133596000830184613335565b92915050565b6133688161314d565b82525050565b6000602082019050613383600083018461335f565b92915050565b60006020828403121561339f5761339e6130ea565b5b60006133ad8482850161316e565b91505092915050565b60006133c1826130ef565b9050919050565b6133d1816133b6565b82525050565b60006020820190506133ec60008301846133c8565b92915050565b60008060006060848603121561340b5761340a6130ea565b5b600061341986828701613138565b935050602061342a86828701613138565b925050604061343b8682870161316e565b9150509250925092565b600060ff82169050919050565b61345b81613445565b82525050565b60006020820190506134766000830184613452565b92915050565b6134858161310f565b82525050565b60006020820190506134a0600083018461347c565b92915050565b6000602082840312156134bc576134bb6130ea565b5b60006134ca84828501613290565b91505092915050565b600080604083850312156134ea576134e96130ea565b5b60006134f885828601613138565b925050602061350985828601613138565b9150509250929050565b6000806040838503121561352a576135296130ea565b5b60006135388582860161316e565b92505060206135498582860161316e565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061359a57607f821691505b602082108114156135ae576135ad613553565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006135ea60208361303a565b91506135f5826135b4565b602082019050919050565b60006020820190508181036000830152613619816135dd565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061365a8261314d565b91506136658361314d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561369a57613699613620565b5b828201905092915050565b60006040820190506136ba600083018561347c565b6136c760208301846131cf565b9392505050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b600061372a60258361303a565b9150613735826136ce565b604082019050919050565b600060208201905081810360008301526137598161371d565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006137bc60268361303a565b91506137c782613760565b604082019050919050565b600060208201905081810360008301526137eb816137af565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061384e60248361303a565b9150613859826137f2565b604082019050919050565b6000602082019050818103600083015261387d81613841565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006138e060228361303a565b91506138eb82613884565b604082019050919050565b6000602082019050818103600083015261390f816138d3565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b600061394c601d8361303a565b915061395782613916565b602082019050919050565b6000602082019050818103600083015261397b8161393f565b9050919050565b600061398d8261314d565b91506139988361314d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156139d1576139d0613620565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613a168261314d565b9150613a218361314d565b925082613a3157613a306139dc565b5b828204905092915050565b6000613a478261314d565b9150613a528361314d565b925082821015613a6557613a64613620565b5b828203905092915050565b6000604082019050613a85600083018561335f565b613a92602083018461335f565b9392505050565b600081905092915050565b50565b6000613ab4600083613a99565b9150613abf82613aa4565b600082019050919050565b6000613ad582613aa7565b9150819050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613b3b60258361303a565b9150613b4682613adf565b604082019050919050565b60006020820190508181036000830152613b6a81613b2e565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613bcd60238361303a565b9150613bd882613b71565b604082019050919050565b60006020820190508181036000830152613bfc81613bc0565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000613c5f60268361303a565b9150613c6a82613c03565b604082019050919050565b60006020820190508181036000830152613c8e81613c52565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050613d0281613121565b92915050565b600060208284031215613d1e57613d1d6130ea565b5b6000613d2c84828501613cf3565b91505092915050565b6000819050919050565b6000613d5a613d55613d5084613d35565b6132e5565b61314d565b9050919050565b613d6a81613d3f565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613da58161310f565b82525050565b6000613db78383613d9c565b60208301905092915050565b6000602082019050919050565b6000613ddb82613d70565b613de58185613d7b565b9350613df083613d8c565b8060005b83811015613e21578151613e088882613dab565b9750613e1383613dc3565b925050600181019050613df4565b5085935050505092915050565b600060a082019050613e43600083018861335f565b613e506020830187613d61565b8181036040830152613e628186613dd0565b9050613e71606083018561347c565b613e7e608083018461335f565b9695505050505050565b600060c082019050613e9d600083018961347c565b613eaa602083018861335f565b613eb76040830187613d61565b613ec46060830186613d61565b613ed1608083018561347c565b613ede60a083018461335f565b979650505050505050565b600081519050613ef881613157565b92915050565b600080600060608486031215613f1757613f166130ea565b5b6000613f2586828701613ee9565b9350506020613f3686828701613ee9565b9250506040613f4786828701613ee9565b915050925092509256fea26469706673582212205813898635073fdc0eeb5b47f375631f516bf8a83191cd6001c43b6f255b94d164736f6c63430008090033000000000000000000000000b729bc51a9d0eeb247e40e11608dff7b36e053400000000000000000000000004b31bf6020c25289abd05dcb18b30c72f9bf7923000000000000000000000000d02b15053d07b392b4d7d91931ce0c598cad5d65
Deployed Bytecode
0x60806040526004361061023f5760003560e01c806369d824531161012e578063b680fefb116100ab578063e052e73e1161006f578063e052e73e146108a4578063e0bf7fd1146108cd578063e2f456051461090a578063f2fde38b14610935578063f8b45b051461095e57610246565b8063b680fefb146107c1578063c3e3c7bc146107ea578063c49b9a8014610815578063d2fcc0011461083e578063dd62ed3e1461086757610246565b80638da5cb5b116100f25780638da5cb5b146106c657806395d89b41146106f1578063a457c2d71461071c578063a5ece94114610759578063a9059cbb1461078457610246565b806369d82453146105df5780636ddd17131461061c57806370a0823114610647578063715018a6146106845780638b27306d1461069b57610246565b80631cdd3be3116101bc57806349bd5a5e1161018057806349bd5a5e1461050e5780634b8ce60214610539578063590ffdce146105645780636402511e1461058d578063660d0af4146105b657610246565b80631cdd3be31461040157806323b872dd1461043e578063313ce5671461047b5780633221c93f146104a657806339509351146104d157610246565b8063153b0d1e11610203578063153b0d1e1461032e5780631694505e1461035757806318160ddd146103825780631c499ab0146103ad5780631c75f085146103d657610246565b806306fdde031461024b578063095ea7b3146102765780630d075d9c146102b35780630f683e90146102dc57806314eb76ac1461030557610246565b3661024657005b600080fd5b34801561025757600080fd5b50610260610989565b60405161026d91906130c8565b60405180910390f35b34801561028257600080fd5b5061029d60048036038101906102989190613183565b610a1b565b6040516102aa91906131de565b60405180910390f35b3480156102bf57600080fd5b506102da60048036038101906102d591906131f9565b610a3e565b005b3480156102e857600080fd5b5061030360048036038101906102fe91906131f9565b610b33565b005b34801561031157600080fd5b5061032c6004803603810190610327919061324c565b610c28565b005b34801561033a57600080fd5b50610355600480360381019061035091906132a5565b610d1f565b005b34801561036357600080fd5b5061036c610df6565b6040516103799190613344565b60405180910390f35b34801561038e57600080fd5b50610397610e1c565b6040516103a4919061336e565b60405180910390f35b3480156103b957600080fd5b506103d460048036038101906103cf9190613389565b610e26565b005b3480156103e257600080fd5b506103eb610ee3565b6040516103f891906133d7565b60405180910390f35b34801561040d57600080fd5b506104286004803603810190610423919061324c565b610f09565b60405161043591906131de565b60405180910390f35b34801561044a57600080fd5b50610465600480360381019061046091906133f2565b610f29565b60405161047291906131de565b60405180910390f35b34801561048757600080fd5b50610490610f58565b60405161049d9190613461565b60405180910390f35b3480156104b257600080fd5b506104bb610f61565b6040516104c8919061348b565b60405180910390f35b3480156104dd57600080fd5b506104f860048036038101906104f39190613183565b610f87565b60405161050591906131de565b60405180910390f35b34801561051a57600080fd5b50610523611031565b604051610530919061348b565b60405180910390f35b34801561054557600080fd5b5061054e611057565b60405161055b919061336e565b60405180910390f35b34801561057057600080fd5b5061058b600480360381019061058691906132a5565b61105d565b005b34801561059957600080fd5b506105b460048036038101906105af9190613389565b61116d565b005b3480156105c257600080fd5b506105dd60048036038101906105d8919061324c565b61122a565b005b3480156105eb57600080fd5b506106066004803603810190610601919061324c565b611321565b60405161061391906131de565b60405180910390f35b34801561062857600080fd5b50610631611341565b60405161063e91906131de565b60405180910390f35b34801561065357600080fd5b5061066e6004803603810190610669919061324c565b611354565b60405161067b919061336e565b60405180910390f35b34801561069057600080fd5b5061069961139c565b005b3480156106a757600080fd5b506106b0611424565b6040516106bd919061336e565b60405180910390f35b3480156106d257600080fd5b506106db61142a565b6040516106e8919061348b565b60405180910390f35b3480156106fd57600080fd5b50610706611454565b60405161071391906130c8565b60405180910390f35b34801561072857600080fd5b50610743600480360381019061073e9190613183565b6114e6565b60405161075091906131de565b60405180910390f35b34801561076557600080fd5b5061076e6115d0565b60405161077b91906133d7565b60405180910390f35b34801561079057600080fd5b506107ab60048036038101906107a69190613183565b6115f6565b6040516107b891906131de565b60405180910390f35b3480156107cd57600080fd5b506107e860048036038101906107e3919061324c565b611619565b005b3480156107f657600080fd5b506107ff611710565b60405161080c919061336e565b60405180910390f35b34801561082157600080fd5b5061083c600480360381019061083791906134a6565b611716565b005b34801561084a57600080fd5b50610865600480360381019061086091906132a5565b6117e6565b005b34801561087357600080fd5b5061088e600480360381019061088991906134d3565b61190b565b60405161089b919061336e565b60405180910390f35b3480156108b057600080fd5b506108cb60048036038101906108c69190613513565b611992565b005b3480156108d957600080fd5b506108f460048036038101906108ef919061324c565b611a74565b60405161090191906131de565b60405180910390f35b34801561091657600080fd5b5061091f611a94565b60405161092c919061336e565b60405180910390f35b34801561094157600080fd5b5061095c6004803603810190610957919061324c565b611a9a565b005b34801561096a57600080fd5b50610973611b92565b604051610980919061336e565b60405180910390f35b60606003805461099890613582565b80601f01602080910402602001604051908101604052809291908181526020018280546109c490613582565b8015610a115780601f106109e657610100808354040283529160200191610a11565b820191906000526020600020905b8154815290600101906020018083116109f457829003601f168201915b5050505050905090565b600080610a26611b98565b9050610a33818585611ba0565b600191505092915050565b610a46611b98565b73ffffffffffffffffffffffffffffffffffffffff16610a6461142a565b73ffffffffffffffffffffffffffffffffffffffff1614610aba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab190613600565b60405180910390fd5b6000818385610ac9919061364f565b610ad3919061364f565b9050610bb8811115610b11576040517f5a20e14c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b83600d8190555082600e8190555081600f819055508060108190555050505050565b610b3b611b98565b73ffffffffffffffffffffffffffffffffffffffff16610b5961142a565b73ffffffffffffffffffffffffffffffffffffffff1614610baf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba690613600565b60405180910390fd5b6000818385610bbe919061364f565b610bc8919061364f565b9050610bb8811115610c06576040517f5a20e14c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8360118190555082601281905550816013819055508060148190555050505050565b610c30611b98565b73ffffffffffffffffffffffffffffffffffffffff16610c4e61142a565b73ffffffffffffffffffffffffffffffffffffffff1614610ca4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9b90613600565b60405180910390fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fcfa776700abcd3e6f5c7efaf8b4bf9961d5b4c50e273e481a4c893ccaace896881604051610d14919061348b565b60405180910390a150565b610d27611b98565b73ffffffffffffffffffffffffffffffffffffffff16610d4561142a565b73ffffffffffffffffffffffffffffffffffffffff1614610d9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9290613600565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601e60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b610e2e611b98565b73ffffffffffffffffffffffffffffffffffffffff16610e4c61142a565b73ffffffffffffffffffffffffffffffffffffffff1614610ea2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9990613600565b60405180910390fd5b80601d819055507fdd4ef051c4c49233ec73abfc2ee1514725d2a818fbcde46ee5d34a49034922f981604051610ed8919061336e565b60405180910390a150565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a6020528060005260406000206000915054906101000a900460ff1681565b600080610f34611b98565b9050610f41858285611d6b565b610f4c858585611df7565b60019150509392505050565b60006012905090565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080610f92611b98565b9050611026818585600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611021919061364f565b611ba0565b600191505092915050565b601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60195481565b611065611b98565b73ffffffffffffffffffffffffffffffffffffffff1661108361142a565b73ffffffffffffffffffffffffffffffffffffffff16146110d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d090613600565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f2d43abd87b27cee7b0aa8c6f7e0b4a3247b683262a83cbc2318b0df398a49aa982826040516111619291906136a5565b60405180910390a15050565b611175611b98565b73ffffffffffffffffffffffffffffffffffffffff1661119361142a565b73ffffffffffffffffffffffffffffffffffffffff16146111e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e090613600565b60405180910390fd5b80601c819055507fafa4f3b222341211570f3fd33cf37303b12079b1c95c5833cdced0dd1f7256418160405161121f919061336e565b60405180910390a150565b611232611b98565b73ffffffffffffffffffffffffffffffffffffffff1661125061142a565b73ffffffffffffffffffffffffffffffffffffffff16146112a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129d90613600565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f443f3ff05802b8fd07582e749eed99d2c5e474aab2abab919aeaa213c69290b781604051611316919061348b565b60405180910390a150565b600b6020528060005260406000206000915054906101000a900460ff1681565b601e60009054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6113a4611b98565b73ffffffffffffffffffffffffffffffffffffffff166113c261142a565b73ffffffffffffffffffffffffffffffffffffffff1614611418576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140f90613600565b60405180910390fd5b611422600061271e565b565b601a5481565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461146390613582565b80601f016020809104026020016040519081016040528092919081815260200182805461148f90613582565b80156114dc5780601f106114b1576101008083540402835291602001916114dc565b820191906000526020600020905b8154815290600101906020018083116114bf57829003601f168201915b5050505050905090565b6000806114f1611b98565b90506000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050838110156115b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ae90613740565b60405180910390fd5b6115c48286868403611ba0565b60019250505092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080611601611b98565b905061160e818585611df7565b600191505092915050565b611621611b98565b73ffffffffffffffffffffffffffffffffffffffff1661163f61142a565b73ffffffffffffffffffffffffffffffffffffffff1614611695576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168c90613600565b60405180910390fd5b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f3a927e1b703df90363228745fb91fda65b154db03c6c055e64bfdf46d1986bef81604051611705919061348b565b60405180910390a150565b601b5481565b61171e611b98565b73ffffffffffffffffffffffffffffffffffffffff1661173c61142a565b73ffffffffffffffffffffffffffffffffffffffff1614611792576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178990613600565b60405180910390fd5b80601e60006101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516117db91906131de565b60405180910390a150565b6117ee611b98565b73ffffffffffffffffffffffffffffffffffffffff1661180c61142a565b73ffffffffffffffffffffffffffffffffffffffff1614611862576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185990613600565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f5956094251965a24e12663de1458c0d93ae46d0299678c87fb094b82fe3f2687826040516118ff91906131de565b60405180910390a25050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61199a611b98565b73ffffffffffffffffffffffffffffffffffffffff166119b861142a565b73ffffffffffffffffffffffffffffffffffffffff1614611a0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0590613600565b60405180910390fd5b60008183611a1c919061364f565b9050612710811115611a5a576040517f5a20e14c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826015819055508160168190555080601781905550505050565b60096020528060005260406000206000915054906101000a900460ff1681565b601c5481565b611aa2611b98565b73ffffffffffffffffffffffffffffffffffffffff16611ac061142a565b73ffffffffffffffffffffffffffffffffffffffff1614611b16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0d90613600565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611b86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7d906137d2565b60405180910390fd5b611b8f8161271e565b50565b601d5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611c10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0790613864565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611c80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c77906138f6565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611d5e919061336e565b60405180910390a3505050565b6000611d77848461190b565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611df15781811015611de3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dda90613962565b60405180910390fd5b611df08484848403611ba0565b5b50505050565b600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611e985750600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611ecf576040517fab73372a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000811415611edd57612719565b601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611f785742600c60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156120205750600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156120405750601d5461203383611354565b8261203e919061364f565b115b15612077576040517f2ce93b5900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000601c5461208530611354565b10159050601e60009054906101000a900460ff1680156120b25750601f60149054906101000a900460ff16155b80156120bb5750805b80156121155750601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b801561216b5750600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156121c15750600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561229f576000601b54601a546019546121db919061364f565b6121e5919061364f565b9050600081601954601c546121fa9190613982565b6122049190613a0b565b9050600082601a54601c546122199190613982565b6122239190613a0b565b9050600083601b54601c546122389190613982565b6122429190613a0b565b905061224f8383836127e4565b82601960008282546122619190613a3c565b9250508190555081601a600082825461227a9190613a3c565b9250508190555080601b60008282546122939190613a3c565b92505081905550505050505b601f60149054906101000a900460ff161580156123065750600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561235c5750600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561270c576000601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141580156123c45750600060175414155b801561241c57504262015180600c60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461241a919061364f565b115b156124a957612710601754846124329190613982565b61243c9190613a0b565b90506017546015548261244f9190613982565b6124599190613a0b565b6019600082825461246a919061364f565b92505081905550601754601654826124829190613982565b61248c9190613a0b565b601a600082825461249d919061364f565b925050819055506126e7565b601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156125095750600060145414155b156125c9576127106014548461251f9190613982565b6125299190613a0b565b90506014546011548261253c9190613982565b6125469190613a0b565b601b6000828254612557919061364f565b925050819055506014546012548261256f9190613982565b6125799190613a0b565b6019600082825461258a919061364f565b92505081905550601454601354826125a29190613982565b6125ac9190613a0b565b601a60008282546125bd919061364f565b925050819055506126e6565b601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480156126295750600060105414155b156126e5576127106010548461263f9190613982565b6126499190613a0b565b9050601054600d548261265c9190613982565b6126669190613a0b565b601b6000828254612677919061364f565b92505081905550601054600e548261268f9190613982565b6126999190613a0b565b601960008282546126aa919061364f565b92505081905550601054600f54826126c29190613982565b6126cc9190613a0b565b601a60008282546126dd919061364f565b925050819055505b5b5b600081111561270a5780836126fc9190613a3c565b9250612709853083612a93565b5b505b612717848484612a93565b505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6001601f60146101000a81548160ff0219169083151502179055506018548361280d919061364f565b9250600060188190555060006002846128269190613a0b565b9050600081856128369190613a3c565b90506000838584612847919061364f565b612851919061364f565b905061288b30601e60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff168484612886919061364f565b611ba0565b61289481612d14565b600047905060008287836128a89190613982565b6128b29190613a0b565b905060008387846128c39190613982565b6128cd9190613a0b565b905060008183856128de9190613a3c565b6128e89190613a3c565b905060006128f68783612f39565b905080876129049190613a3c565b60186000828254612915919061364f565b925050819055507f28fc98272ce761178794ad6768050fea1648e07f1e2ffe15afd3a290f8381486878360405161294d929190613a70565b60405180910390a1600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168360405161299b90613aca565b60006040518083038185875af1925050503d80600081146129d8576040519150601f19603f3d011682016040523d82523d6000602084013e6129dd565b606091505b505050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1684604051612a2690613aca565b60006040518083038185875af1925050503d8060008114612a63576040519150601f19603f3d011682016040523d82523d6000602084013e612a68565b606091505b5050506000601f60146101000a81548160ff0219169083151502179055505050505050505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612b03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612afa90613b51565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612b73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b6a90613be3565b60405180910390fd5b612b7e838383613025565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612c04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bfb90613c75565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612c97919061364f565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612cfb919061336e565b60405180910390a3612d0e84848461302a565b50505050565b6000600267ffffffffffffffff811115612d3157612d30613c95565b5b604051908082528060200260200182016040528015612d5f5781602001602082028036833780820191505090505b5090503081600081518110612d7757612d76613cc4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601e60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015612e1957600080fd5b505afa158015612e2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e519190613d08565b81600181518110612e6557612e64613cc4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601e60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612f03959493929190613e2e565b600060405180830381600087803b158015612f1d57600080fd5b505af1158015612f31573d6000803e3d6000fd5b505050505050565b600080601e60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719843087600080600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401612fc596959493929190613e88565b6060604051808303818588803b158015612fde57600080fd5b505af1158015612ff2573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906130179190613efe565b505090508091505092915050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561306957808201518184015260208101905061304e565b83811115613078576000848401525b50505050565b6000601f19601f8301169050919050565b600061309a8261302f565b6130a4818561303a565b93506130b481856020860161304b565b6130bd8161307e565b840191505092915050565b600060208201905081810360008301526130e2818461308f565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061311a826130ef565b9050919050565b61312a8161310f565b811461313557600080fd5b50565b60008135905061314781613121565b92915050565b6000819050919050565b6131608161314d565b811461316b57600080fd5b50565b60008135905061317d81613157565b92915050565b6000806040838503121561319a576131996130ea565b5b60006131a885828601613138565b92505060206131b98582860161316e565b9150509250929050565b60008115159050919050565b6131d8816131c3565b82525050565b60006020820190506131f360008301846131cf565b92915050565b600080600060608486031215613212576132116130ea565b5b60006132208682870161316e565b93505060206132318682870161316e565b92505060406132428682870161316e565b9150509250925092565b600060208284031215613262576132616130ea565b5b600061327084828501613138565b91505092915050565b613282816131c3565b811461328d57600080fd5b50565b60008135905061329f81613279565b92915050565b600080604083850312156132bc576132bb6130ea565b5b60006132ca85828601613138565b92505060206132db85828601613290565b9150509250929050565b6000819050919050565b600061330a613305613300846130ef565b6132e5565b6130ef565b9050919050565b600061331c826132ef565b9050919050565b600061332e82613311565b9050919050565b61333e81613323565b82525050565b60006020820190506133596000830184613335565b92915050565b6133688161314d565b82525050565b6000602082019050613383600083018461335f565b92915050565b60006020828403121561339f5761339e6130ea565b5b60006133ad8482850161316e565b91505092915050565b60006133c1826130ef565b9050919050565b6133d1816133b6565b82525050565b60006020820190506133ec60008301846133c8565b92915050565b60008060006060848603121561340b5761340a6130ea565b5b600061341986828701613138565b935050602061342a86828701613138565b925050604061343b8682870161316e565b9150509250925092565b600060ff82169050919050565b61345b81613445565b82525050565b60006020820190506134766000830184613452565b92915050565b6134858161310f565b82525050565b60006020820190506134a0600083018461347c565b92915050565b6000602082840312156134bc576134bb6130ea565b5b60006134ca84828501613290565b91505092915050565b600080604083850312156134ea576134e96130ea565b5b60006134f885828601613138565b925050602061350985828601613138565b9150509250929050565b6000806040838503121561352a576135296130ea565b5b60006135388582860161316e565b92505060206135498582860161316e565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061359a57607f821691505b602082108114156135ae576135ad613553565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006135ea60208361303a565b91506135f5826135b4565b602082019050919050565b60006020820190508181036000830152613619816135dd565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061365a8261314d565b91506136658361314d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561369a57613699613620565b5b828201905092915050565b60006040820190506136ba600083018561347c565b6136c760208301846131cf565b9392505050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b600061372a60258361303a565b9150613735826136ce565b604082019050919050565b600060208201905081810360008301526137598161371d565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006137bc60268361303a565b91506137c782613760565b604082019050919050565b600060208201905081810360008301526137eb816137af565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061384e60248361303a565b9150613859826137f2565b604082019050919050565b6000602082019050818103600083015261387d81613841565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006138e060228361303a565b91506138eb82613884565b604082019050919050565b6000602082019050818103600083015261390f816138d3565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b600061394c601d8361303a565b915061395782613916565b602082019050919050565b6000602082019050818103600083015261397b8161393f565b9050919050565b600061398d8261314d565b91506139988361314d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156139d1576139d0613620565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613a168261314d565b9150613a218361314d565b925082613a3157613a306139dc565b5b828204905092915050565b6000613a478261314d565b9150613a528361314d565b925082821015613a6557613a64613620565b5b828203905092915050565b6000604082019050613a85600083018561335f565b613a92602083018461335f565b9392505050565b600081905092915050565b50565b6000613ab4600083613a99565b9150613abf82613aa4565b600082019050919050565b6000613ad582613aa7565b9150819050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613b3b60258361303a565b9150613b4682613adf565b604082019050919050565b60006020820190508181036000830152613b6a81613b2e565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613bcd60238361303a565b9150613bd882613b71565b604082019050919050565b60006020820190508181036000830152613bfc81613bc0565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000613c5f60268361303a565b9150613c6a82613c03565b604082019050919050565b60006020820190508181036000830152613c8e81613c52565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050613d0281613121565b92915050565b600060208284031215613d1e57613d1d6130ea565b5b6000613d2c84828501613cf3565b91505092915050565b6000819050919050565b6000613d5a613d55613d5084613d35565b6132e5565b61314d565b9050919050565b613d6a81613d3f565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613da58161310f565b82525050565b6000613db78383613d9c565b60208301905092915050565b6000602082019050919050565b6000613ddb82613d70565b613de58185613d7b565b9350613df083613d8c565b8060005b83811015613e21578151613e088882613dab565b9750613e1383613dc3565b925050600181019050613df4565b5085935050505092915050565b600060a082019050613e43600083018861335f565b613e506020830187613d61565b8181036040830152613e628186613dd0565b9050613e71606083018561347c565b613e7e608083018461335f565b9695505050505050565b600060c082019050613e9d600083018961347c565b613eaa602083018861335f565b613eb76040830187613d61565b613ec46060830186613d61565b613ed1608083018561347c565b613ede60a083018461335f565b979650505050505050565b600081519050613ef881613157565b92915050565b600080600060608486031215613f1757613f166130ea565b5b6000613f2586828701613ee9565b9350506020613f3686828701613ee9565b9250506040613f4786828701613ee9565b915050925092509256fea26469706673582212205813898635073fdc0eeb5b47f375631f516bf8a83191cd6001c43b6f255b94d164736f6c63430008090033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000b729bc51a9d0eeb247e40e11608dff7b36e053400000000000000000000000004b31bf6020c25289abd05dcb18b30c72f9bf7923000000000000000000000000d02b15053d07b392b4d7d91931ce0c598cad5d65
-----Decoded View---------------
Arg [0] : _marketingWallet (address): 0xb729bC51a9d0eeB247e40E11608DFf7b36E05340
Arg [1] : _teamWallet (address): 0x4b31Bf6020c25289abd05dCB18B30C72F9bf7923
Arg [2] : _liquidityWallet (address): 0xD02B15053D07B392b4D7d91931Ce0c598cAD5d65
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 000000000000000000000000b729bc51a9d0eeb247e40e11608dff7b36e05340
Arg [1] : 0000000000000000000000004b31bf6020c25289abd05dcb18b30c72f9bf7923
Arg [2] : 000000000000000000000000d02b15053d07b392b4d7d91931ce0c598cad5d65
Deployed Bytecode Sourcemap
25974:10587:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15093:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17444:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33948:354;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;34310:359;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;35930:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;33820:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27094:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16213:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35020:148;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26060:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26221:46;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18225:295;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16055:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26101:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18929:240;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27142:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26843:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35376:179;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;35732:190;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;36107:214;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26274:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27055:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16384:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8499:103;;;;;;;;;;;;;:::i;:::-;;26880:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7848:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15312:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19672:438;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26014:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16717:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36329:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26917:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35563:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;35176:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16973:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34677:335;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26163:51;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26951:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8757:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27006:42;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15093:100;15147:13;15180:5;15173:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15093:100;:::o;17444:201::-;17527:4;17544:13;17560:12;:10;:12::i;:::-;17544:28;;17583:32;17592:5;17599:7;17608:6;17583:8;:32::i;:::-;17633:4;17626:11;;;17444:201;;;;:::o;33948:354::-;8079:12;:10;:12::i;:::-;8068:23;;:7;:5;:7::i;:::-;:23;;;8060:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;34050:13:::1;34085:9;34073;34066:4;:16;;;;:::i;:::-;:28;;;;:::i;:::-;34050:44;;34119:4;34111:5;:12;34107:50;;;34141:16;;;;;;;;;;;;;;34107:50;34183:4;34170:10;:17;;;;34216:9;34198:15;:27;;;;34254:9;34236:15;:27;;;;34289:5;34274:12;:20;;;;34039:263;33948:354:::0;;;:::o;34310:359::-;8079:12;:10;:12::i;:::-;8068:23;;:7;:5;:7::i;:::-;:23;;;8060:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;34413:13:::1;34448:9;34436;34429:4;:16;;;;:::i;:::-;:28;;;;:::i;:::-;34413:44;;34482:4;34474:5;:12;34470:50;;;34504:16;;;;;;;;;;;;;;34470:50;34547:4;34533:11;:18;;;;34581:9;34562:16;:28;;;;34620:9;34601:16;:28;;;;34656:5;34640:13;:21;;;;34402:267;34310:359:::0;;;:::o;35930:169::-;8079:12;:10;:12::i;:::-;8068:23;;:7;:5;:7::i;:::-;:23;;;8060:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;36031:12:::1;36009:11;;:35;;;;;;;;;;;;;;;;;;36060:31;36078:12;36060:31;;;;;;:::i;:::-;;;;;;;;35930:169:::0;:::o;33820:120::-;8079:12;:10;:12::i;:::-;8068:23;;:7;:5;:7::i;:::-;:23;;;8060:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;33927:5:::1;33901:14;:23;33916:7;33901:23;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;33820:120:::0;;:::o;27094:41::-;;;;;;;;;;;;;:::o;16213:108::-;16274:7;16301:12;;16294:19;;16213:108;:::o;35020:148::-;8079:12;:10;:12::i;:::-;8068:23;;:7;:5;:7::i;:::-;:23;;;8060:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;35107:10:::1;35095:9;:22;;;;35133:27;35149:10;35133:27;;;;;;:::i;:::-;;;;;;;;35020:148:::0;:::o;26060:34::-;;;;;;;;;;;;;:::o;26221:46::-;;;;;;;;;;;;;;;;;;;;;;:::o;18225:295::-;18356:4;18373:15;18391:12;:10;:12::i;:::-;18373:30;;18414:38;18430:4;18436:7;18445:6;18414:15;:38::i;:::-;18463:27;18473:4;18479:2;18483:6;18463:9;:27::i;:::-;18508:4;18501:11;;;18225:295;;;;;:::o;16055:93::-;16113:5;16138:2;16131:9;;16055:93;:::o;26101:31::-;;;;;;;;;;;;;:::o;18929:240::-;19017:4;19034:13;19050:12;:10;:12::i;:::-;19034:28;;19073:66;19082:5;19089:7;19128:10;19098:11;:18;19110:5;19098:18;;;;;;;;;;;;;;;:27;19117:7;19098:27;;;;;;;;;;;;;;;;:40;;;;:::i;:::-;19073:8;:66::i;:::-;19157:4;19150:11;;;18929:240;;;;:::o;27142:28::-;;;;;;;;;;;;;:::o;26843:30::-;;;;:::o;35376:179::-;8079:12;:10;:12::i;:::-;8068:23;;:7;:5;:7::i;:::-;:23;;;8060:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;35495:5:::1;35464:19;:28;35484:7;35464:28;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;35516:31;35532:7;35541:5;35516:31;;;;;;;:::i;:::-;;;;;;;;35376:179:::0;;:::o;35732:190::-;8079:12;:10;:12::i;:::-;8068:23;;:7;:5;:7::i;:::-;:23;;;8060:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;35837:19:::1;35816:18;:40;;;;35872:42;35894:19;35872:42;;;;;;:::i;:::-;;;;;;;;35732:190:::0;:::o;36107:214::-;8079:12;:10;:12::i;:::-;8068:23;;:7;:5;:7::i;:::-;:23;;;8060:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;36229:20:::1;36202:16;;:48;;;;;;;;;;;;;;;;;;36266:47;36292:20;36266:47;;;;;;:::i;:::-;;;;;;;;36107:214:::0;:::o;26274:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;27055:30::-;;;;;;;;;;;;;:::o;16384:127::-;16458:7;16485:9;:18;16495:7;16485:18;;;;;;;;;;;;;;;;16478:25;;16384:127;;;:::o;8499:103::-;8079:12;:10;:12::i;:::-;8068:23;;:7;:5;:7::i;:::-;:23;;;8060:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8564:30:::1;8591:1;8564:18;:30::i;:::-;8499:103::o:0;26880:30::-;;;;:::o;7848:87::-;7894:7;7921:6;;;;;;;;;;;7914:13;;7848:87;:::o;15312:104::-;15368:13;15401:7;15394:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15312:104;:::o;19672:438::-;19765:4;19782:13;19798:12;:10;:12::i;:::-;19782:28;;19821:24;19848:11;:18;19860:5;19848:18;;;;;;;;;;;;;;;:27;19867:7;19848:27;;;;;;;;;;;;;;;;19821:54;;19914:15;19894:16;:35;;19886:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;20007:60;20016:5;20023:7;20051:15;20032:16;:34;20007:8;:60::i;:::-;20098:4;20091:11;;;;19672:438;;;;:::o;26014:39::-;;;;;;;;;;;;;:::o;16717:193::-;16796:4;16813:13;16829:12;:10;:12::i;:::-;16813:28;;16852;16862:5;16869:2;16873:6;16852:9;:28::i;:::-;16898:4;16891:11;;;16717:193;;;;:::o;36329:192::-;8079:12;:10;:12::i;:::-;8068:23;;:7;:5;:7::i;:::-;:23;;;8060:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;36438:17:::1;36418:16;;:38;;;;;;;;;;;;;;;;;;36472:41;36495:17;36472:41;;;;;;:::i;:::-;;;;;;;;36329:192:::0;:::o;26917:25::-;;;;:::o;35563:161::-;8079:12;:10;:12::i;:::-;8068:23;;:7;:5;:7::i;:::-;:23;;;8060:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;35654:8:::1;35640:11;;:22;;;;;;;;;;;;;;;;;;35678:38;35707:8;35678:38;;;;;;:::i;:::-;;;;;;;;35563:161:::0;:::o;35176:192::-;8079:12;:10;:12::i;:::-;8068:23;;:7;:5;:7::i;:::-;:23;;;8060:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;35300:5:::1;35263:25;:34;35289:7;35263:34;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;35345:7;35321:39;;;35354:5;35321:39;;;;;;:::i;:::-;;;;;;;;35176:192:::0;;:::o;16973:151::-;17062:7;17089:11;:18;17101:5;17089:18;;;;;;;;;;;;;;;:27;17108:7;17089:27;;;;;;;;;;;;;;;;17082:34;;16973:151;;;;:::o;34677:335::-;8079:12;:10;:12::i;:::-;8068:23;;:7;:5;:7::i;:::-;:23;;;8060:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;34773:13:::1;34801:9;34789;:21;;;;:::i;:::-;34773:37;;34833:5;34825;:13;34821:51;;;34856:16;;;;;;;;;;;;;;34821:51;34911:9;34885:23;:35;;;;34957:9;34931:23;:35;;;;34999:5;34977:19;:27;;;;34762:250;34677:335:::0;;:::o;26163:51::-;;;;;;;;;;;;;;;;;;;;;;:::o;26951:48::-;;;;:::o;8757:201::-;8079:12;:10;:12::i;:::-;8068:23;;:7;:5;:7::i;:::-;:23;;;8060:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8866:1:::1;8846:22;;:8;:22;;;;8838:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;8922:28;8941:8;8922:18;:28::i;:::-;8757:201:::0;:::o;27006:42::-;;;;:::o;6572:98::-;6625:7;6652:10;6645:17;;6572:98;:::o;23308:380::-;23461:1;23444:19;;:5;:19;;;;23436:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23542:1;23523:21;;:7;:21;;;;23515:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23626:6;23596:11;:18;23608:5;23596:18;;;;;;;;;;;;;;;:27;23615:7;23596:27;;;;;;;;;;;;;;;:36;;;;23664:7;23648:32;;23657:5;23648:32;;;23673:6;23648:32;;;;;;:::i;:::-;;;;;;;;23308:380;;;:::o;23975:453::-;24110:24;24137:25;24147:5;24154:7;24137:9;:25::i;:::-;24110:52;;24197:17;24177:16;:37;24173:248;;24259:6;24239:16;:26;;24231:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24343:51;24352:5;24359:7;24387:6;24368:16;:25;24343:8;:51::i;:::-;24173:248;24099:329;23975:453;;;:::o;28802:2879::-;28931:14;:20;28946:4;28931:20;;;;;;;;;;;;;;;;;;;;;;;;;:42;;;;28955:14;:18;28970:2;28955:18;;;;;;;;;;;;;;;;;;;;;;;;;28931:42;28928:85;;;28991:22;;;;;;;;;;;;;;28928:85;29039:1;29029:6;:11;29026:49;;;29057:7;;29026:49;29099:13;;;;;;;;;;;29091:21;;:4;:21;;;29087:81;;;29153:15;29127:12;:23;29140:9;29127:23;;;;;;;;;;;;;;;:41;;;;29087:81;29242:13;;;;;;;;;;;29236:19;;:2;:19;;;;:53;;;;;29260:25;:29;29286:2;29260:29;;;;;;;;;;;;;;;;;;;;;;;;;29259:30;29236:53;:91;;;;;29318:9;;29302:13;29312:2;29302:9;:13::i;:::-;29293:6;:22;;;;:::i;:::-;:34;29236:91;29232:150;;;29351:19;;;;;;;;;;;;;;29232:150;29394:28;29453:18;;29425:24;29443:4;29425:9;:24::i;:::-;:46;;29394:77;;29502:11;;;;;;;;;;;:46;;;;;29532:16;;;;;;;;;;;29531:17;29502:46;:86;;;;;29565:23;29502:86;:124;;;;;29613:13;;;;;;;;;;;29605:21;;:4;:21;;;;29502:124;:167;;;;;29644:19;:25;29664:4;29644:25;;;;;;;;;;;;;;;;;;;;;;;;;29643:26;29502:167;:208;;;;;29687:19;:23;29707:2;29687:23;;;;;;;;;;;;;;;;;;;;;;;;;29686:24;29502:208;29484:771;;;29741:13;29793:10;;29775:15;;29757;;:33;;;;:::i;:::-;:46;;;;:::i;:::-;29741:62;;29818:17;29877:5;29859:15;;29838:18;;:36;;;;:::i;:::-;:44;;;;:::i;:::-;29818:64;;29897:23;29962:5;29944:15;;29923:18;;:36;;;;:::i;:::-;:44;;;;:::i;:::-;29897:70;;29982:18;30037:5;30024:10;;30003:18;;:31;;;;:::i;:::-;:39;;;;:::i;:::-;29982:60;;30059:51;30071:9;30082:15;30099:10;30059:11;:51::i;:::-;30146:9;30127:15;;:28;;;;;;;:::i;:::-;;;;;;;;30189:15;30170;;:34;;;;;;;:::i;:::-;;;;;;;;30233:10;30219;;:24;;;;;;;:::i;:::-;;;;;;;;29724:531;;;;29484:771;30272:16;;;;;;;;;;;30271:17;:47;;;;;30293:19;:25;30313:4;30293:25;;;;;;;;;;;;;;;;;;;;;;;;;30292:26;30271:47;:75;;;;;30323:19;:23;30343:2;30323:23;;;;;;;;;;;;;;;;;;;;;;;;;30322:24;30271:75;30267:1359;;;30365:12;30404:13;;;;;;;;;;;30396:21;;:4;:21;;;;:48;;;;;30443:1;30421:19;;:23;;30396:48;:104;;;;;30485:15;30474:8;30448:12;:23;30461:9;30448:23;;;;;;;;;;;;;;;;:34;;;;:::i;:::-;:52;30396:104;30392:1083;;;30560:5;30538:19;;30528:6;:29;;;;:::i;:::-;:37;;;;:::i;:::-;30521:44;;30636:19;;30610:23;;30603:4;:30;;;;:::i;:::-;:52;;;;:::i;:::-;30584:15;;:71;;;;;;;:::i;:::-;;;;;;;;30726:19;;30700:23;;30693:4;:30;;;;:::i;:::-;:52;;;;:::i;:::-;30674:15;;:71;;;;;;;:::i;:::-;;;;;;;;30392:1083;;;30792:13;;;;;;;;;;;30786:19;;:2;:19;;;:41;;;;;30826:1;30809:13;;:18;;30786:41;30782:693;;;30887:5;30871:13;;30862:6;:22;;;;:::i;:::-;:30;;;;:::i;:::-;30855:37;;30946:13;;30932:11;;30925:4;:18;;;;:::i;:::-;:34;;;;:::i;:::-;30911:10;;:48;;;;;;;:::i;:::-;;;;;;;;31023:13;;31004:16;;30997:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;30978:15;;:58;;;;;;;:::i;:::-;;;;;;;;31100:13;;31081:16;;31074:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;31055:15;;:58;;;;;;;:::i;:::-;;;;;;;;30782:693;;;31147:13;;;;;;;;;;;31139:21;;:4;:21;;;:42;;;;;31180:1;31164:12;;:17;;31139:42;31135:340;;;31239:5;31224:12;;31215:6;:21;;;;:::i;:::-;:29;;;;:::i;:::-;31208:36;;31297:12;;31284:10;;31277:4;:17;;;;:::i;:::-;:32;;;;:::i;:::-;31263:10;;:46;;;;;;;:::i;:::-;;;;;;;;31372:12;;31354:15;;31347:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;31328:15;;:56;;;;;;;:::i;:::-;;;;;;;;31447:12;;31429:15;;31422:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;31403:15;;:56;;;;;;;:::i;:::-;;;;;;;;31135:340;30782:693;30392:1083;31500:1;31493:4;:8;31489:124;;;31532:4;31522:14;;;;;:::i;:::-;;;31555:42;31571:4;31585;31592;31555:15;:42::i;:::-;31489:124;30348:1278;30267:1359;31638:33;31654:4;31660:2;31664:6;31638:15;:33::i;:::-;28915:2766;28802:2879;;;;:::o;9118:191::-;9192:16;9211:6;;;;;;;;;;;9192:25;;9237:8;9228:6;;:17;;;;;;;;;;;;;;;;;;9292:8;9261:40;;9282:8;9261:40;;;;;;;;;;;;9181:128;9118:191;:::o;31689:1266::-;31823:4;31804:16;;:23;;;;;;;;;;;;;;;;;;31860:14;;31840:34;;;;;:::i;:::-;;;31902:1;31885:14;:18;;;;31916:21;31959:1;31940:16;:20;;;;:::i;:::-;31916:44;;31971:26;32019:13;32000:16;:32;;;;:::i;:::-;31971:61;;32045:21;32104:11;32085:16;32069:13;:32;;;;:::i;:::-;:46;;;;:::i;:::-;32045:70;;32128:85;32145:4;32160:15;;;;;;;;;;;32194:18;32178:13;:34;;;;:::i;:::-;32128:8;:85::i;:::-;32226:31;32243:13;32226:16;:31::i;:::-;32270:18;32291:21;32270:42;;32325:23;32383:13;32364:16;32351:10;:29;;;;:::i;:::-;:45;;;;:::i;:::-;32325:71;;32407:18;32455:13;32441:11;32428:10;:24;;;;:::i;:::-;:40;;;;:::i;:::-;32407:61;;32479:23;32536:10;32518:15;32505:10;:28;;;;:::i;:::-;:41;;;;:::i;:::-;32479:67;;32559:28;32590:49;32603:18;32623:15;32590:12;:49::i;:::-;32559:80;;32692:20;32671:18;:41;;;;:::i;:::-;32652:14;;:61;;;;;;;:::i;:::-;;;;;;;;32729:51;32744:18;32764:15;32729:51;;;;;;;:::i;:::-;;;;;;;;32801:11;;;;;;;;;;;32793:25;;32826:10;32793:48;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32860:16;;;;;;;;;;;32852:30;;32890:15;32852:58;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32942:5;32923:16;;:24;;;;;;;;;;;;;;;;;;31791:1164;;;;;;;;31689:1266;;;:::o;20589:671::-;20736:1;20720:18;;:4;:18;;;;20712:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20813:1;20799:16;;:2;:16;;;;20791:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;20868:38;20889:4;20895:2;20899:6;20868:20;:38::i;:::-;20919:19;20941:9;:15;20951:4;20941:15;;;;;;;;;;;;;;;;20919:37;;20990:6;20975:11;:21;;20967:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;21107:6;21093:11;:20;21075:9;:15;21085:4;21075:15;;;;;;;;;;;;;;;:38;;;;21152:6;21135:9;:13;21145:2;21135:13;;;;;;;;;;;;;;;;:23;;;;;;;:::i;:::-;;;;;;;;21191:2;21176:26;;21185:4;21176:26;;;21195:6;21176:26;;;;;;:::i;:::-;;;;;;;;21215:37;21235:4;21241:2;21245:6;21215:19;:37::i;:::-;20701:559;20589:671;;;:::o;32963:426::-;33029:21;33067:1;33053:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33029:40;;33098:4;33080;33085:1;33080:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;33124:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;33114:4;33119:1;33114:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;33157:15;;;;;;;;;;;:66;;;33238:11;33264:1;33308:4;33335;33355:15;33157:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33018:371;32963:426;:::o;33397:415::-;33476:7;33497:15;33518;;;;;;;;;;;:31;;;33557:9;33590:4;33610:11;33636:1;33679;33722:16;;;;;;;;;;;33753:15;33518:261;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;33496:283;;;;33797:7;33790:14;;;33397:415;;;;:::o;25028:125::-;;;;:::o;25757:124::-;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1478:117::-;1587:1;1584;1577:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:619::-;3571:6;3579;3587;3636:2;3624:9;3615:7;3611:23;3607:32;3604:119;;;3642:79;;:::i;:::-;3604:119;3762:1;3787:53;3832:7;3823:6;3812:9;3808:22;3787:53;:::i;:::-;3777:63;;3733:117;3889:2;3915:53;3960:7;3951:6;3940:9;3936:22;3915:53;:::i;:::-;3905:63;;3860:118;4017:2;4043:53;4088:7;4079:6;4068:9;4064:22;4043:53;:::i;:::-;4033:63;;3988:118;3494:619;;;;;:::o;4119:329::-;4178:6;4227:2;4215:9;4206:7;4202:23;4198:32;4195:119;;;4233:79;;:::i;:::-;4195:119;4353:1;4378:53;4423:7;4414:6;4403:9;4399:22;4378:53;:::i;:::-;4368:63;;4324:117;4119:329;;;;:::o;4454:116::-;4524:21;4539:5;4524:21;:::i;:::-;4517:5;4514:32;4504:60;;4560:1;4557;4550:12;4504:60;4454:116;:::o;4576:133::-;4619:5;4657:6;4644:20;4635:29;;4673:30;4697:5;4673:30;:::i;:::-;4576:133;;;;:::o;4715:468::-;4780:6;4788;4837:2;4825:9;4816:7;4812:23;4808:32;4805:119;;;4843:79;;:::i;:::-;4805:119;4963:1;4988:53;5033:7;5024:6;5013:9;5009:22;4988:53;:::i;:::-;4978:63;;4934:117;5090:2;5116:50;5158:7;5149:6;5138:9;5134:22;5116:50;:::i;:::-;5106:60;;5061:115;4715:468;;;;;:::o;5189:60::-;5217:3;5238:5;5231:12;;5189:60;;;:::o;5255:142::-;5305:9;5338:53;5356:34;5365:24;5383:5;5365:24;:::i;:::-;5356:34;:::i;:::-;5338:53;:::i;:::-;5325:66;;5255:142;;;:::o;5403:126::-;5453:9;5486:37;5517:5;5486:37;:::i;:::-;5473:50;;5403:126;;;:::o;5535:152::-;5611:9;5644:37;5675:5;5644:37;:::i;:::-;5631:50;;5535:152;;;:::o;5693:183::-;5806:63;5863:5;5806:63;:::i;:::-;5801:3;5794:76;5693:183;;:::o;5882:274::-;6001:4;6039:2;6028:9;6024:18;6016:26;;6052:97;6146:1;6135:9;6131:17;6122:6;6052:97;:::i;:::-;5882:274;;;;:::o;6162:118::-;6249:24;6267:5;6249:24;:::i;:::-;6244:3;6237:37;6162:118;;:::o;6286:222::-;6379:4;6417:2;6406:9;6402:18;6394:26;;6430:71;6498:1;6487:9;6483:17;6474:6;6430:71;:::i;:::-;6286:222;;;;:::o;6514:329::-;6573:6;6622:2;6610:9;6601:7;6597:23;6593:32;6590:119;;;6628:79;;:::i;:::-;6590:119;6748:1;6773:53;6818:7;6809:6;6798:9;6794:22;6773:53;:::i;:::-;6763:63;;6719:117;6514:329;;;;:::o;6849:104::-;6894:7;6923:24;6941:5;6923:24;:::i;:::-;6912:35;;6849:104;;;:::o;6959:142::-;7062:32;7088:5;7062:32;:::i;:::-;7057:3;7050:45;6959:142;;:::o;7107:254::-;7216:4;7254:2;7243:9;7239:18;7231:26;;7267:87;7351:1;7340:9;7336:17;7327:6;7267:87;:::i;:::-;7107:254;;;;:::o;7367:619::-;7444:6;7452;7460;7509:2;7497:9;7488:7;7484:23;7480:32;7477:119;;;7515:79;;:::i;:::-;7477:119;7635:1;7660:53;7705:7;7696:6;7685:9;7681:22;7660:53;:::i;:::-;7650:63;;7606:117;7762:2;7788:53;7833:7;7824:6;7813:9;7809:22;7788:53;:::i;:::-;7778:63;;7733:118;7890:2;7916:53;7961:7;7952:6;7941:9;7937:22;7916:53;:::i;:::-;7906:63;;7861:118;7367:619;;;;;:::o;7992:86::-;8027:7;8067:4;8060:5;8056:16;8045:27;;7992:86;;;:::o;8084:112::-;8167:22;8183:5;8167:22;:::i;:::-;8162:3;8155:35;8084:112;;:::o;8202:214::-;8291:4;8329:2;8318:9;8314:18;8306:26;;8342:67;8406:1;8395:9;8391:17;8382:6;8342:67;:::i;:::-;8202:214;;;;:::o;8422:118::-;8509:24;8527:5;8509:24;:::i;:::-;8504:3;8497:37;8422:118;;:::o;8546:222::-;8639:4;8677:2;8666:9;8662:18;8654:26;;8690:71;8758:1;8747:9;8743:17;8734:6;8690:71;:::i;:::-;8546:222;;;;:::o;8774:323::-;8830:6;8879:2;8867:9;8858:7;8854:23;8850:32;8847:119;;;8885:79;;:::i;:::-;8847:119;9005:1;9030:50;9072:7;9063:6;9052:9;9048:22;9030:50;:::i;:::-;9020:60;;8976:114;8774:323;;;;:::o;9103:474::-;9171:6;9179;9228:2;9216:9;9207:7;9203:23;9199:32;9196:119;;;9234:79;;:::i;:::-;9196:119;9354:1;9379:53;9424:7;9415:6;9404:9;9400:22;9379:53;:::i;:::-;9369:63;;9325:117;9481:2;9507:53;9552:7;9543:6;9532:9;9528:22;9507:53;:::i;:::-;9497:63;;9452:118;9103:474;;;;;:::o;9583:::-;9651:6;9659;9708:2;9696:9;9687:7;9683:23;9679:32;9676:119;;;9714:79;;:::i;:::-;9676:119;9834:1;9859:53;9904:7;9895:6;9884:9;9880:22;9859:53;:::i;:::-;9849:63;;9805:117;9961:2;9987:53;10032:7;10023:6;10012:9;10008:22;9987:53;:::i;:::-;9977:63;;9932:118;9583:474;;;;;:::o;10063:180::-;10111:77;10108:1;10101:88;10208:4;10205:1;10198:15;10232:4;10229:1;10222:15;10249:320;10293:6;10330:1;10324:4;10320:12;10310:22;;10377:1;10371:4;10367:12;10398:18;10388:81;;10454:4;10446:6;10442:17;10432:27;;10388:81;10516:2;10508:6;10505:14;10485:18;10482:38;10479:84;;;10535:18;;:::i;:::-;10479:84;10300:269;10249:320;;;:::o;10575:182::-;10715:34;10711:1;10703:6;10699:14;10692:58;10575:182;:::o;10763:366::-;10905:3;10926:67;10990:2;10985:3;10926:67;:::i;:::-;10919:74;;11002:93;11091:3;11002:93;:::i;:::-;11120:2;11115:3;11111:12;11104:19;;10763:366;;;:::o;11135:419::-;11301:4;11339:2;11328:9;11324:18;11316:26;;11388:9;11382:4;11378:20;11374:1;11363:9;11359:17;11352:47;11416:131;11542:4;11416:131;:::i;:::-;11408:139;;11135:419;;;:::o;11560:180::-;11608:77;11605:1;11598:88;11705:4;11702:1;11695:15;11729:4;11726:1;11719:15;11746:305;11786:3;11805:20;11823:1;11805:20;:::i;:::-;11800:25;;11839:20;11857:1;11839:20;:::i;:::-;11834:25;;11993:1;11925:66;11921:74;11918:1;11915:81;11912:107;;;11999:18;;:::i;:::-;11912:107;12043:1;12040;12036:9;12029:16;;11746:305;;;;:::o;12057:320::-;12172:4;12210:2;12199:9;12195:18;12187:26;;12223:71;12291:1;12280:9;12276:17;12267:6;12223:71;:::i;:::-;12304:66;12366:2;12355:9;12351:18;12342:6;12304:66;:::i;:::-;12057:320;;;;;:::o;12383:224::-;12523:34;12519:1;12511:6;12507:14;12500:58;12592:7;12587:2;12579:6;12575:15;12568:32;12383:224;:::o;12613:366::-;12755:3;12776:67;12840:2;12835:3;12776:67;:::i;:::-;12769:74;;12852:93;12941:3;12852:93;:::i;:::-;12970:2;12965:3;12961:12;12954:19;;12613:366;;;:::o;12985:419::-;13151:4;13189:2;13178:9;13174:18;13166:26;;13238:9;13232:4;13228:20;13224:1;13213:9;13209:17;13202:47;13266:131;13392:4;13266:131;:::i;:::-;13258:139;;12985:419;;;:::o;13410:225::-;13550:34;13546:1;13538:6;13534:14;13527:58;13619:8;13614:2;13606:6;13602:15;13595:33;13410:225;:::o;13641:366::-;13783:3;13804:67;13868:2;13863:3;13804:67;:::i;:::-;13797:74;;13880:93;13969:3;13880:93;:::i;:::-;13998:2;13993:3;13989:12;13982:19;;13641:366;;;:::o;14013:419::-;14179:4;14217:2;14206:9;14202:18;14194:26;;14266:9;14260:4;14256:20;14252:1;14241:9;14237:17;14230:47;14294:131;14420:4;14294:131;:::i;:::-;14286:139;;14013:419;;;:::o;14438:223::-;14578:34;14574:1;14566:6;14562:14;14555:58;14647:6;14642:2;14634:6;14630:15;14623:31;14438:223;:::o;14667:366::-;14809:3;14830:67;14894:2;14889:3;14830:67;:::i;:::-;14823:74;;14906:93;14995:3;14906:93;:::i;:::-;15024:2;15019:3;15015:12;15008:19;;14667:366;;;:::o;15039:419::-;15205:4;15243:2;15232:9;15228:18;15220:26;;15292:9;15286:4;15282:20;15278:1;15267:9;15263:17;15256:47;15320:131;15446:4;15320:131;:::i;:::-;15312:139;;15039:419;;;:::o;15464:221::-;15604:34;15600:1;15592:6;15588:14;15581:58;15673:4;15668:2;15660:6;15656:15;15649:29;15464:221;:::o;15691:366::-;15833:3;15854:67;15918:2;15913:3;15854:67;:::i;:::-;15847:74;;15930:93;16019:3;15930:93;:::i;:::-;16048:2;16043:3;16039:12;16032:19;;15691:366;;;:::o;16063:419::-;16229:4;16267:2;16256:9;16252:18;16244:26;;16316:9;16310:4;16306:20;16302:1;16291:9;16287:17;16280:47;16344:131;16470:4;16344:131;:::i;:::-;16336:139;;16063:419;;;:::o;16488:179::-;16628:31;16624:1;16616:6;16612:14;16605:55;16488:179;:::o;16673:366::-;16815:3;16836:67;16900:2;16895:3;16836:67;:::i;:::-;16829:74;;16912:93;17001:3;16912:93;:::i;:::-;17030:2;17025:3;17021:12;17014:19;;16673:366;;;:::o;17045:419::-;17211:4;17249:2;17238:9;17234:18;17226:26;;17298:9;17292:4;17288:20;17284:1;17273:9;17269:17;17262:47;17326:131;17452:4;17326:131;:::i;:::-;17318:139;;17045:419;;;:::o;17470:348::-;17510:7;17533:20;17551:1;17533:20;:::i;:::-;17528:25;;17567:20;17585:1;17567:20;:::i;:::-;17562:25;;17755:1;17687:66;17683:74;17680:1;17677:81;17672:1;17665:9;17658:17;17654:105;17651:131;;;17762:18;;:::i;:::-;17651:131;17810:1;17807;17803:9;17792:20;;17470:348;;;;:::o;17824:180::-;17872:77;17869:1;17862:88;17969:4;17966:1;17959:15;17993:4;17990:1;17983:15;18010:185;18050:1;18067:20;18085:1;18067:20;:::i;:::-;18062:25;;18101:20;18119:1;18101:20;:::i;:::-;18096:25;;18140:1;18130:35;;18145:18;;:::i;:::-;18130:35;18187:1;18184;18180:9;18175:14;;18010:185;;;;:::o;18201:191::-;18241:4;18261:20;18279:1;18261:20;:::i;:::-;18256:25;;18295:20;18313:1;18295:20;:::i;:::-;18290:25;;18334:1;18331;18328:8;18325:34;;;18339:18;;:::i;:::-;18325:34;18384:1;18381;18377:9;18369:17;;18201:191;;;;:::o;18398:332::-;18519:4;18557:2;18546:9;18542:18;18534:26;;18570:71;18638:1;18627:9;18623:17;18614:6;18570:71;:::i;:::-;18651:72;18719:2;18708:9;18704:18;18695:6;18651:72;:::i;:::-;18398:332;;;;;:::o;18736:147::-;18837:11;18874:3;18859:18;;18736:147;;;;:::o;18889:114::-;;:::o;19009:398::-;19168:3;19189:83;19270:1;19265:3;19189:83;:::i;:::-;19182:90;;19281:93;19370:3;19281:93;:::i;:::-;19399:1;19394:3;19390:11;19383:18;;19009:398;;;:::o;19413:379::-;19597:3;19619:147;19762:3;19619:147;:::i;:::-;19612:154;;19783:3;19776:10;;19413:379;;;:::o;19798:224::-;19938:34;19934:1;19926:6;19922:14;19915:58;20007:7;20002:2;19994:6;19990:15;19983:32;19798:224;:::o;20028:366::-;20170:3;20191:67;20255:2;20250:3;20191:67;:::i;:::-;20184:74;;20267:93;20356:3;20267:93;:::i;:::-;20385:2;20380:3;20376:12;20369:19;;20028:366;;;:::o;20400:419::-;20566:4;20604:2;20593:9;20589:18;20581:26;;20653:9;20647:4;20643:20;20639:1;20628:9;20624:17;20617:47;20681:131;20807:4;20681:131;:::i;:::-;20673:139;;20400:419;;;:::o;20825:222::-;20965:34;20961:1;20953:6;20949:14;20942:58;21034:5;21029:2;21021:6;21017:15;21010:30;20825:222;:::o;21053:366::-;21195:3;21216:67;21280:2;21275:3;21216:67;:::i;:::-;21209:74;;21292:93;21381:3;21292:93;:::i;:::-;21410:2;21405:3;21401:12;21394:19;;21053:366;;;:::o;21425:419::-;21591:4;21629:2;21618:9;21614:18;21606:26;;21678:9;21672:4;21668:20;21664:1;21653:9;21649:17;21642:47;21706:131;21832:4;21706:131;:::i;:::-;21698:139;;21425:419;;;:::o;21850:225::-;21990:34;21986:1;21978:6;21974:14;21967:58;22059:8;22054:2;22046:6;22042:15;22035:33;21850:225;:::o;22081:366::-;22223:3;22244:67;22308:2;22303:3;22244:67;:::i;:::-;22237:74;;22320:93;22409:3;22320:93;:::i;:::-;22438:2;22433:3;22429:12;22422:19;;22081:366;;;:::o;22453:419::-;22619:4;22657:2;22646:9;22642:18;22634:26;;22706:9;22700:4;22696:20;22692:1;22681:9;22677:17;22670:47;22734:131;22860:4;22734:131;:::i;:::-;22726:139;;22453:419;;;:::o;22878:180::-;22926:77;22923:1;22916:88;23023:4;23020:1;23013:15;23047:4;23044:1;23037:15;23064:180;23112:77;23109:1;23102:88;23209:4;23206:1;23199:15;23233:4;23230:1;23223:15;23250:143;23307:5;23338:6;23332:13;23323:22;;23354:33;23381:5;23354:33;:::i;:::-;23250:143;;;;:::o;23399:351::-;23469:6;23518:2;23506:9;23497:7;23493:23;23489:32;23486:119;;;23524:79;;:::i;:::-;23486:119;23644:1;23669:64;23725:7;23716:6;23705:9;23701:22;23669:64;:::i;:::-;23659:74;;23615:128;23399:351;;;;:::o;23756:85::-;23801:7;23830:5;23819:16;;23756:85;;;:::o;23847:158::-;23905:9;23938:61;23956:42;23965:32;23991:5;23965:32;:::i;:::-;23956:42;:::i;:::-;23938:61;:::i;:::-;23925:74;;23847:158;;;:::o;24011:147::-;24106:45;24145:5;24106:45;:::i;:::-;24101:3;24094:58;24011:147;;:::o;24164:114::-;24231:6;24265:5;24259:12;24249:22;;24164:114;;;:::o;24284:184::-;24383:11;24417:6;24412:3;24405:19;24457:4;24452:3;24448:14;24433:29;;24284:184;;;;:::o;24474:132::-;24541:4;24564:3;24556:11;;24594:4;24589:3;24585:14;24577:22;;24474:132;;;:::o;24612:108::-;24689:24;24707:5;24689:24;:::i;:::-;24684:3;24677:37;24612:108;;:::o;24726:179::-;24795:10;24816:46;24858:3;24850:6;24816:46;:::i;:::-;24894:4;24889:3;24885:14;24871:28;;24726:179;;;;:::o;24911:113::-;24981:4;25013;25008:3;25004:14;24996:22;;24911:113;;;:::o;25060:732::-;25179:3;25208:54;25256:5;25208:54;:::i;:::-;25278:86;25357:6;25352:3;25278:86;:::i;:::-;25271:93;;25388:56;25438:5;25388:56;:::i;:::-;25467:7;25498:1;25483:284;25508:6;25505:1;25502:13;25483:284;;;25584:6;25578:13;25611:63;25670:3;25655:13;25611:63;:::i;:::-;25604:70;;25697:60;25750:6;25697:60;:::i;:::-;25687:70;;25543:224;25530:1;25527;25523:9;25518:14;;25483:284;;;25487:14;25783:3;25776:10;;25184:608;;;25060:732;;;;:::o;25798:831::-;26061:4;26099:3;26088:9;26084:19;26076:27;;26113:71;26181:1;26170:9;26166:17;26157:6;26113:71;:::i;:::-;26194:80;26270:2;26259:9;26255:18;26246:6;26194:80;:::i;:::-;26321:9;26315:4;26311:20;26306:2;26295:9;26291:18;26284:48;26349:108;26452:4;26443:6;26349:108;:::i;:::-;26341:116;;26467:72;26535:2;26524:9;26520:18;26511:6;26467:72;:::i;:::-;26549:73;26617:3;26606:9;26602:19;26593:6;26549:73;:::i;:::-;25798:831;;;;;;;;:::o;26635:807::-;26884:4;26922:3;26911:9;26907:19;26899:27;;26936:71;27004:1;26993:9;26989:17;26980:6;26936:71;:::i;:::-;27017:72;27085:2;27074:9;27070:18;27061:6;27017:72;:::i;:::-;27099:80;27175:2;27164:9;27160:18;27151:6;27099:80;:::i;:::-;27189;27265:2;27254:9;27250:18;27241:6;27189:80;:::i;:::-;27279:73;27347:3;27336:9;27332:19;27323:6;27279:73;:::i;:::-;27362;27430:3;27419:9;27415:19;27406:6;27362:73;:::i;:::-;26635:807;;;;;;;;;:::o;27448:143::-;27505:5;27536:6;27530:13;27521:22;;27552:33;27579:5;27552:33;:::i;:::-;27448:143;;;;:::o;27597:663::-;27685:6;27693;27701;27750:2;27738:9;27729:7;27725:23;27721:32;27718:119;;;27756:79;;:::i;:::-;27718:119;27876:1;27901:64;27957:7;27948:6;27937:9;27933:22;27901:64;:::i;:::-;27891:74;;27847:128;28014:2;28040:64;28096:7;28087:6;28076:9;28072:22;28040:64;:::i;:::-;28030:74;;27985:129;28153:2;28179:64;28235:7;28226:6;28215:9;28211:22;28179:64;:::i;:::-;28169:74;;28124:129;27597:663;;;;;:::o
Swarm Source
ipfs://5813898635073fdc0eeb5b47f375631f516bf8a83191cd6001c43b6f255b94d1
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.