Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
X
Compiler Version
v0.8.4+commit.c7e474f2
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2022-10-21
*/
// SPDX-License-Identifier: Unlicensed
pragma solidity ^0.8.4;
abstract contract Context {
function _msgSender() internal view virtual returns (address payable) {
return payable(msg.sender);
}
function _msgData() internal view virtual returns (bytes memory) {
this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
return msg.data;
}
}
interface IERC20 {
function totalSupply() external view returns (uint256);
function balanceOf(address account) external view returns (uint256);
function transfer(address recipient, uint256 amount) external returns (bool);
function allowance(address owner, address spender) external view returns (uint256);
function approve(address spender, uint256 amount) external returns (bool);
function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(address indexed owner, address indexed spender, uint256 value);
}
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;
}
function mod(uint256 a, uint256 b) internal pure returns (uint256) {
return mod(a, b, "SafeMath: modulo by zero");
}
function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b != 0, errorMessage);
return a % b;
}
}
library Address {
function isContract(address account) internal view returns (bool) {
// According to EIP-1052, 0x0 is the value returned for not-yet created accounts
// and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
// for accounts without code, i.e. `keccak256('')`
bytes32 codehash;
bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
// solhint-disable-next-line no-inline-assembly
assembly { codehash := extcodehash(account) }
return (codehash != accountHash && codehash != 0x0);
}
function sendValue(address payable recipient, uint256 amount) internal {
require(address(this).balance >= amount, "Address: insufficient balance");
// solhint-disable-next-line avoid-low-level-calls, avoid-call-value
(bool success, ) = recipient.call{ value: amount }("");
require(success, "Address: unable to send value, recipient may have reverted");
}
function functionCall(address target, bytes memory data) internal returns (bytes memory) {
return functionCall(target, data, "Address: low-level call failed");
}
function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
return _functionCallWithValue(target, data, 0, errorMessage);
}
function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
}
function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
require(address(this).balance >= value, "Address: insufficient balance for call");
return _functionCallWithValue(target, data, value, errorMessage);
}
function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
require(isContract(target), "Address: call to non-contract");
(bool success, bytes memory returndata) = target.call{ value: weiValue }(data);
if (success) {
return returndata;
} else {
if (returndata.length > 0) {
assembly {
let returndata_size := mload(returndata)
revert(add(32, returndata), returndata_size)
}
} else {
revert(errorMessage);
}
}
}
}
contract Ownable is Context {
address private _owner;
address private _previousOwner;
uint256 private _lockTime;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
constructor () {
address msgSender = _msgSender();
_owner = msgSender;
emit OwnershipTransferred(address(0), msgSender);
}
function owner() public view returns (address) {
return _owner;
}
modifier onlyOwner() {
require(_owner == _msgSender(), "Ownable: caller is not the owner");
_;
}
function waiveOwnership() public virtual onlyOwner {
emit OwnershipTransferred(_owner, address(0));
_owner = address(0);
}
function transferOwnership(address newOwner) public virtual onlyOwner {
require(newOwner != address(0), "Ownable: new owner is the zero address");
emit OwnershipTransferred(_owner, newOwner);
_owner = newOwner;
}
function getUnlockTime() public view returns (uint256) {
return _lockTime;
}
function getTime() public view returns (uint256) {
return block.timestamp;
}
function lock(uint256 time) public virtual onlyOwner {
_previousOwner = _owner;
_owner = address(0);
_lockTime = block.timestamp + time;
emit OwnershipTransferred(_owner, address(0));
}
function unlock() public virtual {
require(_previousOwner == msg.sender, "You don't have permission to unlock");
require(block.timestamp > _lockTime , "Contract is locked until 7 days");
emit OwnershipTransferred(_owner, _previousOwner);
_owner = _previousOwner;
}
}
interface IUniswapV2Factory {
event PairCreated(address indexed token0, address indexed token1, address pair, uint);
function feeTo() external view returns (address);
function feeToSetter() external view returns (address);
function getPair(address tokenA, address tokenB) external view returns (address pair);
function allPairs(uint) external view returns (address pair);
function allPairsLength() external view returns (uint);
function createPair(address tokenA, address tokenB) external returns (address pair);
function setFeeTo(address) external;
function setFeeToSetter(address) external;
}
interface IUniswapV2Pair {
event Approval(address indexed owner, address indexed spender, uint value);
event Transfer(address indexed from, address indexed to, uint value);
function name() external pure returns (string memory);
function symbol() external pure returns (string memory);
function decimals() external pure returns (uint8);
function totalSupply() external view returns (uint);
function balanceOf(address owner) external view returns (uint);
function allowance(address owner, address spender) external view returns (uint);
function approve(address spender, uint value) external returns (bool);
function transfer(address to, uint value) external returns (bool);
function transferFrom(address from, address to, uint value) external returns (bool);
function DOMAIN_SEPARATOR() external view returns (bytes32);
function PERMIT_TYPEHASH() external pure returns (bytes32);
function nonces(address owner) external view returns (uint);
function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
event Swap(
address indexed sender,
uint amount0In,
uint amount1In,
uint amount0Out,
uint amount1Out,
address indexed to
);
event Sync(uint112 reserve0, uint112 reserve1);
function MINIMUM_LIQUIDITY() external pure returns (uint);
function factory() external view returns (address);
function token0() external view returns (address);
function token1() external view returns (address);
function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
function price0CumulativeLast() external view returns (uint);
function price1CumulativeLast() external view returns (uint);
function kLast() external view returns (uint);
function burn(address to) external returns (uint amount0, uint amount1);
function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
function skim(address to) external;
function sync() external;
function initialize(address, address) external;
}
interface 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 X is Context,IERC20, Ownable {
using SafeMath for uint256;
using Address for address;
string private _name = "$7";
string private _symbol = "$7";
uint8 private _decimals = 0;
address payable public marketingWalletAddress = payable(0x209ce319A88d1057BA87630f64D9cc4f2ef99a61); // Marketing Address
address payable public teamWalletAddress = payable(0x209ce319A88d1057BA87630f64D9cc4f2ef99a61); // Team Address
address public immutable deadAddress = 0x000000000000000000000000000000000000dEaD;
mapping (address => uint256) _balances;
mapping (address => mapping (address => uint256)) private _allowances;
mapping (address => bool) public isExcludedFromFee;
mapping (address => bool) public isWalletLimitExempt;
mapping (address => bool) public isTxLimitExempt;
mapping (address => bool) public isMarketPair;
uint256 public _buyLiquidityFee = 0;
uint256 public _buyMarketingFee = 0;
uint256 public _buyTeamFee = 0;
uint256 public _sellLiquidityFee = 0;
uint256 public _sellMarketingFee = 0;
uint256 public _sellTeamFee = 0 ;
uint256 public _liquidityShare = 0;
uint256 public _marketingShare = 8;
uint256 public _teamShare = 0;
uint256 public _totalTaxIfBuying = 0;
uint256 public _totalTaxIfSelling = 0;
uint256 public _totalDistributionShares = 0;
uint256 private _totalSupply = 10000000000000 * 10**0* 10**0 * 10**_decimals;
uint256 public _maxTxAmount = 10000000000000 * 10**0 * 10**0* 10**_decimals;
uint256 public _walletMax = 10000000000000 * 10**0 * 10**0* 10**_decimals;
uint256 private minimumTokensBeforeSwap = 100000000 * 10**0* 10**_decimals;
IUniswapV2Router02 public uniswapV2Router;
address public uniswapPair;
bool inSwapAndLiquify;
bool public swapAndLiquifyEnabled = true;
bool public swapAndLiquifyByLimitOnly = false;
bool public checkWalletLimit = true;
event SwapAndLiquifyEnabledUpdated(bool enabled);
event SwapAndLiquify(
uint256 tokensSwapped,
uint256 ethReceived,
uint256 tokensIntoLiqudity
);
event SwapETHForTokens(
uint256 amountIn,
address[] path
);
event SwapTokensForETH(
uint256 amountIn,
address[] path
);
modifier lockTheSwap {
inSwapAndLiquify = true;
_;
inSwapAndLiquify = false;
}
constructor () {
IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
uniswapPair = IUniswapV2Factory(_uniswapV2Router.factory())
.createPair(address(this), _uniswapV2Router.WETH());
uniswapV2Router = _uniswapV2Router;
_allowances[address(this)][address(uniswapV2Router)] = _totalSupply;
isExcludedFromFee[owner()] = true;
isExcludedFromFee[address(this)] = true;
_totalTaxIfBuying = _buyLiquidityFee.add(_buyMarketingFee).add(_buyTeamFee);
_totalTaxIfSelling = _sellLiquidityFee.add(_sellMarketingFee).add(_sellTeamFee);
_totalDistributionShares = _liquidityShare.add(_marketingShare).add(_teamShare);
isWalletLimitExempt[owner()] = true;
isWalletLimitExempt[address(uniswapPair)] = true;
isWalletLimitExempt[address(this)] = true;
isTxLimitExempt[owner()] = true;
isTxLimitExempt[address(this)] = true;
isMarketPair[address(uniswapPair)] = true;
_balances[_msgSender()] = _totalSupply;
emit Transfer(address(0), _msgSender(), _totalSupply);
}
function name() public view returns (string memory) {
return _name;
}
function symbol() public view returns (string memory) {
return _symbol;
}
function decimals() public view returns (uint8) {
return _decimals;
}
function totalSupply() public view override returns (uint256) {
return _totalSupply;
}
function balanceOf(address account) public view override returns (uint256) {
return _balances[account];
}
function allowance(address owner, address spender) public view override returns (uint256) {
return _allowances[owner][spender];
}
function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
_approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
return true;
}
function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
_approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
return true;
}
function minimumTokensBeforeSwapAmount() public view returns (uint256) {
return minimumTokensBeforeSwap;
}
function approve(address spender, uint256 amount) public override returns (bool) {
_approve(_msgSender(), spender, amount);
return true;
}
function _approve(address owner, address spender, uint256 amount) private {
require(owner != address(0), "ERC20: approve from the zero address");
require(spender != address(0), "ERC20: approve to the zero address");
_allowances[owner][spender] = amount;
emit Approval(owner, spender, amount);
}
function setMarketPairStatus(address account, bool newValue) public onlyOwner {
isMarketPair[account] = newValue;
}
function setIsTxLimitExempt(address holder, bool exempt) external onlyOwner {
isTxLimitExempt[holder] = exempt;
}
function setIsExcludedFromFee(address account, bool newValue) public onlyOwner {
isExcludedFromFee[account] = newValue;
}
function setBuyTaxes(uint256 newLiquidityTax, uint256 newMarketingTax, uint256 newTeamTax) external onlyOwner() {
_buyLiquidityFee = newLiquidityTax;
_buyMarketingFee = newMarketingTax;
_buyTeamFee = newTeamTax;
_totalTaxIfBuying = _buyLiquidityFee.add(_buyMarketingFee).add(_buyTeamFee);
}
function setSellTaxes(uint256 newLiquidityTax, uint256 newMarketingTax, uint256 newTeamTax) external onlyOwner() {
_sellLiquidityFee = newLiquidityTax;
_sellMarketingFee = newMarketingTax;
_sellTeamFee = newTeamTax;
_totalTaxIfSelling = _sellLiquidityFee.add(_sellMarketingFee).add(_sellTeamFee);
}
function setDistributionSettings(uint256 newLiquidityShare, uint256 newMarketingShare, uint256 newTeamShare) external onlyOwner() {
_liquidityShare = newLiquidityShare;
_marketingShare = newMarketingShare;
_teamShare = newTeamShare;
_totalDistributionShares = _liquidityShare.add(_marketingShare).add(_teamShare);
}
function setMaxTxAmount(uint256 maxTxAmount) external onlyOwner() {
_maxTxAmount = maxTxAmount;
}
function enableDisableWalletLimit(bool newValue) external onlyOwner {
checkWalletLimit = newValue;
}
function setIsWalletLimitExempt(address holder, bool exempt) external onlyOwner {
isWalletLimitExempt[holder] = exempt;
}
function setWalletLimit(uint256 newLimit) external onlyOwner {
_walletMax = newLimit;
}
function setNumTokensBeforeSwap(uint256 newLimit) external onlyOwner() {
minimumTokensBeforeSwap = newLimit;
}
function setMarketingWalletAddress(address newAddress) external onlyOwner() {
marketingWalletAddress = payable(newAddress);
}
function setTeamWalletAddress(address newAddress) external onlyOwner() {
teamWalletAddress = payable(newAddress);
}
function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner {
swapAndLiquifyEnabled = _enabled;
emit SwapAndLiquifyEnabledUpdated(_enabled);
}
function setSwapAndLiquifyByLimitOnly(bool newValue) public onlyOwner {
swapAndLiquifyByLimitOnly = newValue;
}
function getCirculatingSupply() public view returns (uint256) {
return _totalSupply.sub(balanceOf(deadAddress));
}
function transferToAddressETH(address payable recipient, uint256 amount) private {
recipient.transfer(amount);
}
function changeRouterVersion(address newRouterAddress) public onlyOwner returns(address newPairAddress) {
IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(newRouterAddress);
newPairAddress = IUniswapV2Factory(_uniswapV2Router.factory()).getPair(address(this), _uniswapV2Router.WETH());
if(newPairAddress == address(0)) //Create If Doesnt exist
{
newPairAddress = IUniswapV2Factory(_uniswapV2Router.factory())
.createPair(address(this), _uniswapV2Router.WETH());
}
uniswapPair = newPairAddress; //Set new pair address
uniswapV2Router = _uniswapV2Router; //Set new router address
isWalletLimitExempt[address(uniswapPair)] = true;
isMarketPair[address(uniswapPair)] = true;
}
//to recieve ETH from uniswapV2Router when swaping
receive() external payable {}
function transfer(address recipient, uint256 amount) public override returns (bool) {
_transfer(_msgSender(), recipient, amount);
return true;
}
function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
_transfer(sender, recipient, amount);
_approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
return true;
}
function _transfer(address sender, address recipient, uint256 amount) private returns (bool) {
require(sender != address(0), "ERC20: transfer from the zero address");
require(recipient != address(0), "ERC20: transfer to the zero address");
if(inSwapAndLiquify)
{
return _basicTransfer(sender, recipient, amount);
}
else
{
if(!isTxLimitExempt[sender] && !isTxLimitExempt[recipient]) {
require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
}
uint256 contractTokenBalance = balanceOf(address(this));
bool overMinimumTokenBalance = contractTokenBalance >= minimumTokensBeforeSwap;
if (overMinimumTokenBalance && !inSwapAndLiquify && !isMarketPair[sender] && swapAndLiquifyEnabled)
{
if(swapAndLiquifyByLimitOnly)
contractTokenBalance = minimumTokensBeforeSwap;
swapAndLiquify(contractTokenBalance);
}
_balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
uint256 finalAmount = (isExcludedFromFee[sender] || isExcludedFromFee[recipient]) ?
amount : takeFee(sender, recipient, amount);
if(checkWalletLimit && !isWalletLimitExempt[recipient])
require(balanceOf(recipient).add(finalAmount) <= _walletMax);
_balances[recipient] = _balances[recipient].add(finalAmount);
emit Transfer(sender, recipient, finalAmount);
return true;
}
}
function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
_balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
_balances[recipient] = _balances[recipient].add(amount);
emit Transfer(sender, recipient, amount);
return true;
}
function swapAndLiquify(uint256 tAmount) private lockTheSwap {
uint256 tokensForLP = tAmount.mul(_liquidityShare).div(_totalDistributionShares).div(2);
uint256 tokensForSwap = tAmount.sub(tokensForLP);
swapTokensForEth(tokensForSwap);
uint256 amountReceived = address(this).balance;
uint256 totalBNBFee = _totalDistributionShares.sub(_liquidityShare.div(2));
uint256 amountBNBLiquidity = amountReceived.mul(_liquidityShare).div(totalBNBFee).div(2);
uint256 amountBNBTeam = amountReceived.mul(_teamShare).div(totalBNBFee);
uint256 amountBNBMarketing = amountReceived.sub(amountBNBLiquidity).sub(amountBNBTeam);
if(amountBNBMarketing > 0)
transferToAddressETH(marketingWalletAddress, amountBNBMarketing);
if(amountBNBTeam > 0)
transferToAddressETH(teamWalletAddress, amountBNBTeam);
if(amountBNBLiquidity > 0 && tokensForLP > 0)
addLiquidity(tokensForLP, amountBNBLiquidity);
}
function swapTokensForEth(uint256 tokenAmount) private {
// generate the uniswap pair path of token -> weth
address[] memory path = new address[](2);
path[0] = address(this);
path[1] = uniswapV2Router.WETH();
_approve(address(this), address(uniswapV2Router), tokenAmount);
// make the swap
uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
tokenAmount,
0, // accept any amount of ETH
path,
address(this), // The contract
block.timestamp
);
emit SwapTokensForETH(tokenAmount, path);
}
function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
// approve token transfer to cover all possible scenarios
_approve(address(this), address(uniswapV2Router), tokenAmount);
// add the liquidity
uniswapV2Router.addLiquidityETH{value: ethAmount}(
address(this),
tokenAmount,
0, // slippage is unavoidable
0, // slippage is unavoidable
owner(),
block.timestamp
);
}
function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
uint256 feeAmount = 0;
if(isMarketPair[sender]) {
feeAmount = amount.mul(_totalTaxIfBuying).div(100);
}
else if(isMarketPair[recipient]) {
feeAmount = amount.mul(_totalTaxIfSelling).div(100);
}
if(feeAmount > 0) {
_balances[address(this)] = _balances[address(this)].add(feeAmount);
emit Transfer(sender, address(this), feeAmount);
}
return amount.sub(feeAmount);
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"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"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapETHForTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","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":"_buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyTeamFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellTeamFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_teamShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalDistributionShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxIfBuying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxIfSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[{"internalType":"address","name":"newRouterAddress","type":"address"}],"name":"changeRouterVersion","outputs":[{"internalType":"address","name":"newPairAddress","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"checkWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"enableDisableWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getUnlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMarketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWalletLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumTokensBeforeSwapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiquidityTax","type":"uint256"},{"internalType":"uint256","name":"newMarketingTax","type":"uint256"},{"internalType":"uint256","name":"newTeamTax","type":"uint256"}],"name":"setBuyTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiquidityShare","type":"uint256"},{"internalType":"uint256","name":"newMarketingShare","type":"uint256"},{"internalType":"uint256","name":"newTeamShare","type":"uint256"}],"name":"setDistributionSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setIsExcludedFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsWalletLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setMarketPairStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setMarketingWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setNumTokensBeforeSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiquidityTax","type":"uint256"},{"internalType":"uint256","name":"newMarketingTax","type":"uint256"},{"internalType":"uint256","name":"newTeamTax","type":"uint256"}],"name":"setSellTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setSwapAndLiquifyByLimitOnly","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setTeamWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyByLimitOnly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"teamWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"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":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"waiveOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
60e0604052600260a081905261243760f01b60c090815262000025916003919062000690565b5060408051808201909152600280825261243760f01b6020909201918252620000519160049162000690565b506005805474209ce319a88d1057ba87630f64d9cc4f2ef99a61006001600160a81b0319909116179055600680546001600160a01b03191673209ce319a88d1057ba87630f64d9cc4f2ef99a611790556ddead0000000000000000000000006080526000600d819055600e819055600f819055601081905560118190556012819055601381905560086014556015819055601681905560178190556018819055620000fe90600a620007c3565b62000110906509184e72a0006200088f565b601955600554620001269060ff16600a620007c3565b62000138906509184e72a0006200088f565b601a556005546200014e9060ff16600a620007c3565b62000160906509184e72a0006200088f565b601b55600554620001769060ff16600a620007c3565b62000186906305f5e1006200088f565b601c55601e805462ffffff60a81b19166201000160a81b179055348015620001ad57600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200024257600080fd5b505afa15801562000257573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200027d919062000736565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620002c657600080fd5b505afa158015620002db573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000301919062000736565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156200034a57600080fd5b505af11580156200035f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000385919062000736565b601e80546001600160a01b039283166001600160a01b031991821617909155601d8054928416929091168217905560195430600090815260086020908152604080832094835293905291822055600190600990620003eb6000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff1995861617905530815260098352208054909216600117909155600f54600e54600d5462000461936200044d92906200185162000621821b17901c565b6200062160201b620018511790919060201c565b6016819055506200048c6012546200044d6011546010546200062160201b620018511790919060201c565b601781905550620004b76015546200044d6014546013546200062160201b620018511790919060201c565b6018556001600a6000620004d36000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055601e549091168152600a90925280822080548416600190811790915530835290822080549093168117909255600b90620005436000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055308152600b8452828120805486166001908117909155601e549092168152600c90935290822080549093161790915560195490600790620005af3390565b6001600160a01b03168152602081019190915260400160002055336001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6019546040516200061291815260200190565b60405180910390a35062000904565b6000806200063083856200075f565b905083811015620006875760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640160405180910390fd5b90505b92915050565b8280546200069e90620008b1565b90600052602060002090601f016020900481019282620006c257600085556200070d565b82601f10620006dd57805160ff19168380011785556200070d565b828001600101855582156200070d579182015b828111156200070d578251825591602001919060010190620006f0565b506200071b9291506200071f565b5090565b5b808211156200071b576000815560010162000720565b60006020828403121562000748578081fd5b81516001600160a01b038116811462000687578182fd5b60008219821115620007755762000775620008ee565b500190565b600181815b80851115620007bb5781600019048211156200079f576200079f620008ee565b80851615620007ad57918102915b93841c93908002906200077f565b509250929050565b6000620007d460ff841683620007db565b9392505050565b600082620007ec575060016200068a565b81620007fb575060006200068a565b81600181146200081457600281146200081f576200083f565b60019150506200068a565b60ff841115620008335762000833620008ee565b50506001821b6200068a565b5060208310610133831016604e8410600b841016171562000864575081810a6200068a565b6200087083836200077a565b8060001904821115620008875762000887620008ee565b029392505050565b6000816000190483118215151615620008ac57620008ac620008ee565b500290565b600181811c90821680620008c657607f821691505b60208210811415620008e857634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60805160601c6129626200092a600039600081816105430152610dce01526129626000f3fe6080604052600436106103b15760003560e01c80638b42507f116101e7578063c816841b1161010d578063dd62ed3e116100a0578063f1d5f5171161006f578063f1d5f51714610aed578063f2fde38b14610b0d578063f84ba65d14610b2d578063f872858a14610b4d57600080fd5b8063dd62ed3e14610a51578063ec28438a14610a97578063ef422a1814610ab7578063f0cd1dac14610ad757600080fd5b8063d158272d116100dc578063d158272d146109d5578063da00097d146109fa578063dc44b6a014610a1b578063dd46706414610a3157600080fd5b8063c816841b14610959578063c860795214610979578063c867d60b1461098f578063cab03471146109bf57600080fd5b8063a5d69d1f11610185578063c2d4640e11610154578063c2d4640e146108ed578063c469b6dd1461090d578063c49b9a8014610923578063c5d241891461094357600080fd5b8063a5d69d1f14610882578063a69df4b5146108a2578063a83f53a7146108b7578063a9059cbb146108cd57600080fd5b806395d89b41116101c157806395d89b4114610822578063a073d37f14610837578063a08e671f1461084c578063a457c2d71461086257600080fd5b80638b42507f146107bf5780638da5cb5b146107ef578063914eb66a1461080d57600080fd5b80633b97084a116102d7578063602bc62b1161026a578063807c2d9c11610239578063807c2d9c1461075d57806382eefb4314610773578063844d591c1461078957806388790a68146107a957600080fd5b8063602bc62b146106e657806361a23c69146106fb57806370a08231146107115780637d1db4a51461074757600080fd5b80635342acb4116102a65780635342acb41461066d578063557ed1ba1461069d57806357a5802f146106b05780635881f3ef146106c657600080fd5b80633b97084a146105dc5780633ecad271146105fc5780634a74bb021461062c5780634cb80fd51461064d57600080fd5b80632198cf6c1161034f5780632b112e491161031e5780632b112e49146105655780632c4b23341461057a578063313ce5671461059a57806339509351146105bc57600080fd5b80632198cf6c146104d157806323b872dd146104f15780632563ae831461051157806327c8f8351461053157600080fd5b80631245e3471161038b5780631245e3471461043a5780631694505e1461047257806318160ddd146104925780631870517a146104b157600080fd5b806306fdde03146103bd57806308733214146103e8578063095ea7b31461040a57600080fd5b366103b857005b600080fd5b3480156103c957600080fd5b506103d2610b6e565b6040516103df9190612703565b60405180910390f35b3480156103f457600080fd5b50610408610403366004612668565b610c00565b005b34801561041657600080fd5b5061042a61042536600461260b565b610c5e565b60405190151581526020016103df565b34801561044657600080fd5b5060065461045a906001600160a01b031681565b6040516001600160a01b0390911681526020016103df565b34801561047e57600080fd5b50601d5461045a906001600160a01b031681565b34801561049e57600080fd5b506019545b6040519081526020016103df565b3480156104bd57600080fd5b506104086104cc366004612668565b610c75565b3480156104dd57600080fd5b506104086104ec3660046125d7565b610cc4565b3480156104fd57600080fd5b5061042a61050c366004612597565b610d19565b34801561051d57600080fd5b5061040861052c366004612636565b610d84565b34801561053d57600080fd5b5061045a7f000000000000000000000000000000000000000000000000000000000000000081565b34801561057157600080fd5b506104a3610dcc565b34801561058657600080fd5b50610408610595366004612527565b610e16565b3480156105a657600080fd5b5060055460405160ff90911681526020016103df565b3480156105c857600080fd5b5061042a6105d736600461260b565b610e62565b3480156105e857600080fd5b506104086105f7366004612650565b610e98565b34801561060857600080fd5b5061042a610617366004612527565b600c6020526000908152604090205460ff1681565b34801561063857600080fd5b50601e5461042a90600160a81b900460ff1681565b34801561065957600080fd5b50610408610668366004612527565b610ec7565b34801561067957600080fd5b5061042a610688366004612527565b60096020526000908152604090205460ff1681565b3480156106a957600080fd5b50426104a3565b3480156106bc57600080fd5b506104a360135481565b3480156106d257600080fd5b5061045a6106e1366004612527565b610f19565b3480156106f257600080fd5b506002546104a3565b34801561070757600080fd5b506104a360145481565b34801561071d57600080fd5b506104a361072c366004612527565b6001600160a01b031660009081526007602052604090205490565b34801561075357600080fd5b506104a3601a5481565b34801561076957600080fd5b506104a3601b5481565b34801561077f57600080fd5b506104a360175481565b34801561079557600080fd5b506104086107a43660046125d7565b6112ab565b3480156107b557600080fd5b506104a360105481565b3480156107cb57600080fd5b5061042a6107da366004612527565b600b6020526000908152604090205460ff1681565b3480156107fb57600080fd5b506000546001600160a01b031661045a565b34801561081957600080fd5b50610408611300565b34801561082e57600080fd5b506103d2611362565b34801561084357600080fd5b50601c546104a3565b34801561085857600080fd5b506104a360185481565b34801561086e57600080fd5b5061042a61087d36600461260b565b611371565b34801561088e57600080fd5b5061040861089d366004612636565b6113c0565b3480156108ae57600080fd5b50610408611408565b3480156108c357600080fd5b506104a360155481565b3480156108d957600080fd5b5061042a6108e836600461260b565b61150e565b3480156108f957600080fd5b50610408610908366004612668565b61151b565b34801561091957600080fd5b506104a3600f5481565b34801561092f57600080fd5b5061040861093e366004612636565b61156a565b34801561094f57600080fd5b506104a3600e5481565b34801561096557600080fd5b50601e5461045a906001600160a01b031681565b34801561098557600080fd5b506104a360115481565b34801561099b57600080fd5b5061042a6109aa366004612527565b600a6020526000908152604090205460ff1681565b3480156109cb57600080fd5b506104a360125481565b3480156109e157600080fd5b5060055461045a9061010090046001600160a01b031681565b348015610a0657600080fd5b50601e5461042a90600160b01b900460ff1681565b348015610a2757600080fd5b506104a3600d5481565b348015610a3d57600080fd5b50610408610a4c366004612650565b6115ec565b348015610a5d57600080fd5b506104a3610a6c36600461255f565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b348015610aa357600080fd5b50610408610ab2366004612650565b611671565b348015610ac357600080fd5b50610408610ad23660046125d7565b6116a0565b348015610ae357600080fd5b506104a360165481565b348015610af957600080fd5b50610408610b08366004612650565b6116f5565b348015610b1957600080fd5b50610408610b28366004612527565b611724565b348015610b3957600080fd5b50610408610b483660046125d7565b6117fc565b348015610b5957600080fd5b50601e5461042a90600160b81b900460ff1681565b606060038054610b7d90612856565b80601f0160208091040260200160405190810160405280929190818152602001828054610ba990612856565b8015610bf65780601f10610bcb57610100808354040283529160200191610bf6565b820191906000526020600020905b815481529060010190602001808311610bd957829003601f168201915b5050505050905090565b6000546001600160a01b03163314610c335760405162461bcd60e51b8152600401610c2a90612756565b60405180910390fd5b601083905560118290556012819055610c5681610c508585611851565b90611851565b601755505050565b6000610c6b3384846118b0565b5060015b92915050565b6000546001600160a01b03163314610c9f5760405162461bcd60e51b8152600401610c2a90612756565b600d839055600e829055600f819055610cbc81610c508585611851565b601655505050565b6000546001600160a01b03163314610cee5760405162461bcd60e51b8152600401610c2a90612756565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b6000610d268484846119d4565b50610d798433610d74856040518060600160405280602881526020016128c0602891396001600160a01b038a1660009081526008602090815260408083203384529091529020549190611da3565b6118b0565b5060015b9392505050565b6000546001600160a01b03163314610dae5760405162461bcd60e51b8152600401610c2a90612756565b601e8054911515600160b81b0260ff60b81b19909216919091179055565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316600090815260076020526040812054601954610e1191611ddd565b905090565b6000546001600160a01b03163314610e405760405162461bcd60e51b8152600401610c2a90612756565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b3360008181526008602090815260408083206001600160a01b03871684529091528120549091610c6b918590610d749086611851565b6000546001600160a01b03163314610ec25760405162461bcd60e51b8152600401610c2a90612756565b601c55565b6000546001600160a01b03163314610ef15760405162461bcd60e51b8152600401610c2a90612756565b600580546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b600080546001600160a01b03163314610f445760405162461bcd60e51b8152600401610c2a90612756565b6000829050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610f8257600080fd5b505afa158015610f96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fba9190612543565b6001600160a01b031663e6a4390530836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561100257600080fd5b505afa158015611016573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061103a9190612543565b6040516001600160e01b031960e085901b1681526001600160a01b0392831660048201529116602482015260440160206040518083038186803b15801561108057600080fd5b505afa158015611094573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110b89190612543565b91506001600160a01b03821661123c57806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561110157600080fd5b505afa158015611115573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111399190612543565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561118157600080fd5b505afa158015611195573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b99190612543565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b15801561120157600080fd5b505af1158015611215573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112399190612543565b91505b601e80546001600160a01b03199081166001600160a01b038581169182178455601d8054909316948116949094179091556000908152600a60209081526040808320805460ff19908116600190811790925594549095168352600c909152902080549091169091179055919050565b6000546001600160a01b031633146112d55760405162461bcd60e51b8152600401610c2a90612756565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461132a5760405162461bcd60e51b8152600401610c2a90612756565b600080546040516001600160a01b03909116906000805160206128e8833981519152908390a3600080546001600160a01b0319169055565b606060048054610b7d90612856565b6000610c6b3384610d7485604051806060016040528060258152602001612908602591393360009081526008602090815260408083206001600160a01b038d1684529091529020549190611da3565b6000546001600160a01b031633146113ea5760405162461bcd60e51b8152600401610c2a90612756565b601e8054911515600160b01b0260ff60b01b19909216919091179055565b6001546001600160a01b0316331461146e5760405162461bcd60e51b815260206004820152602360248201527f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6044820152626f636b60e81b6064820152608401610c2a565b60025442116114bf5760405162461bcd60e51b815260206004820152601f60248201527f436f6e7472616374206973206c6f636b656420756e74696c20372064617973006044820152606401610c2a565b600154600080546040516001600160a01b0393841693909116916000805160206128e883398151915291a3600154600080546001600160a01b0319166001600160a01b03909216919091179055565b6000610d793384846119d4565b6000546001600160a01b031633146115455760405162461bcd60e51b8152600401610c2a90612756565b60138390556014829055601581905561156281610c508585611851565b601855505050565b6000546001600160a01b031633146115945760405162461bcd60e51b8152600401610c2a90612756565b601e8054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159906115e190831515815260200190565b60405180910390a150565b6000546001600160a01b031633146116165760405162461bcd60e51b8152600401610c2a90612756565b60008054600180546001600160a01b03199081166001600160a01b0384161790915516905561164581426127e8565b600255600080546040516001600160a01b03909116906000805160206128e8833981519152908390a350565b6000546001600160a01b0316331461169b5760405162461bcd60e51b8152600401610c2a90612756565b601a55565b6000546001600160a01b031633146116ca5760405162461bcd60e51b8152600401610c2a90612756565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461171f5760405162461bcd60e51b8152600401610c2a90612756565b601b55565b6000546001600160a01b0316331461174e5760405162461bcd60e51b8152600401610c2a90612756565b6001600160a01b0381166117b35760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610c2a565b600080546040516001600160a01b03808516939216916000805160206128e883398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146118265760405162461bcd60e51b8152600401610c2a90612756565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b60008061185e83856127e8565b905083811015610d7d5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610c2a565b6001600160a01b0383166119125760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610c2a565b6001600160a01b0382166119735760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610c2a565b6001600160a01b0383811660008181526008602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b038416611a3a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610c2a565b6001600160a01b038316611a9c5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610c2a565b601e54600160a01b900460ff1615611ac057611ab9848484611e1f565b9050610d7d565b6001600160a01b0384166000908152600b602052604090205460ff16158015611b0257506001600160a01b0383166000908152600b602052604090205460ff16155b15611b6a57601a54821115611b6a5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610c2a565b30600090815260076020526040902054601c5481108015908190611b985750601e54600160a01b900460ff16155b8015611bbd57506001600160a01b0386166000908152600c602052604090205460ff16155b8015611bd25750601e54600160a81b900460ff165b15611bf857601e54600160b01b900460ff1615611bef57601c5491505b611bf882611f05565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038916600090815260079091529190912054611c4a918690611da3565b6001600160a01b038716600090815260076020908152604080832093909355600990529081205460ff1680611c9757506001600160a01b03861660009081526009602052604090205460ff165b611cab57611ca6878787612040565b611cad565b845b601e54909150600160b81b900460ff168015611ce257506001600160a01b0386166000908152600a602052604090205460ff16155b15611d1857601b54611d0d82610c50896001600160a01b031660009081526007602052604090205490565b1115611d1857600080fd5b6001600160a01b038616600090815260076020526040902054611d3b9082611851565b6001600160a01b0380881660008181526007602052604090819020939093559151908916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611d8f9085815260200190565b60405180910390a360019350505050610d7d565b60008184841115611dc75760405162461bcd60e51b8152600401610c2a9190612703565b506000611dd4848661283f565b95945050505050565b6000610d7d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611da3565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600790915291822054611e70918490611da3565b6001600160a01b038086166000908152600760205260408082209390935590851681522054611e9f9083611851565b6001600160a01b0380851660008181526007602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611ef39086815260200190565b60405180910390a35060019392505050565b601e805460ff60a01b1916600160a01b179055601854601354600091611f3b91600291611f359182908790612146565b906121c5565b90506000611f498383611ddd565b9050611f5481612207565b6013544790600090611f7490611f6b9060026121c5565b60185490611ddd565b90506000611f966002611f3584611f356013548861214690919063ffffffff16565b90506000611fb383611f356015548761214690919063ffffffff16565b90506000611fcb82611fc58786611ddd565b90611ddd565b90508015611fee57600554611fee9061010090046001600160a01b0316826123c5565b811561200a5760065461200a906001600160a01b0316836123c5565b60008311801561201a5750600087115b15612029576120298784612400565b5050601e805460ff60a01b19169055505050505050565b6001600160a01b0383166000908152600c6020526040812054819060ff16156120845761207d6064611f356016548661214690919063ffffffff16565b90506120c2565b6001600160a01b0384166000908152600c602052604090205460ff16156120c2576120bf6064611f356017548661214690919063ffffffff16565b90505b801561213c57306000908152600760205260409020546120e29082611851565b30600081815260076020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906121339085815260200190565b60405180910390a35b611dd48382611ddd565b60008261215557506000610c6f565b60006121618385612820565b90508261216e8583612800565b14610d7d5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610c2a565b6000610d7d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506124e4565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061224a57634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152601d54604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561229e57600080fd5b505afa1580156122b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122d69190612543565b816001815181106122f757634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092010152601d5461231d91309116846118b0565b601d5460405163791ac94760e01b81526001600160a01b039091169063791ac947906123569085906000908690309042906004016127ac565b600060405180830381600087803b15801561237057600080fd5b505af1158015612384573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516123b992919061278b565b60405180910390a15050565b6040516001600160a01b0383169082156108fc029083906000818181858888f193505050501580156123fb573d6000803e3d6000fd5b505050565b601d546124189030906001600160a01b0316846118b0565b601d546001600160a01b031663f305d7198230856000806124416000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b1580156124a457600080fd5b505af11580156124b8573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906124dd9190612693565b5050505050565b600081836125055760405162461bcd60e51b8152600401610c2a9190612703565b506000611dd48486612800565b8035801515811461252257600080fd5b919050565b600060208284031215612538578081fd5b8135610d7d816128a7565b600060208284031215612554578081fd5b8151610d7d816128a7565b60008060408385031215612571578081fd5b823561257c816128a7565b9150602083013561258c816128a7565b809150509250929050565b6000806000606084860312156125ab578081fd5b83356125b6816128a7565b925060208401356125c6816128a7565b929592945050506040919091013590565b600080604083850312156125e9578182fd5b82356125f4816128a7565b915061260260208401612512565b90509250929050565b6000806040838503121561261d578182fd5b8235612628816128a7565b946020939093013593505050565b600060208284031215612647578081fd5b610d7d82612512565b600060208284031215612661578081fd5b5035919050565b60008060006060848603121561267c578283fd5b505081359360208301359350604090920135919050565b6000806000606084860312156126a7578283fd5b8351925060208401519150604084015190509250925092565b6000815180845260208085019450808401835b838110156126f85781516001600160a01b0316875295820195908201906001016126d3565b509495945050505050565b6000602080835283518082850152825b8181101561272f57858101830151858201604001528201612713565b818111156127405783604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b8281526040602082015260006127a460408301846126c0565b949350505050565b85815284602082015260a0604082015260006127cb60a08301866126c0565b6001600160a01b0394909416606083015250608001529392505050565b600082198211156127fb576127fb612891565b500190565b60008261281b57634e487b7160e01b81526012600452602481fd5b500490565b600081600019048311821515161561283a5761283a612891565b500290565b60008282101561285157612851612891565b500390565b600181811c9082168061286a57607f821691505b6020821081141561288b57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b03811681146128bc57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63658be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e045524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122009714929f40b2a3246a7ba92640927622841180bea68fb83d9d5a07593e5d03464736f6c63430008040033
Deployed Bytecode
0x6080604052600436106103b15760003560e01c80638b42507f116101e7578063c816841b1161010d578063dd62ed3e116100a0578063f1d5f5171161006f578063f1d5f51714610aed578063f2fde38b14610b0d578063f84ba65d14610b2d578063f872858a14610b4d57600080fd5b8063dd62ed3e14610a51578063ec28438a14610a97578063ef422a1814610ab7578063f0cd1dac14610ad757600080fd5b8063d158272d116100dc578063d158272d146109d5578063da00097d146109fa578063dc44b6a014610a1b578063dd46706414610a3157600080fd5b8063c816841b14610959578063c860795214610979578063c867d60b1461098f578063cab03471146109bf57600080fd5b8063a5d69d1f11610185578063c2d4640e11610154578063c2d4640e146108ed578063c469b6dd1461090d578063c49b9a8014610923578063c5d241891461094357600080fd5b8063a5d69d1f14610882578063a69df4b5146108a2578063a83f53a7146108b7578063a9059cbb146108cd57600080fd5b806395d89b41116101c157806395d89b4114610822578063a073d37f14610837578063a08e671f1461084c578063a457c2d71461086257600080fd5b80638b42507f146107bf5780638da5cb5b146107ef578063914eb66a1461080d57600080fd5b80633b97084a116102d7578063602bc62b1161026a578063807c2d9c11610239578063807c2d9c1461075d57806382eefb4314610773578063844d591c1461078957806388790a68146107a957600080fd5b8063602bc62b146106e657806361a23c69146106fb57806370a08231146107115780637d1db4a51461074757600080fd5b80635342acb4116102a65780635342acb41461066d578063557ed1ba1461069d57806357a5802f146106b05780635881f3ef146106c657600080fd5b80633b97084a146105dc5780633ecad271146105fc5780634a74bb021461062c5780634cb80fd51461064d57600080fd5b80632198cf6c1161034f5780632b112e491161031e5780632b112e49146105655780632c4b23341461057a578063313ce5671461059a57806339509351146105bc57600080fd5b80632198cf6c146104d157806323b872dd146104f15780632563ae831461051157806327c8f8351461053157600080fd5b80631245e3471161038b5780631245e3471461043a5780631694505e1461047257806318160ddd146104925780631870517a146104b157600080fd5b806306fdde03146103bd57806308733214146103e8578063095ea7b31461040a57600080fd5b366103b857005b600080fd5b3480156103c957600080fd5b506103d2610b6e565b6040516103df9190612703565b60405180910390f35b3480156103f457600080fd5b50610408610403366004612668565b610c00565b005b34801561041657600080fd5b5061042a61042536600461260b565b610c5e565b60405190151581526020016103df565b34801561044657600080fd5b5060065461045a906001600160a01b031681565b6040516001600160a01b0390911681526020016103df565b34801561047e57600080fd5b50601d5461045a906001600160a01b031681565b34801561049e57600080fd5b506019545b6040519081526020016103df565b3480156104bd57600080fd5b506104086104cc366004612668565b610c75565b3480156104dd57600080fd5b506104086104ec3660046125d7565b610cc4565b3480156104fd57600080fd5b5061042a61050c366004612597565b610d19565b34801561051d57600080fd5b5061040861052c366004612636565b610d84565b34801561053d57600080fd5b5061045a7f000000000000000000000000000000000000000000000000000000000000dead81565b34801561057157600080fd5b506104a3610dcc565b34801561058657600080fd5b50610408610595366004612527565b610e16565b3480156105a657600080fd5b5060055460405160ff90911681526020016103df565b3480156105c857600080fd5b5061042a6105d736600461260b565b610e62565b3480156105e857600080fd5b506104086105f7366004612650565b610e98565b34801561060857600080fd5b5061042a610617366004612527565b600c6020526000908152604090205460ff1681565b34801561063857600080fd5b50601e5461042a90600160a81b900460ff1681565b34801561065957600080fd5b50610408610668366004612527565b610ec7565b34801561067957600080fd5b5061042a610688366004612527565b60096020526000908152604090205460ff1681565b3480156106a957600080fd5b50426104a3565b3480156106bc57600080fd5b506104a360135481565b3480156106d257600080fd5b5061045a6106e1366004612527565b610f19565b3480156106f257600080fd5b506002546104a3565b34801561070757600080fd5b506104a360145481565b34801561071d57600080fd5b506104a361072c366004612527565b6001600160a01b031660009081526007602052604090205490565b34801561075357600080fd5b506104a3601a5481565b34801561076957600080fd5b506104a3601b5481565b34801561077f57600080fd5b506104a360175481565b34801561079557600080fd5b506104086107a43660046125d7565b6112ab565b3480156107b557600080fd5b506104a360105481565b3480156107cb57600080fd5b5061042a6107da366004612527565b600b6020526000908152604090205460ff1681565b3480156107fb57600080fd5b506000546001600160a01b031661045a565b34801561081957600080fd5b50610408611300565b34801561082e57600080fd5b506103d2611362565b34801561084357600080fd5b50601c546104a3565b34801561085857600080fd5b506104a360185481565b34801561086e57600080fd5b5061042a61087d36600461260b565b611371565b34801561088e57600080fd5b5061040861089d366004612636565b6113c0565b3480156108ae57600080fd5b50610408611408565b3480156108c357600080fd5b506104a360155481565b3480156108d957600080fd5b5061042a6108e836600461260b565b61150e565b3480156108f957600080fd5b50610408610908366004612668565b61151b565b34801561091957600080fd5b506104a3600f5481565b34801561092f57600080fd5b5061040861093e366004612636565b61156a565b34801561094f57600080fd5b506104a3600e5481565b34801561096557600080fd5b50601e5461045a906001600160a01b031681565b34801561098557600080fd5b506104a360115481565b34801561099b57600080fd5b5061042a6109aa366004612527565b600a6020526000908152604090205460ff1681565b3480156109cb57600080fd5b506104a360125481565b3480156109e157600080fd5b5060055461045a9061010090046001600160a01b031681565b348015610a0657600080fd5b50601e5461042a90600160b01b900460ff1681565b348015610a2757600080fd5b506104a3600d5481565b348015610a3d57600080fd5b50610408610a4c366004612650565b6115ec565b348015610a5d57600080fd5b506104a3610a6c36600461255f565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b348015610aa357600080fd5b50610408610ab2366004612650565b611671565b348015610ac357600080fd5b50610408610ad23660046125d7565b6116a0565b348015610ae357600080fd5b506104a360165481565b348015610af957600080fd5b50610408610b08366004612650565b6116f5565b348015610b1957600080fd5b50610408610b28366004612527565b611724565b348015610b3957600080fd5b50610408610b483660046125d7565b6117fc565b348015610b5957600080fd5b50601e5461042a90600160b81b900460ff1681565b606060038054610b7d90612856565b80601f0160208091040260200160405190810160405280929190818152602001828054610ba990612856565b8015610bf65780601f10610bcb57610100808354040283529160200191610bf6565b820191906000526020600020905b815481529060010190602001808311610bd957829003601f168201915b5050505050905090565b6000546001600160a01b03163314610c335760405162461bcd60e51b8152600401610c2a90612756565b60405180910390fd5b601083905560118290556012819055610c5681610c508585611851565b90611851565b601755505050565b6000610c6b3384846118b0565b5060015b92915050565b6000546001600160a01b03163314610c9f5760405162461bcd60e51b8152600401610c2a90612756565b600d839055600e829055600f819055610cbc81610c508585611851565b601655505050565b6000546001600160a01b03163314610cee5760405162461bcd60e51b8152600401610c2a90612756565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b6000610d268484846119d4565b50610d798433610d74856040518060600160405280602881526020016128c0602891396001600160a01b038a1660009081526008602090815260408083203384529091529020549190611da3565b6118b0565b5060015b9392505050565b6000546001600160a01b03163314610dae5760405162461bcd60e51b8152600401610c2a90612756565b601e8054911515600160b81b0260ff60b81b19909216919091179055565b7f000000000000000000000000000000000000000000000000000000000000dead6001600160a01b0316600090815260076020526040812054601954610e1191611ddd565b905090565b6000546001600160a01b03163314610e405760405162461bcd60e51b8152600401610c2a90612756565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b3360008181526008602090815260408083206001600160a01b03871684529091528120549091610c6b918590610d749086611851565b6000546001600160a01b03163314610ec25760405162461bcd60e51b8152600401610c2a90612756565b601c55565b6000546001600160a01b03163314610ef15760405162461bcd60e51b8152600401610c2a90612756565b600580546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b600080546001600160a01b03163314610f445760405162461bcd60e51b8152600401610c2a90612756565b6000829050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610f8257600080fd5b505afa158015610f96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fba9190612543565b6001600160a01b031663e6a4390530836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561100257600080fd5b505afa158015611016573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061103a9190612543565b6040516001600160e01b031960e085901b1681526001600160a01b0392831660048201529116602482015260440160206040518083038186803b15801561108057600080fd5b505afa158015611094573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110b89190612543565b91506001600160a01b03821661123c57806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561110157600080fd5b505afa158015611115573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111399190612543565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561118157600080fd5b505afa158015611195573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b99190612543565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b15801561120157600080fd5b505af1158015611215573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112399190612543565b91505b601e80546001600160a01b03199081166001600160a01b038581169182178455601d8054909316948116949094179091556000908152600a60209081526040808320805460ff19908116600190811790925594549095168352600c909152902080549091169091179055919050565b6000546001600160a01b031633146112d55760405162461bcd60e51b8152600401610c2a90612756565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461132a5760405162461bcd60e51b8152600401610c2a90612756565b600080546040516001600160a01b03909116906000805160206128e8833981519152908390a3600080546001600160a01b0319169055565b606060048054610b7d90612856565b6000610c6b3384610d7485604051806060016040528060258152602001612908602591393360009081526008602090815260408083206001600160a01b038d1684529091529020549190611da3565b6000546001600160a01b031633146113ea5760405162461bcd60e51b8152600401610c2a90612756565b601e8054911515600160b01b0260ff60b01b19909216919091179055565b6001546001600160a01b0316331461146e5760405162461bcd60e51b815260206004820152602360248201527f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6044820152626f636b60e81b6064820152608401610c2a565b60025442116114bf5760405162461bcd60e51b815260206004820152601f60248201527f436f6e7472616374206973206c6f636b656420756e74696c20372064617973006044820152606401610c2a565b600154600080546040516001600160a01b0393841693909116916000805160206128e883398151915291a3600154600080546001600160a01b0319166001600160a01b03909216919091179055565b6000610d793384846119d4565b6000546001600160a01b031633146115455760405162461bcd60e51b8152600401610c2a90612756565b60138390556014829055601581905561156281610c508585611851565b601855505050565b6000546001600160a01b031633146115945760405162461bcd60e51b8152600401610c2a90612756565b601e8054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159906115e190831515815260200190565b60405180910390a150565b6000546001600160a01b031633146116165760405162461bcd60e51b8152600401610c2a90612756565b60008054600180546001600160a01b03199081166001600160a01b0384161790915516905561164581426127e8565b600255600080546040516001600160a01b03909116906000805160206128e8833981519152908390a350565b6000546001600160a01b0316331461169b5760405162461bcd60e51b8152600401610c2a90612756565b601a55565b6000546001600160a01b031633146116ca5760405162461bcd60e51b8152600401610c2a90612756565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461171f5760405162461bcd60e51b8152600401610c2a90612756565b601b55565b6000546001600160a01b0316331461174e5760405162461bcd60e51b8152600401610c2a90612756565b6001600160a01b0381166117b35760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610c2a565b600080546040516001600160a01b03808516939216916000805160206128e883398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146118265760405162461bcd60e51b8152600401610c2a90612756565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b60008061185e83856127e8565b905083811015610d7d5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610c2a565b6001600160a01b0383166119125760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610c2a565b6001600160a01b0382166119735760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610c2a565b6001600160a01b0383811660008181526008602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b038416611a3a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610c2a565b6001600160a01b038316611a9c5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610c2a565b601e54600160a01b900460ff1615611ac057611ab9848484611e1f565b9050610d7d565b6001600160a01b0384166000908152600b602052604090205460ff16158015611b0257506001600160a01b0383166000908152600b602052604090205460ff16155b15611b6a57601a54821115611b6a5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610c2a565b30600090815260076020526040902054601c5481108015908190611b985750601e54600160a01b900460ff16155b8015611bbd57506001600160a01b0386166000908152600c602052604090205460ff16155b8015611bd25750601e54600160a81b900460ff165b15611bf857601e54600160b01b900460ff1615611bef57601c5491505b611bf882611f05565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038916600090815260079091529190912054611c4a918690611da3565b6001600160a01b038716600090815260076020908152604080832093909355600990529081205460ff1680611c9757506001600160a01b03861660009081526009602052604090205460ff165b611cab57611ca6878787612040565b611cad565b845b601e54909150600160b81b900460ff168015611ce257506001600160a01b0386166000908152600a602052604090205460ff16155b15611d1857601b54611d0d82610c50896001600160a01b031660009081526007602052604090205490565b1115611d1857600080fd5b6001600160a01b038616600090815260076020526040902054611d3b9082611851565b6001600160a01b0380881660008181526007602052604090819020939093559151908916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611d8f9085815260200190565b60405180910390a360019350505050610d7d565b60008184841115611dc75760405162461bcd60e51b8152600401610c2a9190612703565b506000611dd4848661283f565b95945050505050565b6000610d7d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611da3565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600790915291822054611e70918490611da3565b6001600160a01b038086166000908152600760205260408082209390935590851681522054611e9f9083611851565b6001600160a01b0380851660008181526007602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611ef39086815260200190565b60405180910390a35060019392505050565b601e805460ff60a01b1916600160a01b179055601854601354600091611f3b91600291611f359182908790612146565b906121c5565b90506000611f498383611ddd565b9050611f5481612207565b6013544790600090611f7490611f6b9060026121c5565b60185490611ddd565b90506000611f966002611f3584611f356013548861214690919063ffffffff16565b90506000611fb383611f356015548761214690919063ffffffff16565b90506000611fcb82611fc58786611ddd565b90611ddd565b90508015611fee57600554611fee9061010090046001600160a01b0316826123c5565b811561200a5760065461200a906001600160a01b0316836123c5565b60008311801561201a5750600087115b15612029576120298784612400565b5050601e805460ff60a01b19169055505050505050565b6001600160a01b0383166000908152600c6020526040812054819060ff16156120845761207d6064611f356016548661214690919063ffffffff16565b90506120c2565b6001600160a01b0384166000908152600c602052604090205460ff16156120c2576120bf6064611f356017548661214690919063ffffffff16565b90505b801561213c57306000908152600760205260409020546120e29082611851565b30600081815260076020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906121339085815260200190565b60405180910390a35b611dd48382611ddd565b60008261215557506000610c6f565b60006121618385612820565b90508261216e8583612800565b14610d7d5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610c2a565b6000610d7d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506124e4565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061224a57634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152601d54604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561229e57600080fd5b505afa1580156122b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122d69190612543565b816001815181106122f757634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092010152601d5461231d91309116846118b0565b601d5460405163791ac94760e01b81526001600160a01b039091169063791ac947906123569085906000908690309042906004016127ac565b600060405180830381600087803b15801561237057600080fd5b505af1158015612384573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516123b992919061278b565b60405180910390a15050565b6040516001600160a01b0383169082156108fc029083906000818181858888f193505050501580156123fb573d6000803e3d6000fd5b505050565b601d546124189030906001600160a01b0316846118b0565b601d546001600160a01b031663f305d7198230856000806124416000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b1580156124a457600080fd5b505af11580156124b8573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906124dd9190612693565b5050505050565b600081836125055760405162461bcd60e51b8152600401610c2a9190612703565b506000611dd48486612800565b8035801515811461252257600080fd5b919050565b600060208284031215612538578081fd5b8135610d7d816128a7565b600060208284031215612554578081fd5b8151610d7d816128a7565b60008060408385031215612571578081fd5b823561257c816128a7565b9150602083013561258c816128a7565b809150509250929050565b6000806000606084860312156125ab578081fd5b83356125b6816128a7565b925060208401356125c6816128a7565b929592945050506040919091013590565b600080604083850312156125e9578182fd5b82356125f4816128a7565b915061260260208401612512565b90509250929050565b6000806040838503121561261d578182fd5b8235612628816128a7565b946020939093013593505050565b600060208284031215612647578081fd5b610d7d82612512565b600060208284031215612661578081fd5b5035919050565b60008060006060848603121561267c578283fd5b505081359360208301359350604090920135919050565b6000806000606084860312156126a7578283fd5b8351925060208401519150604084015190509250925092565b6000815180845260208085019450808401835b838110156126f85781516001600160a01b0316875295820195908201906001016126d3565b509495945050505050565b6000602080835283518082850152825b8181101561272f57858101830151858201604001528201612713565b818111156127405783604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b8281526040602082015260006127a460408301846126c0565b949350505050565b85815284602082015260a0604082015260006127cb60a08301866126c0565b6001600160a01b0394909416606083015250608001529392505050565b600082198211156127fb576127fb612891565b500190565b60008261281b57634e487b7160e01b81526012600452602481fd5b500490565b600081600019048311821515161561283a5761283a612891565b500290565b60008282101561285157612851612891565b500390565b600181811c9082168061286a57607f821691505b6020821081141561288b57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b03811681146128bc57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63658be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e045524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122009714929f40b2a3246a7ba92640927622841180bea68fb83d9d5a07593e5d03464736f6c63430008040033
Deployed Bytecode Sourcemap
15012:14872:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18750:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21318:341;;;;;;;;;;-1:-1:-1;21318:341:0;;;;;:::i;:::-;;:::i;:::-;;20044:161;;;;;;;;;;-1:-1:-1;20044:161:0;;;;;:::i;:::-;;:::i;:::-;;;5269:14:1;;5262:22;5244:41;;5232:2;5217:18;20044:161:0;5199:92:1;15367:94:0;;;;;;;;;;-1:-1:-1;15367:94:0;;;;-1:-1:-1;;;;;15367:94:0;;;;;;-1:-1:-1;;;;;3915:32:1;;;3897:51;;3885:2;3870:18;15367:94:0;3852:102:1;16773:41:0;;;;;;;;;;-1:-1:-1;16773:41:0;;;;-1:-1:-1;;;;;16773:41:0;;;19027:100;;;;;;;;;;-1:-1:-1;19107:12:0;;19027:100;;;10602:25:1;;;10590:2;10575:18;19027:100:0;10557:76:1;20977:333:0;;;;;;;;;;-1:-1:-1;20977:333:0;;;;;:::i;:::-;;:::i;22281:135::-;;;;;;;;;;-1:-1:-1;22281:135:0;;;;;:::i;:::-;;:::i;24624:313::-;;;;;;;;;;-1:-1:-1;24624:313:0;;;;;:::i;:::-;;:::i;22160:113::-;;;;;;;;;;-1:-1:-1;22160:113:0;;;;;:::i;:::-;;:::i;15484:81::-;;;;;;;;;;;;;;;23266:128;;;;;;;;;;;;;:::i;22813:129::-;;;;;;;;;;-1:-1:-1;22813:129:0;;;;;:::i;:::-;;:::i;18936:83::-;;;;;;;;;;-1:-1:-1;19002:9:0;;18936:83;;19002:9;;;;11704:36:1;;11692:2;11677:18;18936:83:0;11659:87:1;19413:218:0;;;;;;;;;;-1:-1:-1;19413:218:0;;;;;:::i;:::-;;:::i;22534:124::-;;;;;;;;;;-1:-1:-1;22534:124:0;;;;;:::i;:::-;;:::i;15876:45::-;;;;;;;;;;-1:-1:-1;15876:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;16888:40;;;;;;;;;;-1:-1:-1;16888:40:0;;;;-1:-1:-1;;;16888:40:0;;;;;;22666:139;;;;;;;;;;-1:-1:-1;22666:139:0;;;;;:::i;:::-;;:::i;15705:50::-;;;;;;;;;;-1:-1:-1;15705:50:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;6532:90;;;;;;;;;;-1:-1:-1;6599:15:0;6532:90;;16184:34;;;;;;;;;;;;;;;;23540:807;;;;;;;;;;-1:-1:-1;23540:807:0;;;;;:::i;:::-;;:::i;6430:90::-;;;;;;;;;;-1:-1:-1;6503:9:0;;6430:90;;16225:34;;;;;;;;;;;;;;;;19135:119;;;;;;;;;;-1:-1:-1;19135:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;19228:18:0;19201:7;19228:18;;;:9;:18;;;;;;;19135:119;16526:75;;;;;;;;;;;;;;;;16609:73;;;;;;;;;;;;;;;;16347:37;;;;;;;;;;;;;;;;20558:129;;;;;;;;;;-1:-1:-1;20558:129:0;;;;;:::i;:::-;;:::i;16057:36::-;;;;;;;;;;;;;;;;15821:48;;;;;;;;;;-1:-1:-1;15821:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;5800:79;;;;;;;;;;-1:-1:-1;5838:7:0;5865:6;-1:-1:-1;;;;;5865:6:0;5800:79;;6025:145;;;;;;;;;;;;;:::i;18841:87::-;;;;;;;;;;;;;:::i;19916:120::-;;;;;;;;;;-1:-1:-1;20005:23:0;;19916:120;;16391:43;;;;;;;;;;;;;;;;19639:269;;;;;;;;;;-1:-1:-1;19639:269:0;;;;;:::i;:::-;;:::i;23129:125::-;;;;;;;;;;-1:-1:-1;23129:125:0;;;;;:::i;:::-;;:::i;6868:305::-;;;;;;;;;;;;;:::i;16266:29::-;;;;;;;;;;;;;;;;24449:167;;;;;;;;;;-1:-1:-1;24449:167:0;;;;;:::i;:::-;;:::i;21671:358::-;;;;;;;;;;-1:-1:-1;21671:358:0;;;;;:::i;:::-;;:::i;16014:30::-;;;;;;;;;;;;;;;;22950:171;;;;;;;;;;-1:-1:-1;22950:171:0;;;;;:::i;:::-;;:::i;15972:35::-;;;;;;;;;;;;;;;;16821:26;;;;;;;;;;-1:-1:-1;16821:26:0;;;;-1:-1:-1;;;;;16821:26:0;;;16100:36;;;;;;;;;;;;;;;;15762:52;;;;;;;;;;-1:-1:-1;15762:52:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;16143:31;;;;;;;;;;;;;;;;15240:99;;;;;;;;;;-1:-1:-1;15240:99:0;;;;;;;-1:-1:-1;;;;;15240:99:0;;;16935:45;;;;;;;;;;-1:-1:-1;16935:45:0;;;;-1:-1:-1;;;16935:45:0;;;;;;15930:35;;;;;;;;;;;;;;;;6630:226;;;;;;;;;;-1:-1:-1;6630:226:0;;;;;:::i;:::-;;:::i;19262:143::-;;;;;;;;;;-1:-1:-1;19262:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;19370:18:0;;;19343:7;19370:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;19262:143;22041:111;;;;;;;;;;-1:-1:-1;22041:111:0;;;;;:::i;:::-;;:::i;20834:135::-;;;;;;;;;;-1:-1:-1;20834:135:0;;;;;:::i;:::-;;:::i;16304:36::-;;;;;;;;;;;;;;;;22424:102;;;;;;;;;;-1:-1:-1;22424:102:0;;;;;:::i;:::-;;:::i;6178:244::-;;;;;;;;;;-1:-1:-1;6178:244:0;;;;;:::i;:::-;;:::i;20695:127::-;;;;;;;;;;-1:-1:-1;20695:127:0;;;;;:::i;:::-;;:::i;16987:35::-;;;;;;;;;;-1:-1:-1;16987:35:0;;;;-1:-1:-1;;;16987:35:0;;;;;;18750:83;18787:13;18820:5;18813:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18750:83;:::o;21318:341::-;5934:6;;-1:-1:-1;;;;;5934:6:0;198:10;5934:22;5926:67;;;;-1:-1:-1;;;5926:67:0;;;;;;;:::i;:::-;;;;;;;;;21442:17:::1;:35:::0;;;21488:17:::1;:35:::0;;;21534:12:::1;:25:::0;;;21593:58:::1;21549:10:::0;21593:40:::1;21462:15:::0;21508;21593:21:::1;:40::i;:::-;:44:::0;::::1;:58::i;:::-;21572:18;:79:::0;-1:-1:-1;;;21318:341:0:o;20044:161::-;20119:4;20136:39;198:10;20159:7;20168:6;20136:8;:39::i;:::-;-1:-1:-1;20193:4:0;20044:161;;;;;:::o;20977:333::-;5934:6;;-1:-1:-1;;;;;5934:6:0;198:10;5934:22;5926:67;;;;-1:-1:-1;;;5926:67:0;;;;;;;:::i;:::-;21100:16:::1;:34:::0;;;21145:16:::1;:34:::0;;;21190:11:::1;:24:::0;;;21247:55:::1;21204:10:::0;21247:38:::1;21119:15:::0;21164;21247:20:::1;:38::i;:55::-;21227:17;:75:::0;-1:-1:-1;;;20977:333:0:o;22281:135::-;5934:6;;-1:-1:-1;;;;;5934:6:0;198:10;5934:22;5926:67;;;;-1:-1:-1;;;5926:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22372:27:0;;;::::1;;::::0;;;:19:::1;:27;::::0;;;;:36;;-1:-1:-1;;22372:36:0::1;::::0;::::1;;::::0;;;::::1;::::0;;22281:135::o;24624:313::-;24722:4;24739:36;24749:6;24757:9;24768:6;24739:9;:36::i;:::-;-1:-1:-1;24786:121:0;24795:6;198:10;24817:89;24855:6;24817:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;24817:19:0;;;;;;:11;:19;;;;;;;;198:10;24817:33;;;;;;;;;;:37;:89::i;:::-;24786:8;:121::i;:::-;-1:-1:-1;24925:4:0;24624:313;;;;;;:::o;22160:113::-;5934:6;;-1:-1:-1;;;;;5934:6:0;198:10;5934:22;5926:67;;;;-1:-1:-1;;;5926:67:0;;;;;;;:::i;:::-;22238:16:::1;:27:::0;;;::::1;;-1:-1:-1::0;;;22238:27:0::1;-1:-1:-1::0;;;;22238:27:0;;::::1;::::0;;;::::1;::::0;;22160:113::o;23266:128::-;23373:11;-1:-1:-1;;;;;19228:18:0;23319:7;19228:18;;;:9;:18;;;;;;23346:12;;:40;;:16;:40::i;:::-;23339:47;;23266:128;:::o;22813:129::-;5934:6;;-1:-1:-1;;;;;5934:6:0;198:10;5934:22;5926:67;;;;-1:-1:-1;;;5926:67:0;;;;;;;:::i;:::-;22895:17:::1;:39:::0;;-1:-1:-1;;;;;;22895:39:0::1;-1:-1:-1::0;;;;;22895:39:0;;;::::1;::::0;;;::::1;::::0;;22813:129::o;19413:218::-;198:10;19501:4;19550:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;19550:34:0;;;;;;;;;;19501:4;;19518:83;;19541:7;;19550:50;;19589:10;19550:38;:50::i;22534:124::-;5934:6;;-1:-1:-1;;;;;5934:6:0;198:10;5934:22;5926:67;;;;-1:-1:-1;;;5926:67:0;;;;;;;:::i;:::-;22616:23:::1;:34:::0;22534:124::o;22666:139::-;5934:6;;-1:-1:-1;;;;;5934:6:0;198:10;5934:22;5926:67;;;;-1:-1:-1;;;5926:67:0;;;;;;;:::i;:::-;22753:22:::1;:44:::0;;-1:-1:-1;;;;;22753:44:0;;::::1;;;-1:-1:-1::0;;;;;;22753:44:0;;::::1;::::0;;;::::1;::::0;;22666:139::o;23540:807::-;23620:22;5934:6;;-1:-1:-1;;;;;5934:6:0;198:10;5934:22;5926:67;;;;-1:-1:-1;;;5926:67:0;;;;;;;:::i;:::-;23657:35:::1;23714:16;23657:74;;23780:16;-1:-1:-1::0;;;;;23780:24:0::1;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;23762:53:0::1;;23824:4;23831:16;-1:-1:-1::0;;;;;23831:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23762:93;::::0;-1:-1:-1;;;;;;23762:93:0::1;::::0;;;;;;-1:-1:-1;;;;;4413:15:1;;;23762:93:0::1;::::0;::::1;4395:34:1::0;4465:15;;4445:18;;;4438:43;4330:18;;23762:93:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23745:110:::0;-1:-1:-1;;;;;;23871:28:0;::::1;23868:225;;23985:16;-1:-1:-1::0;;;;;23985:24:0::1;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;23967:74:0::1;;24050:4;24057:16;-1:-1:-1::0;;;;;24057:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23967:114;::::0;-1:-1:-1;;;;;;23967:114:0::1;::::0;;;;;;-1:-1:-1;;;;;4413:15:1;;;23967:114:0::1;::::0;::::1;4395:34:1::0;4465:15;;4445:18;;;4438:43;4330:18;;23967:114:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23950:131;;23868:225;24105:11;:28:::0;;-1:-1:-1;;;;;;24105:28:0;;::::1;-1:-1:-1::0;;;;;24105:28:0;;::::1;::::0;;::::1;::::0;;24167:15:::1;:34:::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;-1:-1:-1;24239:41:0;;;:19:::1;:41;::::0;;;;;;;:48;;-1:-1:-1;;24239:48:0;;::::1;-1:-1:-1::0;24239:48:0;;::::1;::::0;;;24319:11;;;;::::1;24298:34:::0;;:12:::1;:34:::0;;;;;:41;;;;::::1;::::0;;::::1;::::0;;24105:28;24119:14;-1:-1:-1;23540:807:0:o;20558:129::-;5934:6;;-1:-1:-1;;;;;5934:6:0;198:10;5934:22;5926:67;;;;-1:-1:-1;;;5926:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20647:21:0;;;::::1;;::::0;;;:12:::1;:21;::::0;;;;:32;;-1:-1:-1;;20647:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;20558:129::o;6025:145::-;5934:6;;-1:-1:-1;;;;;5934:6:0;198:10;5934:22;5926:67;;;;-1:-1:-1;;;5926:67:0;;;;;;;:::i;:::-;6129:1:::1;6113:6:::0;;6092:40:::1;::::0;-1:-1:-1;;;;;6113:6:0;;::::1;::::0;-1:-1:-1;;;;;;;;;;;6092:40:0;6129:1;;6092:40:::1;6160:1;6143:19:::0;;-1:-1:-1;;;;;;6143:19:0::1;::::0;;6025:145::o;18841:87::-;18880:13;18913:7;18906:14;;;;;:::i;19639:269::-;19732:4;19749:129;198:10;19772:7;19781:96;19820:15;19781:96;;;;;;;;;;;;;;;;;198:10;19781:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;19781:34:0;;;;;;;;;;;;:38;:96::i;23129:125::-;5934:6;;-1:-1:-1;;;;;5934:6:0;198:10;5934:22;5926:67;;;;-1:-1:-1;;;5926:67:0;;;;;;;:::i;:::-;23210:25:::1;:36:::0;;;::::1;;-1:-1:-1::0;;;23210:36:0::1;-1:-1:-1::0;;;;23210:36:0;;::::1;::::0;;;::::1;::::0;;23129:125::o;6868:305::-;6920:14;;-1:-1:-1;;;;;6920:14:0;6938:10;6920:28;6912:76;;;;-1:-1:-1;;;6912:76:0;;10254:2:1;6912:76:0;;;10236:21:1;10293:2;10273:18;;;10266:30;10332:34;10312:18;;;10305:62;-1:-1:-1;;;10383:18:1;;;10376:33;10426:19;;6912:76:0;10226:225:1;6912:76:0;7025:9;;7007:15;:27;6999:72;;;;-1:-1:-1;;;6999:72:0;;9894:2:1;6999:72:0;;;9876:21:1;9933:2;9913:18;;;9906:30;9972:33;9952:18;;;9945:61;10023:18;;6999:72:0;9866:181:1;6999:72:0;7116:14;;;7108:6;;7087:44;;-1:-1:-1;;;;;7116:14:0;;;;7108:6;;;;-1:-1:-1;;;;;;;;;;;7087:44:0;;7151:14;;;7142:23;;-1:-1:-1;;;;;;7142:23:0;-1:-1:-1;;;;;7151:14:0;;;7142:23;;;;;;6868:305::o;24449:167::-;24527:4;24544:42;198:10;24568:9;24579:6;24544:9;:42::i;21671:358::-;5934:6;;-1:-1:-1;;;;;5934:6:0;198:10;5934:22;5926:67;;;;-1:-1:-1;;;5926:67:0;;;;;;;:::i;:::-;21812:15:::1;:35:::0;;;21858:15:::1;:35:::0;;;21904:10:::1;:25:::0;;;21969:52:::1;21917:12:::0;21969:36:::1;21830:17:::0;21876;21969:19:::1;:36::i;:52::-;21942:24;:79:::0;-1:-1:-1;;;21671:358:0:o;22950:171::-;5934:6;;-1:-1:-1;;;;;5934:6:0;198:10;5934:22;5926:67;;;;-1:-1:-1;;;5926:67:0;;;;;;;:::i;:::-;23027:21:::1;:32:::0;;;::::1;;-1:-1:-1::0;;;23027:32:0::1;-1:-1:-1::0;;;;23027:32:0;;::::1;;::::0;;23075:38:::1;::::0;::::1;::::0;::::1;::::0;23051:8;5269:14:1;5262:22;5244:41;;5232:2;5217:18;;5199:92;23075:38:0::1;;;;;;;;22950:171:::0;:::o;6630:226::-;5934:6;;-1:-1:-1;;;;;5934:6:0;198:10;5934:22;5926:67;;;;-1:-1:-1;;;5926:67:0;;;;;;;:::i;:::-;6711:6:::1;::::0;;;6694:23;;-1:-1:-1;;;;;;6694:23:0;;::::1;-1:-1:-1::0;;;;;6711:6:0;::::1;6694:23;::::0;;;6728:19:::1;::::0;;6770:22:::1;6788:4:::0;6770:15:::1;:22;:::i;:::-;6758:9;:34:::0;6845:1:::1;6829:6:::0;;6808:40:::1;::::0;-1:-1:-1;;;;;6829:6:0;;::::1;::::0;-1:-1:-1;;;;;;;;;;;6808:40:0;6845:1;;6808:40:::1;6630:226:::0;:::o;22041:111::-;5934:6;;-1:-1:-1;;;;;5934:6:0;198:10;5934:22;5926:67;;;;-1:-1:-1;;;5926:67:0;;;;;;;:::i;:::-;22118:12:::1;:26:::0;22041:111::o;20834:135::-;5934:6;;-1:-1:-1;;;;;5934:6:0;198:10;5934:22;5926:67;;;;-1:-1:-1;;;5926:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20924:26:0;;;::::1;;::::0;;;:17:::1;:26;::::0;;;;:37;;-1:-1:-1;;20924:37:0::1;::::0;::::1;;::::0;;;::::1;::::0;;20834:135::o;22424:102::-;5934:6;;-1:-1:-1;;;;;5934:6:0;198:10;5934:22;5926:67;;;;-1:-1:-1;;;5926:67:0;;;;;;;:::i;:::-;22496:10:::1;:22:::0;22424:102::o;6178:244::-;5934:6;;-1:-1:-1;;;;;5934:6:0;198:10;5934:22;5926:67;;;;-1:-1:-1;;;5926:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6267:22:0;::::1;6259:73;;;::::0;-1:-1:-1;;;6259:73:0;;6745:2:1;6259:73:0::1;::::0;::::1;6727:21:1::0;6784:2;6764:18;;;6757:30;6823:34;6803:18;;;6796:62;-1:-1:-1;;;6874:18:1;;;6867:36;6920:19;;6259:73:0::1;6717:228:1::0;6259:73:0::1;6369:6;::::0;;6348:38:::1;::::0;-1:-1:-1;;;;;6348:38:0;;::::1;::::0;6369:6;::::1;::::0;-1:-1:-1;;;;;;;;;;;6348:38:0;::::1;6397:6;:17:::0;;-1:-1:-1;;;;;;6397:17:0::1;-1:-1:-1::0;;;;;6397:17:0;;;::::1;::::0;;;::::1;::::0;;6178:244::o;20695:127::-;5934:6;;-1:-1:-1;;;;;5934:6:0;198:10;5934:22;5926:67;;;;-1:-1:-1;;;5926:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20782:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;20782:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;20695:127::o;1170:181::-;1228:7;;1260:5;1264:1;1260;:5;:::i;:::-;1248:17;;1289:1;1284;:6;;1276:46;;;;-1:-1:-1;;;1276:46:0;;7555:2:1;1276:46:0;;;7537:21:1;7594:2;7574:18;;;7567:30;7633:29;7613:18;;;7606:57;7680:18;;1276:46:0;7527:177:1;20213:337:0;-1:-1:-1;;;;;20306:19:0;;20298:68;;;;-1:-1:-1;;;20298:68:0;;9489:2:1;20298:68:0;;;9471:21:1;9528:2;9508:18;;;9501:30;9567:34;9547:18;;;9540:62;-1:-1:-1;;;9618:18:1;;;9611:34;9662:19;;20298:68:0;9461:226:1;20298:68:0;-1:-1:-1;;;;;20385:21:0;;20377:68;;;;-1:-1:-1;;;20377:68:0;;7152:2:1;20377:68:0;;;7134:21:1;7191:2;7171:18;;;7164:30;7230:34;7210:18;;;7203:62;-1:-1:-1;;;7281:18:1;;;7274:32;7323:19;;20377:68:0;7124:224:1;20377:68:0;-1:-1:-1;;;;;20458:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;20510:32;;10602:25:1;;;20510:32:0;;10575:18:1;20510:32:0;;;;;;;20213:337;;;:::o;24945:1707::-;25032:4;-1:-1:-1;;;;;25059:20:0;;25051:70;;;;-1:-1:-1;;;25051:70:0;;9083:2:1;25051:70:0;;;9065:21:1;9122:2;9102:18;;;9095:30;9161:34;9141:18;;;9134:62;-1:-1:-1;;;9212:18:1;;;9205:35;9257:19;;25051:70:0;9055:227:1;25051:70:0;-1:-1:-1;;;;;25140:23:0;;25132:71;;;;-1:-1:-1;;;25132:71:0;;6341:2:1;25132:71:0;;;6323:21:1;6380:2;6360:18;;;6353:30;6419:34;6399:18;;;6392:62;-1:-1:-1;;;6470:18:1;;;6463:33;6513:19;;25132:71:0;6313:225:1;25132:71:0;25219:16;;-1:-1:-1;;;25219:16:0;;;;25216:1429;;;25269:41;25284:6;25292:9;25303:6;25269:14;:41::i;:::-;25262:48;;;;25216:1429;-1:-1:-1;;;;;25366:23:0;;;;;;:15;:23;;;;;;;;25365:24;:55;;;;-1:-1:-1;;;;;;25394:26:0;;;;;;:15;:26;;;;;;;;25393:27;25365:55;25362:170;;;25459:12;;25449:6;:22;;25441:75;;;;-1:-1:-1;;;25441:75:0;;7911:2:1;25441:75:0;;;7893:21:1;7950:2;7930:18;;;7923:30;7989:34;7969:18;;;7962:62;-1:-1:-1;;;8040:18:1;;;8033:38;8088:19;;25441:75:0;7883:230:1;25441:75:0;25609:4;25560:28;19228:18;;;:9;:18;;;;;;25685:23;;25661:47;;;;;;;25741:44;;-1:-1:-1;25769:16:0;;-1:-1:-1;;;25769:16:0;;;;25768:17;25741:44;:69;;;;-1:-1:-1;;;;;;25790:20:0;;;;;;:12;:20;;;;;;;;25789:21;25741:69;:94;;;;-1:-1:-1;25814:21:0;;-1:-1:-1;;;25814:21:0;;;;25741:94;25737:305;;;25873:25;;-1:-1:-1;;;25873:25:0;;;;25870:97;;;25944:23;;25921:46;;25870:97;25986:36;26001:20;25986:14;:36::i;:::-;26078:53;;;;;;;;;;;-1:-1:-1;;;26078:53:0;;;;;;;;-1:-1:-1;;;;;26078:17:0;;-1:-1:-1;26078:17:0;;;:9;:17;;;;;;;;:53;;26100:6;;26078:21;:53::i;:::-;-1:-1:-1;;;;;26058:17:0;;;;;;:9;:17;;;;;;;;:73;;;;26171:17;:25;;;;;;;;;:57;;-1:-1:-1;;;;;;26200:28:0;;;;;;:17;:28;;;;;;;;26171:57;26170:148;;26284:34;26292:6;26300:9;26311:6;26284:7;:34::i;:::-;26170:148;;;26275:6;26170:148;26338:16;;26148:170;;-1:-1:-1;;;;26338:16:0;;;;:51;;;;-1:-1:-1;;;;;;26359:30:0;;;;;;:19;:30;;;;;;;;26358:31;26338:51;26335:133;;;26457:10;;26416:37;26441:11;26416:20;26426:9;-1:-1:-1;;;;;19228:18:0;19201:7;19228:18;;;:9;:18;;;;;;;19135:119;26416:37;:51;;26408:60;;;;;;-1:-1:-1;;;;;26508:20:0;;;;;;:9;:20;;;;;;:37;;26533:11;26508:24;:37::i;:::-;-1:-1:-1;;;;;26485:20:0;;;;;;;:9;:20;;;;;;;:60;;;;26567:40;;;;;;;;;;26595:11;10602:25:1;;10590:2;10575:18;;10557:76;26567:40:0;;;;;;;;26629:4;26622:11;;;;;;;1503:192;1589:7;1625:12;1617:6;;;;1609:29;;;;-1:-1:-1;;;1609:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1649:9:0;1661:5;1665:1;1661;:5;:::i;:::-;1649:17;1503:192;-1:-1:-1;;;;;1503:192:0:o;1359:136::-;1417:7;1444:43;1448:1;1451;1444:43;;;;;;;;;;;;;;;;;:3;:43::i;26660:330::-;26790:53;;;;;;;;;;;-1:-1:-1;;;26790:53:0;;;;;;;;-1:-1:-1;;;;;26790:17:0;;26753:4;26790:17;;;:9;:17;;;;;;;:53;;26812:6;;26790:21;:53::i;:::-;-1:-1:-1;;;;;26770:17:0;;;;;;;:9;:17;;;;;;:73;;;;26877:20;;;;;;;:32;;26902:6;26877:24;:32::i;:::-;-1:-1:-1;;;;;26854:20:0;;;;;;;:9;:20;;;;;;;:55;;;;26925:35;;;;;;;;;;26953:6;10602:25:1;;10590:2;10575:18;;10557:76;26925:35:0;;;;;;;;-1:-1:-1;26978:4:0;26660:330;;;;;:::o;26998:1048::-;17445:16;:23;;-1:-1:-1;;;;17445:23:0;-1:-1:-1;;;17445:23:0;;;27135:24:::1;::::0;27114:15:::1;::::0;17445:23;;27102:65:::1;::::0;27165:1:::1;::::0;27102:58:::1;::::0;;;:7;;:11:::1;:28::i;:::-;:32:::0;::::1;:58::i;:65::-;27080:87:::0;-1:-1:-1;27178:21:0::1;27202:24;:7:::0;27080:87;27202:11:::1;:24::i;:::-;27178:48;;27239:31;27256:13;27239:16;:31::i;:::-;27391:15;::::0;27306:21:::1;::::0;27281:22:::1;::::0;27362:52:::1;::::0;27391:22:::1;::::0;27411:1:::1;27391:19;:22::i;:::-;27362:24;::::0;;:28:::1;:52::i;:::-;27340:74;;27435:26;27464:59;27521:1;27464:52;27504:11;27464:35;27483:15;;27464:14;:18;;:35;;;;:::i;:59::-;27435:88;;27534:21;27558:47;27593:11;27558:30;27577:10;;27558:14;:18;;:30;;;;:::i;:47::-;27534:71:::0;-1:-1:-1;27616:26:0::1;27645:57;27534:71:::0;27645:38:::1;:14:::0;27664:18;27645::::1;:38::i;:::-;:42:::0;::::1;:57::i;:::-;27616:86:::0;-1:-1:-1;27718:22:0;;27715:104:::1;;27776:22;::::0;27755:64:::1;::::0;27776:22:::1;::::0;::::1;-1:-1:-1::0;;;;;27776:22:0::1;27800:18:::0;27755:20:::1;:64::i;:::-;27835:17:::0;;27832:89:::1;;27888:17;::::0;27867:54:::1;::::0;-1:-1:-1;;;;;27888:17:0::1;27907:13:::0;27867:20:::1;:54::i;:::-;27958:1;27937:18;:22;:41;;;;;27977:1;27963:11;:15;27937:41;27934:104;;;27993:45;28006:11;28019:18;27993:12;:45::i;:::-;-1:-1:-1::0;;17491:16:0;:24;;-1:-1:-1;;;;17491:24:0;;;-1:-1:-1;;;;;;26998:1048:0:o;29253:622::-;-1:-1:-1;;;;;29414:20:0;;29339:7;29414:20;;;:12;:20;;;;;;29339:7;;29414:20;;29411:223;;;29463:38;29497:3;29463:29;29474:17;;29463:6;:10;;:29;;;;:::i;:38::-;29451:50;;29411:223;;;-1:-1:-1;;;;;29531:23:0;;;;;;:12;:23;;;;;;;;29528:106;;;29583:39;29618:3;29583:30;29594:18;;29583:6;:10;;:30;;;;:::i;:39::-;29571:51;;29528:106;29657:13;;29654:173;;29732:4;29714:24;;;;:9;:24;;;;;;:39;;29743:9;29714:28;:39::i;:::-;29705:4;29687:24;;;;:9;:24;;;;;;;:66;;;;29773:42;;-1:-1:-1;;;;;29773:42:0;;;;;;;29805:9;10602:25:1;;10590:2;10575:18;;10557:76;29773:42:0;;;;;;;;29654:173;29846:21;:6;29857:9;29846:10;:21::i;1703:250::-;1761:7;1785:6;1781:47;;-1:-1:-1;1815:1:0;1808:8;;1781:47;1840:9;1852:5;1856:1;1852;:5;:::i;:::-;1840:17;-1:-1:-1;1885:1:0;1876:5;1880:1;1840:17;1876:5;:::i;:::-;:10;1868:56;;;;-1:-1:-1;;;1868:56:0;;8320:2:1;1868:56:0;;;8302:21:1;8359:2;8339:18;;;8332:30;8398:34;8378:18;;;8371:62;-1:-1:-1;;;8449:18:1;;;8442:31;8490:19;;1868:56:0;8292:223:1;1961:132:0;2019:7;2046:39;2050:1;2053;2046:39;;;;;;;;;;;;;;;;;:3;:39::i;28058:666::-;28208:16;;;28222:1;28208:16;;;;;;;;28184:21;;28208:16;;;;;;;;;;-1:-1:-1;28208:16:0;28184:40;;28253:4;28235;28240:1;28235:7;;;;;;-1:-1:-1;;;28235:7:0;;;;;;;;;-1:-1:-1;;;;;28235:23:0;;;:7;;;;;;;;;;:23;;;;28279:15;;:22;;;-1:-1:-1;;;28279:22:0;;;;:15;;;;;:20;;:22;;;;;28235:7;;28279:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28269:4;28274:1;28269:7;;;;;;-1:-1:-1;;;28269:7:0;;;;;;;;;-1:-1:-1;;;;;28269:32:0;;;:7;;;;;;;;;:32;28346:15;;28314:62;;28331:4;;28346:15;28364:11;28314:8;:62::i;:::-;28415:15;;:240;;-1:-1:-1;;;28415:240:0;;-1:-1:-1;;;;;28415:15:0;;;;:66;;:240;;28496:11;;28415:15;;28566:4;;28593;;28629:15;;28415:240;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28681:35;28698:11;28711:4;28681:35;;;;;;;:::i;:::-;;;;;;;;28058:666;;:::o;23402:126::-;23494:26;;-1:-1:-1;;;;;23494:18:0;;;:26;;;;;23513:6;;23494:26;;;;23513:6;23494:18;:26;;;;;;;;;;;;;;;;;;;;;23402:126;;:::o;28732:513::-;28912:15;;28880:62;;28897:4;;-1:-1:-1;;;;;28912:15:0;28930:11;28880:8;:62::i;:::-;28985:15;;-1:-1:-1;;;;;28985:15:0;:31;29024:9;29057:4;29077:11;28985:15;;29189:7;5838;5865:6;-1:-1:-1;;;;;5865:6:0;;5800:79;29189:7;28985:252;;;;;;-1:-1:-1;;;;;;28985:252:0;;;-1:-1:-1;;;;;4851:15:1;;;28985:252:0;;;4833:34:1;4883:18;;;4876:34;;;;4926:18;;;4919:34;;;;4969:18;;;4962:34;5033:15;;;5012:19;;;5005:44;29211:15:0;5065:19:1;;;5058:35;4767:19;;28985:252:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;28732:513;;:::o;2101:278::-;2187:7;2222:12;2215:5;2207:28;;;;-1:-1:-1;;;2207:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2246:9:0;2258:5;2262:1;2258;:5;:::i;14:160:1:-;79:20;;135:13;;128:21;118:32;;108:2;;164:1;161;154:12;108:2;60:114;;;:::o;179:257::-;238:6;291:2;279:9;270:7;266:23;262:32;259:2;;;312:6;304;297:22;259:2;356:9;343:23;375:31;400:5;375:31;:::i;441:261::-;511:6;564:2;552:9;543:7;539:23;535:32;532:2;;;585:6;577;570:22;532:2;622:9;616:16;641:31;666:5;641:31;:::i;707:398::-;775:6;783;836:2;824:9;815:7;811:23;807:32;804:2;;;857:6;849;842:22;804:2;901:9;888:23;920:31;945:5;920:31;:::i;:::-;970:5;-1:-1:-1;1027:2:1;1012:18;;999:32;1040:33;999:32;1040:33;:::i;:::-;1092:7;1082:17;;;794:311;;;;;:::o;1110:466::-;1187:6;1195;1203;1256:2;1244:9;1235:7;1231:23;1227:32;1224:2;;;1277:6;1269;1262:22;1224:2;1321:9;1308:23;1340:31;1365:5;1340:31;:::i;:::-;1390:5;-1:-1:-1;1447:2:1;1432:18;;1419:32;1460:33;1419:32;1460:33;:::i;:::-;1214:362;;1512:7;;-1:-1:-1;;;1566:2:1;1551:18;;;;1538:32;;1214:362::o;1581:325::-;1646:6;1654;1707:2;1695:9;1686:7;1682:23;1678:32;1675:2;;;1728:6;1720;1713:22;1675:2;1772:9;1759:23;1791:31;1816:5;1791:31;:::i;:::-;1841:5;-1:-1:-1;1865:35:1;1896:2;1881:18;;1865:35;:::i;:::-;1855:45;;1665:241;;;;;:::o;1911:325::-;1979:6;1987;2040:2;2028:9;2019:7;2015:23;2011:32;2008:2;;;2061:6;2053;2046:22;2008:2;2105:9;2092:23;2124:31;2149:5;2124:31;:::i;:::-;2174:5;2226:2;2211:18;;;;2198:32;;-1:-1:-1;;;1998:238:1:o;2241:190::-;2297:6;2350:2;2338:9;2329:7;2325:23;2321:32;2318:2;;;2371:6;2363;2356:22;2318:2;2399:26;2415:9;2399:26;:::i;2436:190::-;2495:6;2548:2;2536:9;2527:7;2523:23;2519:32;2516:2;;;2569:6;2561;2554:22;2516:2;-1:-1:-1;2597:23:1;;2506:120;-1:-1:-1;2506:120:1:o;2631:326::-;2708:6;2716;2724;2777:2;2765:9;2756:7;2752:23;2748:32;2745:2;;;2798:6;2790;2783:22;2745:2;-1:-1:-1;;2826:23:1;;;2896:2;2881:18;;2868:32;;-1:-1:-1;2947:2:1;2932:18;;;2919:32;;2735:222;-1:-1:-1;2735:222:1:o;2962:316::-;3050:6;3058;3066;3119:2;3107:9;3098:7;3094:23;3090:32;3087:2;;;3140:6;3132;3125:22;3087:2;3174:9;3168:16;3158:26;;3224:2;3213:9;3209:18;3203:25;3193:35;;3268:2;3257:9;3253:18;3247:25;3237:35;;3077:201;;;;;:::o;3283:463::-;3336:3;3374:5;3368:12;3401:6;3396:3;3389:19;3427:4;3456:2;3451:3;3447:12;3440:19;;3493:2;3486:5;3482:14;3514:3;3526:195;3540:6;3537:1;3534:13;3526:195;;;3605:13;;-1:-1:-1;;;;;3601:39:1;3589:52;;3661:12;;;;3696:15;;;;3637:1;3555:9;3526:195;;;-1:-1:-1;3737:3:1;;3344:402;-1:-1:-1;;;;;3344:402:1:o;5531:603::-;5643:4;5672:2;5701;5690:9;5683:21;5733:6;5727:13;5776:6;5771:2;5760:9;5756:18;5749:34;5801:4;5814:140;5828:6;5825:1;5822:13;5814:140;;;5923:14;;;5919:23;;5913:30;5889:17;;;5908:2;5885:26;5878:66;5843:10;;5814:140;;;5972:6;5969:1;5966:13;5963:2;;;6042:4;6037:2;6028:6;6017:9;6013:22;6009:31;6002:45;5963:2;-1:-1:-1;6118:2:1;6097:15;-1:-1:-1;;6093:29:1;6078:45;;;;6125:2;6074:54;;5652:482;-1:-1:-1;;;5652:482:1:o;8520:356::-;8722:2;8704:21;;;8741:18;;;8734:30;8800:34;8795:2;8780:18;;8773:62;8867:2;8852:18;;8694:182::o;10638:332::-;10845:6;10834:9;10827:25;10888:2;10883;10872:9;10868:18;10861:30;10808:4;10908:56;10960:2;10949:9;10945:18;10937:6;10908:56;:::i;:::-;10900:64;10817:153;-1:-1:-1;;;;10817:153:1:o;10975:582::-;11274:6;11263:9;11256:25;11317:6;11312:2;11301:9;11297:18;11290:34;11360:3;11355:2;11344:9;11340:18;11333:31;11237:4;11381:57;11433:3;11422:9;11418:19;11410:6;11381:57;:::i;:::-;-1:-1:-1;;;;;11474:32:1;;;;11469:2;11454:18;;11447:60;-1:-1:-1;11538:3:1;11523:19;11516:35;11373:65;11246:311;-1:-1:-1;;;11246:311:1:o;11751:128::-;11791:3;11822:1;11818:6;11815:1;11812:13;11809:2;;;11828:18;;:::i;:::-;-1:-1:-1;11864:9:1;;11799:80::o;11884:217::-;11924:1;11950;11940:2;;-1:-1:-1;;;11975:31:1;;12029:4;12026:1;12019:15;12057:4;11982:1;12047:15;11940:2;-1:-1:-1;12086:9:1;;11930:171::o;12106:168::-;12146:7;12212:1;12208;12204:6;12200:14;12197:1;12194:21;12189:1;12182:9;12175:17;12171:45;12168:2;;;12219:18;;:::i;:::-;-1:-1:-1;12259:9:1;;12158:116::o;12279:125::-;12319:4;12347:1;12344;12341:8;12338:2;;;12352:18;;:::i;:::-;-1:-1:-1;12389:9:1;;12328:76::o;12409:380::-;12488:1;12484:12;;;;12531;;;12552:2;;12606:4;12598:6;12594:17;12584:27;;12552:2;12659;12651:6;12648:14;12628:18;12625:38;12622:2;;;12705:10;12700:3;12696:20;12693:1;12686:31;12740:4;12737:1;12730:15;12768:4;12765:1;12758:15;12622:2;;12464:325;;;:::o;12794:127::-;12855:10;12850:3;12846:20;12843:1;12836:31;12886:4;12883:1;12876:15;12910:4;12907:1;12900:15;12926:131;-1:-1:-1;;;;;13001:31:1;;12991:42;;12981:2;;13047:1;13044;13037:12;12981:2;12971:86;:::o
Swarm Source
ipfs://09714929f40b2a3246a7ba92640927622841180bea68fb83d9d5a07593e5d034
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
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.