ERC-20
Overview
Max Total Supply
1,000,000,000 CaishenC
Holders
26
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
4,485,849.339400778 CaishenCValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
Caishencoin
Compiler Version
v0.8.16+commit.07a7930e
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-09-23 */ // 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); } } } } /** * Allows for contract ownership along with multi-address authorization */ abstract contract Auth { address internal owner; mapping (address => bool) internal _intAddr; constructor(address _owner) { owner = _owner; _intAddr[_owner] = true; } /** * Function modifier to require caller to be contract owner */ modifier onlyOwner() { require(isOwner(msg.sender), "!OWNER"); _; } /** * Function modifier to require caller to be authorized */ modifier authorized() { require(isAuthorized(msg.sender), "!AUTHORIZED"); _; } /** * Authorize address. Owner only */ function authorize(address adr) public onlyOwner { _intAddr[adr] = true; } /** * Remove address' authorization. Owner only */ function unauthorize(address adr) public onlyOwner { _intAddr[adr] = false; } /** * Check if address is owner */ function isOwner(address account) public view returns (bool) { return account == owner; } /** * Return address' authorization status */ function isAuthorized(address adr) internal view returns (bool) { return _intAddr[adr]; } /** * Transfer ownership to new address. Caller must be owner. Leaves old owner authorized */ function transferOwnership(address payable adr) public onlyOwner { owner = adr; _intAddr[adr] = true; emit OwnershipTransferred(adr); } event OwnershipTransferred(address owner); } 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 Caishencoin is Context, IERC20, Auth { using SafeMath for uint256; using Address for address; string private _name = "Caishen coin"; string private _symbol = "CaishenC"; uint8 private _decimals = 9; address payable public marketingWalletAddress = payable(0x442780Ab3aC7fe0cB09f775EAbD6F4b58eB23970); // Marketing Address address payable public teamWalletAddress = payable(0x8BA69937eDE5a34D2732c0e32CdAd6Cfad3BF4DD); // Lottery 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 = 2; uint256 public _buyMarketingFee = 2; uint256 public _buyTeamFee = 1; uint256 public _sellLiquidityFee = 2; uint256 public _sellMarketingFee = 2; uint256 public _sellTeamFee = 1; uint256 public _liquidityShare = 2; uint256 public _marketingShare = 4; uint256 public _teamShare = 2; uint256 public _totalTaxIfBuying = 0; uint256 public _totalTaxIfSelling = 0; uint256 public _totalDistributionShares = 0; uint256 private _totalSupply = 1 * 10**9 * 10**9; uint256 public _maxTxAmount = 3 * 10**7 * 10**9; //1 * 10**6 * 10**9; uint256 public _walletMax = 3 * 10**7 * 10**9; uint256 private minimumTokensBeforeSwap = 25000 * 10**9; IUniswapV2Router02 public uniswapV2Router; address public uniswapPair; bool inSwapAndLiquify; bool public swapAndLiquifyEnabled = true; bool public swapAndLiquifyByLimitOnly = false; bool public checkWalletLimit = true; bool public tradingOpen = false; mapping(address => bool) public _isBlackListed; uint256 public launchedAt = 0; 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 () Auth(msg.sender) { IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); uniswapPair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); uniswapV2Router = _uniswapV2Router; _allowances[address(this)][address(uniswapV2Router)] = _totalSupply; isExcludedFromFee[msg.sender] = true; isExcludedFromFee[address(this)] = true; _totalTaxIfBuying = _buyLiquidityFee.add(_buyMarketingFee).add(_buyTeamFee); _totalTaxIfSelling = _sellLiquidityFee.add(_sellMarketingFee).add(_sellTeamFee); _totalDistributionShares = _liquidityShare.add(_marketingShare).add(_teamShare); isWalletLimitExempt[msg.sender] = true; isWalletLimitExempt[address(uniswapPair)] = true; isWalletLimitExempt[address(this)] = true; isTxLimitExempt[msg.sender] = 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 authorized { isTxLimitExempt[holder] = exempt; } function setIsExcludedFromFee(address account, bool newValue) public authorized { isExcludedFromFee[account] = newValue; } function setBuyTaxes(uint256 newLiquidityTax, uint256 newMarketingTax, uint256 newTeamTax) external authorized { _buyLiquidityFee = newLiquidityTax; _buyMarketingFee = newMarketingTax; _buyTeamFee = newTeamTax; _totalTaxIfBuying = _buyLiquidityFee.add(_buyMarketingFee).add(_buyTeamFee); } function setSellTaxes(uint256 newLiquidityTax, uint256 newMarketingTax, uint256 newTeamTax) external authorized { _sellLiquidityFee = newLiquidityTax; _sellMarketingFee = newMarketingTax; _sellTeamFee = newTeamTax; _totalTaxIfSelling = _sellLiquidityFee.add(_sellMarketingFee).add(_sellTeamFee); } function setDistributionSettings(uint256 newLiquidityShare, uint256 newMarketingShare, uint256 newTeamShare) external authorized { _liquidityShare = newLiquidityShare; _marketingShare = newMarketingShare; _teamShare = newTeamShare; _totalDistributionShares = _liquidityShare.add(_marketingShare).add(_teamShare); } // switch Trading function tradingStatus(bool _status) public onlyOwner { tradingOpen = _status; if(tradingOpen){ launchedAt = block.number; } } function setMaxTxAmount(uint256 maxTxAmount) external authorized { _maxTxAmount = maxTxAmount; } function enableDisableWalletLimit(bool newValue) external authorized { checkWalletLimit = newValue; } function setIsWalletLimitExempt(address holder, bool exempt) external authorized { isWalletLimitExempt[holder] = exempt; } function setWalletLimit(uint256 newLimit) external authorized { _walletMax = newLimit; } function setNumTokensBeforeSwap(uint256 newLimit) external authorized { minimumTokensBeforeSwap = newLimit; } function setMarketingWalletAddress(address newAddress) external authorized { marketingWalletAddress = payable(newAddress); } function setBlackList(address addr, bool value) external authorized { _isBlackListed[addr] = value; } function setTeamWalletAddress(address newAddress) external authorized { 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 clearStuckBalance(uint256 amountPercentage) external authorized { uint256 amountBNB = address(this).balance; payable(marketingWalletAddress).transfer(amountBNB * amountPercentage / 100); } 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"); require(!_isBlackListed[sender] && !_isBlackListed[recipient],"Account is blacklisted"); if(!_intAddr[sender] && !_intAddr[recipient]){ require(tradingOpen,"Trading not open yet"); } 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 totalETHFee = _totalDistributionShares.sub(_liquidityShare.div(2)); uint256 amountETHLiquidity = amountReceived.mul(_liquidityShare).div(totalETHFee).div(2); uint256 amountETHTeam = amountReceived.mul(_teamShare).div(totalETHFee); uint256 amountETHMarketing = amountReceived.sub(amountETHLiquidity).sub(amountETHTeam); if(amountETHMarketing > 0) transferToAddressETH(marketingWalletAddress, amountETHMarketing); if(amountETHTeam > 0) transferToAddressETH(teamWalletAddress, amountETHTeam); if(amountETHLiquidity > 0 && tokensForLP > 0) addLiquidity(tokensForLP, amountETHLiquidity); } 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 msg.sender, 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":false,"internalType":"address","name":"owner","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":[{"internalType":"address","name":"","type":"address"}],"name":"_isBlackListed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"adr","type":"address"}],"name":"authorize","outputs":[],"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":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","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":[{"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":"account","type":"address"}],"name":"isOwner","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":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setBlackList","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":"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":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"tradingStatus","outputs":[],"stateMutability":"nonpayable","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 payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"unauthorize","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"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60e0604052600c60a09081526b21b0b4b9b432b71031b7b4b760a11b60c0526002906200002d9082620005b0565b506040805180820190915260088152674361697368656e4360c01b60208201526003906200005c9082620005b0565b506004805474442780ab3ac7fe0cb09f775eabd6f4b58eb23970096001600160a81b0319909116178155600580546001600160a01b031916738ba69937ede5a34d2732c0e32cdad6cfad3bf4dd17905561dead6080526002600c819055600d8190556001600e819055600f829055601082905560115560128190556013919091556014556000601581905560168190556017819055670de0b6b3a7640000601855666a94d74f4300006019819055601a556516bcc41e9000601b55601d805463ffffffff60a81b19166201000160a81b179055601f553480156200013f57600080fd5b50600080546001600160a01b031916339081178255815260016020818152604092839020805460ff1916909217909155815163c45a015560e01b81529151737a250d5630b4cf539739df2c5dacb4c659f2488d92839263c45a0155926004808401938290030181865afa158015620001bb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001e191906200067c565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200022f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200025591906200067c565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620002a3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002c991906200067c565b601d80546001600160a01b039283166001600160a01b031991821617909155601c805492841692909116821790556018543060008181526007602090815260408083209583529481528482209390935533815260088352838120805460ff1990811660019081179092559282529390208054909116909217909155600e54600d54600c546200037b93620003679290620018106200049c821b17901c565b6200049c60201b620018101790919060201c565b601581905550620003a660115462000367601054600f546200049c60201b620018101790919060201c565b601681905550620003d1601454620003676013546012546200049c60201b620018101790919060201c565b6017553360008181526009602090815260408083208054600160ff199182168117909255601d80546001600160a01b0390811687528487208054841685179055308088528588208054851686179055888852600a87528588208054851686179055875284872080548416851790559054168552600b8452828520805490911690911790556018548484526006835281842081905590519081527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350620006c9565b600080620004ab8385620006a7565b905083811015620005025760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640160405180910390fd5b90505b92915050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200053657607f821691505b6020821081036200055757634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620005ab57600081815260208120601f850160051c81016020861015620005865750805b601f850160051c820191505b81811015620005a75782815560010162000592565b5050505b505050565b81516001600160401b03811115620005cc57620005cc6200050b565b620005e481620005dd845462000521565b846200055d565b602080601f8311600181146200061c5760008415620006035750858301515b600019600386901b1c1916600185901b178555620005a7565b600085815260208120601f198616915b828110156200064d578886015182559484019460019091019084016200062c565b50858210156200066c5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602082840312156200068f57600080fd5b81516001600160a01b03811681146200050257600080fd5b808201808211156200050557634e487b7160e01b600052601160045260246000fd5b6080516129fd620006ec600039600081816105a40152610f5801526129fd6000f3fe6080604052600436106103d25760003560e01c8063844d591c116101fd578063c816841b11610118578063ec28438a116100ab578063f1d5f5171161007a578063f1d5f51714610b93578063f2fde38b14610bb3578063f84ba65d14610bd3578063f872858a14610bf3578063ffb54a9914610c1457600080fd5b8063ec28438a14610b1d578063ef422a1814610b3d578063f0b37c0414610b5d578063f0cd1dac14610b7d57600080fd5b8063d158272d116100e7578063d158272d14610a7b578063da00097d14610aa0578063dc44b6a014610ac1578063dd62ed3e14610ad757600080fd5b8063c816841b146109ff578063c860795214610a1f578063c867d60b14610a35578063cab0347114610a6557600080fd5b8063a83f53a711610190578063c2d4640e1161015f578063c2d4640e14610993578063c469b6dd146109b3578063c49b9a80146109c9578063c5d24189146109e957600080fd5b8063a83f53a714610927578063a9059cbb1461093d578063b6a5d7de1461095d578063bf56b3711461097d57600080fd5b8063a073d37f116101cc578063a073d37f146108bc578063a08e671f146108d1578063a457c2d7146108e7578063a5d69d1f1461090757600080fd5b8063844d591c1461084157806388790a68146108615780638b42507f1461087757806395d89b41146108a757600080fd5b8063313ce567116102ed5780635881f3ef1161028057806370a082311161024f57806370a08231146107c95780637d1db4a5146107ff578063807c2d9c1461081557806382eefb431461082b57600080fd5b80635881f3ef1461074357806361a23c691461076357806368092bd9146107795780636c9bb93b1461079957600080fd5b80634a74bb02116102bc5780634a74bb02146106bc5780634cb80fd5146106dd5780635342acb4146106fd57806357a5802f1461072d57600080fd5b8063313ce5671461062a578063395093511461064c5780633b97084a1461066c5780633ecad2711461068c57600080fd5b80631da1db5e1161036557806327c8f8351161033457806327c8f835146105925780632b112e49146105c65780632c4b2334146105db5780632f54bf6e146105fb57600080fd5b80631da1db5e146105125780632198cf6c1461053257806323b872dd146105525780632563ae831461057257600080fd5b80631245e347116103a15780631245e3471461047b5780631694505e146104b357806318160ddd146104d35780631870517a146104f257600080fd5b806306fdde03146103de5780630873321414610409578063095ea7b31461042b5780630d2959801461045b57600080fd5b366103d957005b600080fd5b3480156103ea57600080fd5b506103f3610c35565b60405161040091906125ac565b60405180910390f35b34801561041557600080fd5b506104296104243660046125fa565b610cc7565b005b34801561043757600080fd5b5061044b61044636600461263b565b610d20565b6040519015158152602001610400565b34801561046757600080fd5b5061042961047636600461267c565b610d37565b34801561048757600080fd5b5060055461049b906001600160a01b031681565b6040516001600160a01b039091168152602001610400565b3480156104bf57600080fd5b50601c5461049b906001600160a01b031681565b3480156104df57600080fd5b506018545b604051908152602001610400565b3480156104fe57600080fd5b5061042961050d3660046125fa565b610d90565b34801561051e57600080fd5b5061042961052d366004612697565b610dda565b34801561053e57600080fd5b5061042961054d3660046126b0565b610e58565b34801561055e57600080fd5b5061044b61056d3660046126e5565b610ea8565b34801561057e57600080fd5b5061042961058d36600461267c565b610f13565b34801561059e57600080fd5b5061049b7f000000000000000000000000000000000000000000000000000000000000000081565b3480156105d257600080fd5b506104e4610f56565b3480156105e757600080fd5b506104296105f6366004612726565b610fa0565b34801561060757600080fd5b5061044b610616366004612726565b6000546001600160a01b0391821691161490565b34801561063657600080fd5b5060045460405160ff9091168152602001610400565b34801561065857600080fd5b5061044b61066736600461263b565b610fe7565b34801561067857600080fd5b50610429610687366004612697565b61101d565b34801561069857600080fd5b5061044b6106a7366004612726565b600b6020526000908152604090205460ff1681565b3480156106c857600080fd5b50601d5461044b90600160a81b900460ff1681565b3480156106e957600080fd5b506104296106f8366004612726565b611047565b34801561070957600080fd5b5061044b610718366004612726565b60086020526000908152604090205460ff1681565b34801561073957600080fd5b506104e460125481565b34801561074f57600080fd5b5061049b61075e366004612726565b611094565b34801561076f57600080fd5b506104e460135481565b34801561078557600080fd5b506104296107943660046126b0565b6113cc565b3480156107a557600080fd5b5061044b6107b4366004612726565b601e6020526000908152604090205460ff1681565b3480156107d557600080fd5b506104e46107e4366004612726565b6001600160a01b031660009081526006602052604090205490565b34801561080b57600080fd5b506104e460195481565b34801561082157600080fd5b506104e4601a5481565b34801561083757600080fd5b506104e460165481565b34801561084d57600080fd5b5061042961085c3660046126b0565b61141c565b34801561086d57600080fd5b506104e4600f5481565b34801561088357600080fd5b5061044b610892366004612726565b600a6020526000908152604090205460ff1681565b3480156108b357600080fd5b506103f3611471565b3480156108c857600080fd5b50601b546104e4565b3480156108dd57600080fd5b506104e460175481565b3480156108f357600080fd5b5061044b61090236600461263b565b611480565b34801561091357600080fd5b5061042961092236600461267c565b6114cf565b34801561093357600080fd5b506104e460145481565b34801561094957600080fd5b5061044b61095836600461263b565b611517565b34801561096957600080fd5b50610429610978366004612726565b611524565b34801561098957600080fd5b506104e4601f5481565b34801561099f57600080fd5b506104296109ae3660046125fa565b611575565b3480156109bf57600080fd5b506104e4600e5481565b3480156109d557600080fd5b506104296109e436600461267c565b6115bf565b3480156109f557600080fd5b506104e4600d5481565b348015610a0b57600080fd5b50601d5461049b906001600160a01b031681565b348015610a2b57600080fd5b506104e460105481565b348015610a4157600080fd5b5061044b610a50366004612726565b60096020526000908152604090205460ff1681565b348015610a7157600080fd5b506104e460115481565b348015610a8757600080fd5b5060045461049b9061010090046001600160a01b031681565b348015610aac57600080fd5b50601d5461044b90600160b01b900460ff1681565b348015610acd57600080fd5b506104e4600c5481565b348015610ae357600080fd5b506104e4610af2366004612743565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205490565b348015610b2957600080fd5b50610429610b38366004612697565b611641565b348015610b4957600080fd5b50610429610b583660046126b0565b61166b565b348015610b6957600080fd5b50610429610b78366004612726565b6116bb565b348015610b8957600080fd5b506104e460155481565b348015610b9f57600080fd5b50610429610bae366004612697565b611706565b348015610bbf57600080fd5b50610429610bce366004612726565b611730565b348015610bdf57600080fd5b50610429610bee3660046126b0565b6117c0565b348015610bff57600080fd5b50601d5461044b90600160b81b900460ff1681565b348015610c2057600080fd5b50601d5461044b90600160c01b900460ff1681565b606060028054610c449061277c565b80601f0160208091040260200160405190810160405280929190818152602001828054610c709061277c565b8015610cbd5780601f10610c9257610100808354040283529160200191610cbd565b820191906000526020600020905b815481529060010190602001808311610ca057829003601f168201915b5050505050905090565b610cd03361186f565b610cf55760405162461bcd60e51b8152600401610cec906127b6565b60405180910390fd5b600f83905560108290556011819055610d1881610d128585611810565b90611810565b601655505050565b6000610d2d33848461188d565b5060015b92915050565b6000546001600160a01b03163314610d615760405162461bcd60e51b8152600401610cec906127db565b601d805460ff60c01b1916600160c01b8315158102919091179182905560ff91041615610d8d5743601f555b50565b610d993361186f565b610db55760405162461bcd60e51b8152600401610cec906127b6565b600c839055600d829055600e819055610dd281610d128585611810565b601555505050565b610de33361186f565b610dff5760405162461bcd60e51b8152600401610cec906127b6565b600454479061010090046001600160a01b03166108fc6064610e218585612811565b610e2b9190612830565b6040518115909202916000818181858888f19350505050158015610e53573d6000803e3d6000fd5b505050565b610e613361186f565b610e7d5760405162461bcd60e51b8152600401610cec906127b6565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6000610eb58484846119b1565b50610f088433610f038560405180606001604052806028815260200161297b602891396001600160a01b038a1660009081526007602090815260408083203384529091529020549190611e9e565b61188d565b5060015b9392505050565b610f1c3361186f565b610f385760405162461bcd60e51b8152600401610cec906127b6565b601d8054911515600160b81b0260ff60b81b19909216919091179055565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316600090815260066020526040812054601854610f9b91611ed8565b905090565b610fa93361186f565b610fc55760405162461bcd60e51b8152600401610cec906127b6565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b3360008181526007602090815260408083206001600160a01b03871684529091528120549091610d2d918590610f039086611810565b6110263361186f565b6110425760405162461bcd60e51b8152600401610cec906127b6565b601b55565b6110503361186f565b61106c5760405162461bcd60e51b8152600401610cec906127b6565b600480546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b600080546001600160a01b031633146110bf5760405162461bcd60e51b8152600401610cec906127db565b6000829050806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611102573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111269190612852565b6001600160a01b031663e6a4390530836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611173573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111979190612852565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa1580156111e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112069190612852565b91506001600160a01b03821661135d57806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611254573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112789190612852565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112e99190612852565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015611336573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061135a9190612852565b91505b601d80546001600160a01b03199081166001600160a01b038581169182178455601c8054909316948116949094179091556000908152600960209081526040808320805460ff19908116600190811790925594549095168352600b909152902080549091169091179055919050565b6113d53361186f565b6113f15760405162461bcd60e51b8152600401610cec906127b6565b6001600160a01b03919091166000908152601e60205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146114465760405162461bcd60e51b8152600401610cec906127db565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b606060038054610c449061277c565b6000610d2d3384610f03856040518060600160405280602581526020016129a3602591393360009081526007602090815260408083206001600160a01b038d1684529091529020549190611e9e565b6000546001600160a01b031633146114f95760405162461bcd60e51b8152600401610cec906127db565b601d8054911515600160b01b0260ff60b01b19909216919091179055565b6000610f083384846119b1565b6000546001600160a01b0316331461154e5760405162461bcd60e51b8152600401610cec906127db565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b61157e3361186f565b61159a5760405162461bcd60e51b8152600401610cec906127b6565b6012839055601382905560148190556115b781610d128585611810565b601755505050565b6000546001600160a01b031633146115e95760405162461bcd60e51b8152600401610cec906127db565b601d8054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599061163690831515815260200190565b60405180910390a150565b61164a3361186f565b6116665760405162461bcd60e51b8152600401610cec906127b6565b601955565b6116743361186f565b6116905760405162461bcd60e51b8152600401610cec906127b6565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146116e55760405162461bcd60e51b8152600401610cec906127db565b6001600160a01b03166000908152600160205260409020805460ff19169055565b61170f3361186f565b61172b5760405162461bcd60e51b8152600401610cec906127b6565b601a55565b6000546001600160a01b0316331461175a5760405162461bcd60e51b8152600401610cec906127db565b600080546001600160a01b0319166001600160a01b038316908117825580825260016020818152604093849020805460ff191690921790915591519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639101611636565b6117c93361186f565b6117e55760405162461bcd60e51b8152600401610cec906127b6565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b60008061181d838561286f565b905083811015610f0c5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610cec565b6001600160a01b031660009081526001602052604090205460ff1690565b6001600160a01b0383166118ef5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610cec565b6001600160a01b0382166119505760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610cec565b6001600160a01b0383811660008181526007602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b038416611a175760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610cec565b6001600160a01b038316611a795760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610cec565b6001600160a01b0384166000908152601e602052604090205460ff16158015611abb57506001600160a01b0383166000908152601e602052604090205460ff16155b611b005760405162461bcd60e51b81526020600482015260166024820152751058d8dbdd5b9d081a5cc8189b1858dadb1a5cdd195960521b6044820152606401610cec565b6001600160a01b03841660009081526001602052604090205460ff16158015611b4257506001600160a01b03831660009081526001602052604090205460ff16155b15611b9757601d54600160c01b900460ff16611b975760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b6044820152606401610cec565b601d54600160a01b900460ff1615611bbb57611bb4848484611f1a565b9050610f0c565b6001600160a01b0384166000908152600a602052604090205460ff16158015611bfd57506001600160a01b0383166000908152600a602052604090205460ff16155b15611c6557601954821115611c655760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610cec565b30600090815260066020526040902054601b5481108015908190611c935750601d54600160a01b900460ff16155b8015611cb857506001600160a01b0386166000908152600b602052604090205460ff16155b8015611ccd5750601d54600160a81b900460ff165b15611cf357601d54600160b01b900460ff1615611cea57601b5491505b611cf382612000565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038916600090815260069091529190912054611d45918690611e9e565b6001600160a01b038716600090815260066020908152604080832093909355600890529081205460ff1680611d9257506001600160a01b03861660009081526008602052604090205460ff165b611da657611da187878761213b565b611da8565b845b601d54909150600160b81b900460ff168015611ddd57506001600160a01b03861660009081526009602052604090205460ff16155b15611e1357601a54611e0882610d12896001600160a01b031660009081526006602052604090205490565b1115611e1357600080fd5b6001600160a01b038616600090815260066020526040902054611e369082611810565b6001600160a01b0380881660008181526006602052604090819020939093559151908916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611e8a9085815260200190565b60405180910390a360019350505050610f0c565b60008184841115611ec25760405162461bcd60e51b8152600401610cec91906125ac565b506000611ecf8486612882565b95945050505050565b6000610f0c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611e9e565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600690915291822054611f6b918490611e9e565b6001600160a01b038086166000908152600660205260408082209390935590851681522054611f9a9083611810565b6001600160a01b0380851660008181526006602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611fee9086815260200190565b60405180910390a35060019392505050565b601d805460ff60a01b1916600160a01b179055601754601254600091612036916002916120309182908790612241565b906122c3565b905060006120448383611ed8565b905061204f81612305565b601254479060009061206f906120669060026122c3565b60175490611ed8565b905060006120916002612030846120306012548861224190919063ffffffff16565b905060006120ae836120306014548761224190919063ffffffff16565b905060006120c6826120c08786611ed8565b90611ed8565b905080156120e9576004546120e99061010090046001600160a01b031682612498565b811561210557600554612105906001600160a01b031683612498565b6000831180156121155750600087115b156121245761212487846124ce565b5050601d805460ff60a01b19169055505050505050565b6001600160a01b0383166000908152600b6020526040812054819060ff161561217f5761217860646120306015548661224190919063ffffffff16565b90506121bd565b6001600160a01b0384166000908152600b602052604090205460ff16156121bd576121ba60646120306016548661224190919063ffffffff16565b90505b801561223757306000908152600660205260409020546121dd9082611810565b30600081815260066020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061222e9085815260200190565b60405180910390a35b611ecf8382611ed8565b60008260000361225357506000610d31565b600061225f8385612811565b90508261226c8583612830565b14610f0c5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610cec565b6000610f0c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061257e565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061233a5761233a612895565b6001600160a01b03928316602091820292909201810191909152601c54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612393573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123b79190612852565b816001815181106123ca576123ca612895565b6001600160a01b039283166020918202929092010152601c546123f0913091168461188d565b601c5460405163791ac94760e01b81526001600160a01b039091169063791ac947906124299085906000908690309042906004016128ef565b600060405180830381600087803b15801561244357600080fd5b505af1158015612457573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a7828260405161248c92919061292b565b60405180910390a15050565b6040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015610e53573d6000803e3d6000fd5b601c546124e69030906001600160a01b03168461188d565b601c5460405163f305d71960e01b81523060048201526024810184905260006044820181905260648201523360848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af1158015612552573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612577919061294c565b5050505050565b6000818361259f5760405162461bcd60e51b8152600401610cec91906125ac565b506000611ecf8486612830565b600060208083528351808285015260005b818110156125d9578581018301518582016040015282016125bd565b506000604082860101526040601f19601f8301168501019250505092915050565b60008060006060848603121561260f57600080fd5b505081359360208301359350604090920135919050565b6001600160a01b0381168114610d8d57600080fd5b6000806040838503121561264e57600080fd5b823561265981612626565b946020939093013593505050565b8035801515811461267757600080fd5b919050565b60006020828403121561268e57600080fd5b610f0c82612667565b6000602082840312156126a957600080fd5b5035919050565b600080604083850312156126c357600080fd5b82356126ce81612626565b91506126dc60208401612667565b90509250929050565b6000806000606084860312156126fa57600080fd5b833561270581612626565b9250602084013561271581612626565b929592945050506040919091013590565b60006020828403121561273857600080fd5b8135610f0c81612626565b6000806040838503121561275657600080fd5b823561276181612626565b9150602083013561277181612626565b809150509250929050565b600181811c9082168061279057607f821691505b6020821081036127b057634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252600b908201526a085055551213d49256915160aa1b604082015260600190565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161561282b5761282b6127fb565b500290565b60008261284d57634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561286457600080fd5b8151610f0c81612626565b80820180821115610d3157610d316127fb565b81810381811115610d3157610d316127fb565b634e487b7160e01b600052603260045260246000fd5b600081518084526020808501945080840160005b838110156128e45781516001600160a01b0316875295820195908201906001016128bf565b509495945050505050565b85815284602082015260a06040820152600061290e60a08301866128ab565b6001600160a01b0394909416606083015250608001529392505050565b82815260406020820152600061294460408301846128ab565b949350505050565b60008060006060848603121561296157600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220293ef0ebca20d6aec8339e9348e1c7cba6919714381fd8d4c5316a17036199b164736f6c63430008100033
Deployed Bytecode
0x6080604052600436106103d25760003560e01c8063844d591c116101fd578063c816841b11610118578063ec28438a116100ab578063f1d5f5171161007a578063f1d5f51714610b93578063f2fde38b14610bb3578063f84ba65d14610bd3578063f872858a14610bf3578063ffb54a9914610c1457600080fd5b8063ec28438a14610b1d578063ef422a1814610b3d578063f0b37c0414610b5d578063f0cd1dac14610b7d57600080fd5b8063d158272d116100e7578063d158272d14610a7b578063da00097d14610aa0578063dc44b6a014610ac1578063dd62ed3e14610ad757600080fd5b8063c816841b146109ff578063c860795214610a1f578063c867d60b14610a35578063cab0347114610a6557600080fd5b8063a83f53a711610190578063c2d4640e1161015f578063c2d4640e14610993578063c469b6dd146109b3578063c49b9a80146109c9578063c5d24189146109e957600080fd5b8063a83f53a714610927578063a9059cbb1461093d578063b6a5d7de1461095d578063bf56b3711461097d57600080fd5b8063a073d37f116101cc578063a073d37f146108bc578063a08e671f146108d1578063a457c2d7146108e7578063a5d69d1f1461090757600080fd5b8063844d591c1461084157806388790a68146108615780638b42507f1461087757806395d89b41146108a757600080fd5b8063313ce567116102ed5780635881f3ef1161028057806370a082311161024f57806370a08231146107c95780637d1db4a5146107ff578063807c2d9c1461081557806382eefb431461082b57600080fd5b80635881f3ef1461074357806361a23c691461076357806368092bd9146107795780636c9bb93b1461079957600080fd5b80634a74bb02116102bc5780634a74bb02146106bc5780634cb80fd5146106dd5780635342acb4146106fd57806357a5802f1461072d57600080fd5b8063313ce5671461062a578063395093511461064c5780633b97084a1461066c5780633ecad2711461068c57600080fd5b80631da1db5e1161036557806327c8f8351161033457806327c8f835146105925780632b112e49146105c65780632c4b2334146105db5780632f54bf6e146105fb57600080fd5b80631da1db5e146105125780632198cf6c1461053257806323b872dd146105525780632563ae831461057257600080fd5b80631245e347116103a15780631245e3471461047b5780631694505e146104b357806318160ddd146104d35780631870517a146104f257600080fd5b806306fdde03146103de5780630873321414610409578063095ea7b31461042b5780630d2959801461045b57600080fd5b366103d957005b600080fd5b3480156103ea57600080fd5b506103f3610c35565b60405161040091906125ac565b60405180910390f35b34801561041557600080fd5b506104296104243660046125fa565b610cc7565b005b34801561043757600080fd5b5061044b61044636600461263b565b610d20565b6040519015158152602001610400565b34801561046757600080fd5b5061042961047636600461267c565b610d37565b34801561048757600080fd5b5060055461049b906001600160a01b031681565b6040516001600160a01b039091168152602001610400565b3480156104bf57600080fd5b50601c5461049b906001600160a01b031681565b3480156104df57600080fd5b506018545b604051908152602001610400565b3480156104fe57600080fd5b5061042961050d3660046125fa565b610d90565b34801561051e57600080fd5b5061042961052d366004612697565b610dda565b34801561053e57600080fd5b5061042961054d3660046126b0565b610e58565b34801561055e57600080fd5b5061044b61056d3660046126e5565b610ea8565b34801561057e57600080fd5b5061042961058d36600461267c565b610f13565b34801561059e57600080fd5b5061049b7f000000000000000000000000000000000000000000000000000000000000dead81565b3480156105d257600080fd5b506104e4610f56565b3480156105e757600080fd5b506104296105f6366004612726565b610fa0565b34801561060757600080fd5b5061044b610616366004612726565b6000546001600160a01b0391821691161490565b34801561063657600080fd5b5060045460405160ff9091168152602001610400565b34801561065857600080fd5b5061044b61066736600461263b565b610fe7565b34801561067857600080fd5b50610429610687366004612697565b61101d565b34801561069857600080fd5b5061044b6106a7366004612726565b600b6020526000908152604090205460ff1681565b3480156106c857600080fd5b50601d5461044b90600160a81b900460ff1681565b3480156106e957600080fd5b506104296106f8366004612726565b611047565b34801561070957600080fd5b5061044b610718366004612726565b60086020526000908152604090205460ff1681565b34801561073957600080fd5b506104e460125481565b34801561074f57600080fd5b5061049b61075e366004612726565b611094565b34801561076f57600080fd5b506104e460135481565b34801561078557600080fd5b506104296107943660046126b0565b6113cc565b3480156107a557600080fd5b5061044b6107b4366004612726565b601e6020526000908152604090205460ff1681565b3480156107d557600080fd5b506104e46107e4366004612726565b6001600160a01b031660009081526006602052604090205490565b34801561080b57600080fd5b506104e460195481565b34801561082157600080fd5b506104e4601a5481565b34801561083757600080fd5b506104e460165481565b34801561084d57600080fd5b5061042961085c3660046126b0565b61141c565b34801561086d57600080fd5b506104e4600f5481565b34801561088357600080fd5b5061044b610892366004612726565b600a6020526000908152604090205460ff1681565b3480156108b357600080fd5b506103f3611471565b3480156108c857600080fd5b50601b546104e4565b3480156108dd57600080fd5b506104e460175481565b3480156108f357600080fd5b5061044b61090236600461263b565b611480565b34801561091357600080fd5b5061042961092236600461267c565b6114cf565b34801561093357600080fd5b506104e460145481565b34801561094957600080fd5b5061044b61095836600461263b565b611517565b34801561096957600080fd5b50610429610978366004612726565b611524565b34801561098957600080fd5b506104e4601f5481565b34801561099f57600080fd5b506104296109ae3660046125fa565b611575565b3480156109bf57600080fd5b506104e4600e5481565b3480156109d557600080fd5b506104296109e436600461267c565b6115bf565b3480156109f557600080fd5b506104e4600d5481565b348015610a0b57600080fd5b50601d5461049b906001600160a01b031681565b348015610a2b57600080fd5b506104e460105481565b348015610a4157600080fd5b5061044b610a50366004612726565b60096020526000908152604090205460ff1681565b348015610a7157600080fd5b506104e460115481565b348015610a8757600080fd5b5060045461049b9061010090046001600160a01b031681565b348015610aac57600080fd5b50601d5461044b90600160b01b900460ff1681565b348015610acd57600080fd5b506104e4600c5481565b348015610ae357600080fd5b506104e4610af2366004612743565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205490565b348015610b2957600080fd5b50610429610b38366004612697565b611641565b348015610b4957600080fd5b50610429610b583660046126b0565b61166b565b348015610b6957600080fd5b50610429610b78366004612726565b6116bb565b348015610b8957600080fd5b506104e460155481565b348015610b9f57600080fd5b50610429610bae366004612697565b611706565b348015610bbf57600080fd5b50610429610bce366004612726565b611730565b348015610bdf57600080fd5b50610429610bee3660046126b0565b6117c0565b348015610bff57600080fd5b50601d5461044b90600160b81b900460ff1681565b348015610c2057600080fd5b50601d5461044b90600160c01b900460ff1681565b606060028054610c449061277c565b80601f0160208091040260200160405190810160405280929190818152602001828054610c709061277c565b8015610cbd5780601f10610c9257610100808354040283529160200191610cbd565b820191906000526020600020905b815481529060010190602001808311610ca057829003601f168201915b5050505050905090565b610cd03361186f565b610cf55760405162461bcd60e51b8152600401610cec906127b6565b60405180910390fd5b600f83905560108290556011819055610d1881610d128585611810565b90611810565b601655505050565b6000610d2d33848461188d565b5060015b92915050565b6000546001600160a01b03163314610d615760405162461bcd60e51b8152600401610cec906127db565b601d805460ff60c01b1916600160c01b8315158102919091179182905560ff91041615610d8d5743601f555b50565b610d993361186f565b610db55760405162461bcd60e51b8152600401610cec906127b6565b600c839055600d829055600e819055610dd281610d128585611810565b601555505050565b610de33361186f565b610dff5760405162461bcd60e51b8152600401610cec906127b6565b600454479061010090046001600160a01b03166108fc6064610e218585612811565b610e2b9190612830565b6040518115909202916000818181858888f19350505050158015610e53573d6000803e3d6000fd5b505050565b610e613361186f565b610e7d5760405162461bcd60e51b8152600401610cec906127b6565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6000610eb58484846119b1565b50610f088433610f038560405180606001604052806028815260200161297b602891396001600160a01b038a1660009081526007602090815260408083203384529091529020549190611e9e565b61188d565b5060015b9392505050565b610f1c3361186f565b610f385760405162461bcd60e51b8152600401610cec906127b6565b601d8054911515600160b81b0260ff60b81b19909216919091179055565b7f000000000000000000000000000000000000000000000000000000000000dead6001600160a01b0316600090815260066020526040812054601854610f9b91611ed8565b905090565b610fa93361186f565b610fc55760405162461bcd60e51b8152600401610cec906127b6565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b3360008181526007602090815260408083206001600160a01b03871684529091528120549091610d2d918590610f039086611810565b6110263361186f565b6110425760405162461bcd60e51b8152600401610cec906127b6565b601b55565b6110503361186f565b61106c5760405162461bcd60e51b8152600401610cec906127b6565b600480546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b600080546001600160a01b031633146110bf5760405162461bcd60e51b8152600401610cec906127db565b6000829050806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611102573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111269190612852565b6001600160a01b031663e6a4390530836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611173573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111979190612852565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa1580156111e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112069190612852565b91506001600160a01b03821661135d57806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611254573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112789190612852565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112e99190612852565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015611336573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061135a9190612852565b91505b601d80546001600160a01b03199081166001600160a01b038581169182178455601c8054909316948116949094179091556000908152600960209081526040808320805460ff19908116600190811790925594549095168352600b909152902080549091169091179055919050565b6113d53361186f565b6113f15760405162461bcd60e51b8152600401610cec906127b6565b6001600160a01b03919091166000908152601e60205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146114465760405162461bcd60e51b8152600401610cec906127db565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b606060038054610c449061277c565b6000610d2d3384610f03856040518060600160405280602581526020016129a3602591393360009081526007602090815260408083206001600160a01b038d1684529091529020549190611e9e565b6000546001600160a01b031633146114f95760405162461bcd60e51b8152600401610cec906127db565b601d8054911515600160b01b0260ff60b01b19909216919091179055565b6000610f083384846119b1565b6000546001600160a01b0316331461154e5760405162461bcd60e51b8152600401610cec906127db565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b61157e3361186f565b61159a5760405162461bcd60e51b8152600401610cec906127b6565b6012839055601382905560148190556115b781610d128585611810565b601755505050565b6000546001600160a01b031633146115e95760405162461bcd60e51b8152600401610cec906127db565b601d8054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599061163690831515815260200190565b60405180910390a150565b61164a3361186f565b6116665760405162461bcd60e51b8152600401610cec906127b6565b601955565b6116743361186f565b6116905760405162461bcd60e51b8152600401610cec906127b6565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146116e55760405162461bcd60e51b8152600401610cec906127db565b6001600160a01b03166000908152600160205260409020805460ff19169055565b61170f3361186f565b61172b5760405162461bcd60e51b8152600401610cec906127b6565b601a55565b6000546001600160a01b0316331461175a5760405162461bcd60e51b8152600401610cec906127db565b600080546001600160a01b0319166001600160a01b038316908117825580825260016020818152604093849020805460ff191690921790915591519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639101611636565b6117c93361186f565b6117e55760405162461bcd60e51b8152600401610cec906127b6565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b60008061181d838561286f565b905083811015610f0c5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610cec565b6001600160a01b031660009081526001602052604090205460ff1690565b6001600160a01b0383166118ef5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610cec565b6001600160a01b0382166119505760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610cec565b6001600160a01b0383811660008181526007602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b038416611a175760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610cec565b6001600160a01b038316611a795760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610cec565b6001600160a01b0384166000908152601e602052604090205460ff16158015611abb57506001600160a01b0383166000908152601e602052604090205460ff16155b611b005760405162461bcd60e51b81526020600482015260166024820152751058d8dbdd5b9d081a5cc8189b1858dadb1a5cdd195960521b6044820152606401610cec565b6001600160a01b03841660009081526001602052604090205460ff16158015611b4257506001600160a01b03831660009081526001602052604090205460ff16155b15611b9757601d54600160c01b900460ff16611b975760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b6044820152606401610cec565b601d54600160a01b900460ff1615611bbb57611bb4848484611f1a565b9050610f0c565b6001600160a01b0384166000908152600a602052604090205460ff16158015611bfd57506001600160a01b0383166000908152600a602052604090205460ff16155b15611c6557601954821115611c655760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610cec565b30600090815260066020526040902054601b5481108015908190611c935750601d54600160a01b900460ff16155b8015611cb857506001600160a01b0386166000908152600b602052604090205460ff16155b8015611ccd5750601d54600160a81b900460ff165b15611cf357601d54600160b01b900460ff1615611cea57601b5491505b611cf382612000565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038916600090815260069091529190912054611d45918690611e9e565b6001600160a01b038716600090815260066020908152604080832093909355600890529081205460ff1680611d9257506001600160a01b03861660009081526008602052604090205460ff165b611da657611da187878761213b565b611da8565b845b601d54909150600160b81b900460ff168015611ddd57506001600160a01b03861660009081526009602052604090205460ff16155b15611e1357601a54611e0882610d12896001600160a01b031660009081526006602052604090205490565b1115611e1357600080fd5b6001600160a01b038616600090815260066020526040902054611e369082611810565b6001600160a01b0380881660008181526006602052604090819020939093559151908916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611e8a9085815260200190565b60405180910390a360019350505050610f0c565b60008184841115611ec25760405162461bcd60e51b8152600401610cec91906125ac565b506000611ecf8486612882565b95945050505050565b6000610f0c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611e9e565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600690915291822054611f6b918490611e9e565b6001600160a01b038086166000908152600660205260408082209390935590851681522054611f9a9083611810565b6001600160a01b0380851660008181526006602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611fee9086815260200190565b60405180910390a35060019392505050565b601d805460ff60a01b1916600160a01b179055601754601254600091612036916002916120309182908790612241565b906122c3565b905060006120448383611ed8565b905061204f81612305565b601254479060009061206f906120669060026122c3565b60175490611ed8565b905060006120916002612030846120306012548861224190919063ffffffff16565b905060006120ae836120306014548761224190919063ffffffff16565b905060006120c6826120c08786611ed8565b90611ed8565b905080156120e9576004546120e99061010090046001600160a01b031682612498565b811561210557600554612105906001600160a01b031683612498565b6000831180156121155750600087115b156121245761212487846124ce565b5050601d805460ff60a01b19169055505050505050565b6001600160a01b0383166000908152600b6020526040812054819060ff161561217f5761217860646120306015548661224190919063ffffffff16565b90506121bd565b6001600160a01b0384166000908152600b602052604090205460ff16156121bd576121ba60646120306016548661224190919063ffffffff16565b90505b801561223757306000908152600660205260409020546121dd9082611810565b30600081815260066020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061222e9085815260200190565b60405180910390a35b611ecf8382611ed8565b60008260000361225357506000610d31565b600061225f8385612811565b90508261226c8583612830565b14610f0c5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610cec565b6000610f0c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061257e565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061233a5761233a612895565b6001600160a01b03928316602091820292909201810191909152601c54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612393573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123b79190612852565b816001815181106123ca576123ca612895565b6001600160a01b039283166020918202929092010152601c546123f0913091168461188d565b601c5460405163791ac94760e01b81526001600160a01b039091169063791ac947906124299085906000908690309042906004016128ef565b600060405180830381600087803b15801561244357600080fd5b505af1158015612457573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a7828260405161248c92919061292b565b60405180910390a15050565b6040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015610e53573d6000803e3d6000fd5b601c546124e69030906001600160a01b03168461188d565b601c5460405163f305d71960e01b81523060048201526024810184905260006044820181905260648201523360848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af1158015612552573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612577919061294c565b5050505050565b6000818361259f5760405162461bcd60e51b8152600401610cec91906125ac565b506000611ecf8486612830565b600060208083528351808285015260005b818110156125d9578581018301518582016040015282016125bd565b506000604082860101526040601f19601f8301168501019250505092915050565b60008060006060848603121561260f57600080fd5b505081359360208301359350604090920135919050565b6001600160a01b0381168114610d8d57600080fd5b6000806040838503121561264e57600080fd5b823561265981612626565b946020939093013593505050565b8035801515811461267757600080fd5b919050565b60006020828403121561268e57600080fd5b610f0c82612667565b6000602082840312156126a957600080fd5b5035919050565b600080604083850312156126c357600080fd5b82356126ce81612626565b91506126dc60208401612667565b90509250929050565b6000806000606084860312156126fa57600080fd5b833561270581612626565b9250602084013561271581612626565b929592945050506040919091013590565b60006020828403121561273857600080fd5b8135610f0c81612626565b6000806040838503121561275657600080fd5b823561276181612626565b9150602083013561277181612626565b809150509250929050565b600181811c9082168061279057607f821691505b6020821081036127b057634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252600b908201526a085055551213d49256915160aa1b604082015260600190565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161561282b5761282b6127fb565b500290565b60008261284d57634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561286457600080fd5b8151610f0c81612626565b80820180821115610d3157610d316127fb565b81810381811115610d3157610d316127fb565b634e487b7160e01b600052603260045260246000fd5b600081518084526020808501945080840160005b838110156128e45781516001600160a01b0316875295820195908201906001016128bf565b509495945050505050565b85815284602082015260a06040820152600061290e60a08301866128ab565b6001600160a01b0394909416606083015250608001529392505050565b82815260406020820152600061294460408301846128ab565b949350505050565b60008060006060848603121561296157600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220293ef0ebca20d6aec8339e9348e1c7cba6919714381fd8d4c5316a17036199b164736f6c63430008100033
Deployed Bytecode Sourcemap
14888:15743:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18718:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21287:340;;;;;;;;;;-1:-1:-1;21287:340:0;;;;;:::i;:::-;;:::i;:::-;;20012:161;;;;;;;;;;-1:-1:-1;20012:161:0;;;;;:::i;:::-;;:::i;:::-;;;1509:14:1;;1502:22;1484:41;;1472:2;1457:18;20012:161:0;1344:187:1;22027:171:0;;;;;;;;;;-1:-1:-1;22027:171:0;;;;;:::i;:::-;;:::i;15267:94::-;;;;;;;;;;-1:-1:-1;15267:94:0;;;;-1:-1:-1;;;;;15267:94:0;;;;;;-1:-1:-1;;;;;2066:32:1;;;2048:51;;2036:2;2021:18;15267:94:0;1886:219:1;16586:41:0;;;;;;;;;;-1:-1:-1;16586:41:0;;;;-1:-1:-1;;;;;16586:41:0;;;18995:100;;;;;;;;;;-1:-1:-1;19075:12:0;;18995:100;;;2491:25:1;;;2479:2;2464:18;18995:100:0;2345:177:1;20947:332:0;;;;;;;;;;-1:-1:-1;20947:332:0;;;;;:::i;:::-;;:::i;23827:220::-;;;;;;;;;;-1:-1:-1;23827:220:0;;;;;:::i;:::-;;:::i;22450:136::-;;;;;;;;;;-1:-1:-1;22450:136:0;;;;;:::i;:::-;;:::i;25143:313::-;;;;;;;;;;-1:-1:-1;25143:313:0;;;;;:::i;:::-;;:::i;22328:114::-;;;;;;;;;;-1:-1:-1;22328:114:0;;;;;:::i;:::-;;:::i;15387:81::-;;;;;;;;;;;;;;;23557:128;;;;;;;;;;;;;:::i;23105:::-;;;;;;;;;;-1:-1:-1;23105:128:0;;;;;:::i;:::-;;:::i;6436:103::-;;;;;;;;;;-1:-1:-1;6436:103:0;;;;;:::i;:::-;6491:4;6526:5;-1:-1:-1;;;;;6515:16:0;;;6526:5;;6515:16;;6436:103;18904:83;;;;;;;;;;-1:-1:-1;18970:9:0;;18904:83;;18970:9;;;;4095:36:1;;4083:2;4068:18;18904:83:0;3953:184:1;19381:218:0;;;;;;;;;;-1:-1:-1;19381:218:0;;;;;:::i;:::-;;:::i;22705:123::-;;;;;;;;;;-1:-1:-1;22705:123:0;;;;;:::i;:::-;;:::i;15779:45::-;;;;;;;;;;-1:-1:-1;15779:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;16701:40;;;;;;;;;;-1:-1:-1;16701:40:0;;;;-1:-1:-1;;;16701:40:0;;;;;;22836:138;;;;;;;;;;-1:-1:-1;22836:138:0;;;;;:::i;:::-;;:::i;15608:50::-;;;;;;;;;;-1:-1:-1;15608:50:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;16080:34;;;;;;;;;;;;;;;;24059:807;;;;;;;;;;-1:-1:-1;24059:807:0;;;;;:::i;:::-;;:::i;16121:34::-;;;;;;;;;;;;;;;;22982:115;;;;;;;;;;-1:-1:-1;22982:115:0;;;;;:::i;:::-;;:::i;16880:46::-;;;;;;;;;;-1:-1:-1;16880:46:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;19103:119;;;;;;;;;;-1:-1:-1;19103:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;19196:18:0;19169:7;19196:18;;;:9;:18;;;;;;;19103:119;16394:47;;;;;;;;;;;;;;;;16469:45;;;;;;;;;;;;;;;;16243:37;;;;;;;;;;;;;;;;20526:129;;;;;;;;;;-1:-1:-1;20526:129:0;;;;;:::i;:::-;;:::i;15954:36::-;;;;;;;;;;;;;;;;15724:48;;;;;;;;;;-1:-1:-1;15724:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;18809:87;;;;;;;;;;;;;:::i;19884:120::-;;;;;;;;;;-1:-1:-1;19973:23:0;;19884:120;;16287:43;;;;;;;;;;;;;;;;19607:269;;;;;;;;;;-1:-1:-1;19607:269:0;;;;;:::i;:::-;;:::i;23420:125::-;;;;;;;;;;-1:-1:-1;23420:125:0;;;;;:::i;:::-;;:::i;16162:29::-;;;;;;;;;;;;;;;;24968:167;;;;;;;;;;-1:-1:-1;24968:167:0;;;;;:::i;:::-;;:::i;6115:88::-;;;;;;;;;;-1:-1:-1;6115:88:0;;;;;:::i;:::-;;:::i;16935:29::-;;;;;;;;;;;;;;;;21639:357;;;;;;;;;;-1:-1:-1;21639:357:0;;;;;:::i;:::-;;:::i;15917:30::-;;;;;;;;;;;;;;;;23241:171;;;;;;;;;;-1:-1:-1;23241:171:0;;;;;:::i;:::-;;:::i;15875:35::-;;;;;;;;;;;;;;;;16634:26;;;;;;;;;;-1:-1:-1;16634:26:0;;;;-1:-1:-1;;;;;16634:26:0;;;15997:36;;;;;;;;;;;;;;;;15665:52;;;;;;;;;;-1:-1:-1;15665:52:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;16040:31;;;;;;;;;;;;;;;;15140:99;;;;;;;;;;-1:-1:-1;15140:99:0;;;;;;;-1:-1:-1;;;;;15140:99:0;;;16748:45;;;;;;;;;;-1:-1:-1;16748:45:0;;;;-1:-1:-1;;;16748:45:0;;;;;;15833:35;;;;;;;;;;;;;;;;19230:143;;;;;;;;;;-1:-1:-1;19230:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;19338:18:0;;;19311:7;19338:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;19230:143;22210:110;;;;;;;;;;-1:-1:-1;22210:110:0;;;;;:::i;:::-;;:::i;20803:136::-;;;;;;;;;;-1:-1:-1;20803:136:0;;;;;:::i;:::-;;:::i;6285:91::-;;;;;;;;;;-1:-1:-1;6285:91:0;;;;;:::i;:::-;;:::i;16200:36::-;;;;;;;;;;;;;;;;22594:103;;;;;;;;;;-1:-1:-1;22594:103:0;;;;;:::i;:::-;;:::i;6832:167::-;;;;;;;;;;-1:-1:-1;6832:167:0;;;;;:::i;:::-;;:::i;20663:128::-;;;;;;;;;;-1:-1:-1;20663:128:0;;;;;:::i;:::-;;:::i;16800:35::-;;;;;;;;;;-1:-1:-1;16800:35:0;;;;-1:-1:-1;;;16800:35:0;;;;;;16842:31;;;;;;;;;;-1:-1:-1;16842:31:0;;;;-1:-1:-1;;;16842:31:0;;;;;;18718:83;18755:13;18788:5;18781:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18718:83;:::o;21287:340::-;6000:24;6013:10;6000:12;:24::i;:::-;5992:48;;;;-1:-1:-1;;;5992:48:0;;;;;;;:::i;:::-;;;;;;;;;21410:17:::1;:35:::0;;;21456:17:::1;:35:::0;;;21502:12:::1;:25:::0;;;21561:58:::1;21517:10:::0;21561:40:::1;21430:15:::0;21476;21561:21:::1;:40::i;:::-;:44:::0;::::1;:58::i;:::-;21540:18;:79:::0;-1:-1:-1;;;21287:340:0:o;20012:161::-;20087:4;20104:39;198:10;20127:7;20136:6;20104:8;:39::i;:::-;-1:-1:-1;20161:4:0;20012:161;;;;;:::o;22027:171::-;6491:4;6526:5;-1:-1:-1;;;;;6526:5:0;5839:10;6515:16;5823:38;;;;-1:-1:-1;;;5823:38:0;;;;;;;:::i;:::-;22092:11:::1;:21:::0;;-1:-1:-1;;;;22092:21:0::1;-1:-1:-1::0;;;22092:21:0;::::1;;::::0;::::1;::::0;;;::::1;::::0;;;;::::1;22127:11:::0;::::1;;22124:67;;;22167:12;22154:10;:25:::0;22124:67:::1;22027:171:::0;:::o;20947:332::-;6000:24;6013:10;6000:12;:24::i;:::-;5992:48;;;;-1:-1:-1;;;5992:48:0;;;;;;;:::i;:::-;21069:16:::1;:34:::0;;;21114:16:::1;:34:::0;;;21159:11:::1;:24:::0;;;21216:55:::1;21173:10:::0;21216:38:::1;21088:15:::0;21133;21216:20:::1;:38::i;:55::-;21196:17;:75:::0;-1:-1:-1;;;20947:332:0:o;23827:220::-;6000:24;6013:10;6000:12;:24::i;:::-;5992:48;;;;-1:-1:-1;;;5992:48:0;;;;;;;:::i;:::-;23971:22:::1;::::0;23931:21:::1;::::0;23971:22:::1;::::0;::::1;-1:-1:-1::0;;;;;23971:22:0::1;23963:76;24035:3;24004:28;24016:16:::0;23931:21;24004:28:::1;:::i;:::-;:34;;;;:::i;:::-;23963:76;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;23900:147;23827:220:::0;:::o;22450:136::-;6000:24;6013:10;6000:12;:24::i;:::-;5992:48;;;;-1:-1:-1;;;5992:48:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22542:27:0;;;::::1;;::::0;;;:19:::1;:27;::::0;;;;:36;;-1:-1:-1;;22542:36:0::1;::::0;::::1;;::::0;;;::::1;::::0;;22450:136::o;25143:313::-;25241:4;25258:36;25268:6;25276:9;25287:6;25258:9;:36::i;:::-;-1:-1:-1;25305:121:0;25314:6;198:10;25336:89;25374:6;25336:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;25336:19:0;;;;;;:11;:19;;;;;;;;198:10;25336:33;;;;;;;;;;:37;:89::i;:::-;25305:8;:121::i;:::-;-1:-1:-1;25444:4:0;25143:313;;;;;;:::o;22328:114::-;6000:24;6013:10;6000:12;:24::i;:::-;5992:48;;;;-1:-1:-1;;;5992:48:0;;;;;;;:::i;:::-;22407:16:::1;:27:::0;;;::::1;;-1:-1:-1::0;;;22407:27:0::1;-1:-1:-1::0;;;;22407:27:0;;::::1;::::0;;;::::1;::::0;;22328:114::o;23557:128::-;23664:11;-1:-1:-1;;;;;19196:18:0;23610:7;19196:18;;;:9;:18;;;;;;23637:12;;:40;;:16;:40::i;:::-;23630:47;;23557:128;:::o;23105:::-;6000:24;6013:10;6000:12;:24::i;:::-;5992:48;;;;-1:-1:-1;;;5992:48:0;;;;;;;:::i;:::-;23186:17:::1;:39:::0;;-1:-1:-1;;;;;;23186:39:0::1;-1:-1:-1::0;;;;;23186:39:0;;;::::1;::::0;;;::::1;::::0;;23105:128::o;19381:218::-;198:10;19469:4;19518:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;19518:34:0;;;;;;;;;;19469:4;;19486:83;;19509:7;;19518:50;;19557:10;19518:38;:50::i;22705:123::-;6000:24;6013:10;6000:12;:24::i;:::-;5992:48;;;;-1:-1:-1;;;5992:48:0;;;;;;;:::i;:::-;22786:23:::1;:34:::0;22705:123::o;22836:138::-;6000:24;6013:10;6000:12;:24::i;:::-;5992:48;;;;-1:-1:-1;;;5992:48:0;;;;;;;:::i;:::-;22922:22:::1;:44:::0;;-1:-1:-1;;;;;22922:44:0;;::::1;;;-1:-1:-1::0;;;;;;22922:44:0;;::::1;::::0;;;::::1;::::0;;22836:138::o;24059:807::-;24139:22;6526:5;;-1:-1:-1;;;;;6526:5:0;5839:10;6515:16;5823:38;;;;-1:-1:-1;;;5823:38:0;;;;;;;:::i;:::-;24176:35:::1;24233:16;24176:74;;24299:16;-1:-1:-1::0;;;;;24299:24:0::1;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;24281:53:0::1;;24343:4;24350:16;-1:-1:-1::0;;;;;24350:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24281:93;::::0;-1:-1:-1;;;;;;24281:93:0::1;::::0;;;;;;-1:-1:-1;;;;;6867:15:1;;;24281:93:0::1;::::0;::::1;6849:34:1::0;6919:15;;6899:18;;;6892:43;6784:18;;24281:93:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24264:110:::0;-1:-1:-1;;;;;;24390:28:0;::::1;24387:225;;24504:16;-1:-1:-1::0;;;;;24504:24:0::1;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;24486:74:0::1;;24569:4;24576:16;-1:-1:-1::0;;;;;24576:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24486:114;::::0;-1:-1:-1;;;;;;24486:114:0::1;::::0;;;;;;-1:-1:-1;;;;;6867:15:1;;;24486:114:0::1;::::0;::::1;6849:34:1::0;6919:15;;6899:18;;;6892:43;6784:18;;24486:114:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24469:131;;24387:225;24624:11;:28:::0;;-1:-1:-1;;;;;;24624:28:0;;::::1;-1:-1:-1::0;;;;;24624:28:0;;::::1;::::0;;::::1;::::0;;24686:15:::1;:34:::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;-1:-1:-1;24758:41:0;;;:19:::1;:41;::::0;;;;;;;:48;;-1:-1:-1;;24758:48:0;;::::1;-1:-1:-1::0;24758:48:0;;::::1;::::0;;;24838:11;;;;::::1;24817:34:::0;;:12:::1;:34:::0;;;;;:41;;;;::::1;::::0;;::::1;::::0;;24624:28;24638:14;-1:-1:-1;24059:807:0:o;22982:115::-;6000:24;6013:10;6000:12;:24::i;:::-;5992:48;;;;-1:-1:-1;;;5992:48:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23061:20:0;;;::::1;;::::0;;;:14:::1;:20;::::0;;;;:28;;-1:-1:-1;;23061:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;22982:115::o;20526:129::-;6491:4;6526:5;-1:-1:-1;;;;;6526:5:0;5839:10;6515:16;5823:38;;;;-1:-1:-1;;;5823:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20615:21:0;;;::::1;;::::0;;;:12:::1;:21;::::0;;;;:32;;-1:-1:-1;;20615:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;20526:129::o;18809:87::-;18848:13;18881:7;18874:14;;;;;:::i;19607:269::-;19700:4;19717:129;198:10;19740:7;19749:96;19788:15;19749:96;;;;;;;;;;;;;;;;;198:10;19749:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;19749:34:0;;;;;;;;;;;;:38;:96::i;23420:125::-;6491:4;6526:5;-1:-1:-1;;;;;6526:5:0;5839:10;6515:16;5823:38;;;;-1:-1:-1;;;5823:38:0;;;;;;;:::i;:::-;23501:25:::1;:36:::0;;;::::1;;-1:-1:-1::0;;;23501:36:0::1;-1:-1:-1::0;;;;23501:36:0;;::::1;::::0;;;::::1;::::0;;23420:125::o;24968:167::-;25046:4;25063:42;198:10;25087:9;25098:6;25063:9;:42::i;6115:88::-;6491:4;6526:5;-1:-1:-1;;;;;6526:5:0;5839:10;6515:16;5823:38;;;;-1:-1:-1;;;5823:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6175:13:0::1;;::::0;;;6191:4:::1;6175:13;::::0;;;;;;;:20;;-1:-1:-1;;6175:20:0::1;::::0;;::::1;::::0;;6115:88::o;21639:357::-;6000:24;6013:10;6000:12;:24::i;:::-;5992:48;;;;-1:-1:-1;;;5992:48:0;;;;;;;:::i;:::-;21779:15:::1;:35:::0;;;21825:15:::1;:35:::0;;;21871:10:::1;:25:::0;;;21936:52:::1;21884:12:::0;21936:36:::1;21797:17:::0;21843;21936:19:::1;:36::i;:52::-;21909:24;:79:::0;-1:-1:-1;;;21639:357:0:o;23241:171::-;6491:4;6526:5;-1:-1:-1;;;;;6526:5:0;5839:10;6515:16;5823:38;;;;-1:-1:-1;;;5823:38:0;;;;;;;:::i;:::-;23318:21:::1;:32:::0;;;::::1;;-1:-1:-1::0;;;23318:32:0::1;-1:-1:-1::0;;;;23318:32:0;;::::1;;::::0;;23366:38:::1;::::0;::::1;::::0;::::1;::::0;23342:8;1509:14:1;1502:22;1484:41;;1472:2;1457:18;;1344:187;23366:38:0::1;;;;;;;;23241:171:::0;:::o;22210:110::-;6000:24;6013:10;6000:12;:24::i;:::-;5992:48;;;;-1:-1:-1;;;5992:48:0;;;;;;;:::i;:::-;22286:12:::1;:26:::0;22210:110::o;20803:136::-;6000:24;6013:10;6000:12;:24::i;:::-;5992:48;;;;-1:-1:-1;;;5992:48:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20894:26:0;;;::::1;;::::0;;;:17:::1;:26;::::0;;;;:37;;-1:-1:-1;;20894:37:0::1;::::0;::::1;;::::0;;;::::1;::::0;;20803:136::o;6285:91::-;6491:4;6526:5;-1:-1:-1;;;;;6526:5:0;5839:10;6515:16;5823:38;;;;-1:-1:-1;;;5823:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6347:13:0::1;6363:5;6347:13:::0;;;:8:::1;:13;::::0;;;;:21;;-1:-1:-1;;6347:21:0::1;::::0;;6285:91::o;22594:103::-;6000:24;6013:10;6000:12;:24::i;:::-;5992:48;;;;-1:-1:-1;;;5992:48:0;;;;;;;:::i;:::-;22667:10:::1;:22:::0;22594:103::o;6832:167::-;6491:4;6526:5;-1:-1:-1;;;;;6526:5:0;5839:10;6515:16;5823:38;;;;-1:-1:-1;;;5823:38:0;;;;;;;:::i;:::-;6908:5:::1;:11:::0;;-1:-1:-1;;;;;;6908:11:0::1;-1:-1:-1::0;;;;;6908:11:0;::::1;::::0;;::::1;::::0;;6930:13;;;-1:-1:-1;6930:13:0::1;::::0;;;;;;;;:20;;-1:-1:-1;;6930:20:0::1;::::0;;::::1;::::0;;;6966:25;;2048:51:1;;;6966:25:0::1;::::0;2021:18:1;6966:25:0::1;1886:219:1::0;20663:128:0;6000:24;6013:10;6000:12;:24::i;:::-;5992:48;;;;-1:-1:-1;;;5992:48:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20751:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;20751:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;20663:128::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;;7494:2:1;1276:46:0;;;7476:21:1;7533:2;7513:18;;;7506:30;7572:29;7552:18;;;7545:57;7619:18;;1276:46:0;7292:351:1;6610:103:0;-1:-1:-1;;;;;6692:13:0;6668:4;6692:13;;;:8;:13;;;;;;;;;6610:103::o;20181:337::-;-1:-1:-1;;;;;20274:19:0;;20266:68;;;;-1:-1:-1;;;20266:68:0;;7850:2:1;20266:68:0;;;7832:21:1;7889:2;7869:18;;;7862:30;7928:34;7908:18;;;7901:62;-1:-1:-1;;;7979:18:1;;;7972:34;8023:19;;20266:68:0;7648:400:1;20266:68:0;-1:-1:-1;;;;;20353:21:0;;20345:68;;;;-1:-1:-1;;;20345:68:0;;8255:2:1;20345:68:0;;;8237:21:1;8294:2;8274:18;;;8267:30;8333:34;8313:18;;;8306:62;-1:-1:-1;;;8384:18:1;;;8377:32;8426:19;;20345:68:0;8053:398:1;20345:68:0;-1:-1:-1;;;;;20426:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;20478:32;;2491:25:1;;;20478:32:0;;2464:18:1;20478:32:0;;;;;;;20181:337;;;:::o;25464:1932::-;25551:4;-1:-1:-1;;;;;25578:20:0;;25570:70;;;;-1:-1:-1;;;25570:70:0;;8658:2:1;25570:70:0;;;8640:21:1;8697:2;8677:18;;;8670:30;8736:34;8716:18;;;8709:62;-1:-1:-1;;;8787:18:1;;;8780:35;8832:19;;25570:70:0;8456:401:1;25570:70:0;-1:-1:-1;;;;;25659:23:0;;25651:71;;;;-1:-1:-1;;;25651:71:0;;9064:2:1;25651:71:0;;;9046:21:1;9103:2;9083:18;;;9076:30;9142:34;9122:18;;;9115:62;-1:-1:-1;;;9193:18:1;;;9186:33;9236:19;;25651:71:0;8862:399:1;25651:71:0;-1:-1:-1;;;;;25742:22:0;;;;;;:14;:22;;;;;;;;25741:23;:53;;;;-1:-1:-1;;;;;;25769:25:0;;;;;;:14;:25;;;;;;;;25768:26;25741:53;25733:87;;;;-1:-1:-1;;;25733:87:0;;9468:2:1;25733:87:0;;;9450:21:1;9507:2;9487:18;;;9480:30;-1:-1:-1;;;9526:18:1;;;9519:52;9588:18;;25733:87:0;9266:346:1;25733:87:0;-1:-1:-1;;;;;25837:16:0;;;;;;:8;:16;;;;;;;;25836:17;:41;;;;-1:-1:-1;;;;;;25858:19:0;;;;;;:8;:19;;;;;;;;25857:20;25836:41;25833:115;;;25901:11;;-1:-1:-1;;;25901:11:0;;;;25893:43;;;;-1:-1:-1;;;25893:43:0;;9819:2:1;25893:43:0;;;9801:21:1;9858:2;9838:18;;;9831:30;-1:-1:-1;;;9877:18:1;;;9870:50;9937:18;;25893:43:0;9617:344:1;25893:43:0;25963:16;;-1:-1:-1;;;25963:16:0;;;;25960:1429;;;26013:41;26028:6;26036:9;26047:6;26013:14;:41::i;:::-;26006:48;;;;25960:1429;-1:-1:-1;;;;;26110:23:0;;;;;;:15;:23;;;;;;;;26109:24;:55;;;;-1:-1:-1;;;;;;26138:26:0;;;;;;:15;:26;;;;;;;;26137:27;26109:55;26106:170;;;26203:12;;26193:6;:22;;26185:75;;;;-1:-1:-1;;;26185:75:0;;10168:2:1;26185:75:0;;;10150:21:1;10207:2;10187:18;;;10180:30;10246:34;10226:18;;;10219:62;-1:-1:-1;;;10297:18:1;;;10290:38;10345:19;;26185:75:0;9966:404:1;26185:75:0;26353:4;26304:28;19196:18;;;:9;:18;;;;;;26429:23;;26405:47;;;;;;;26485:44;;-1:-1:-1;26513:16:0;;-1:-1:-1;;;26513:16:0;;;;26512:17;26485:44;:69;;;;-1:-1:-1;;;;;;26534:20:0;;;;;;:12;:20;;;;;;;;26533:21;26485:69;:94;;;;-1:-1:-1;26558:21:0;;-1:-1:-1;;;26558:21:0;;;;26485:94;26481:305;;;26617:25;;-1:-1:-1;;;26617:25:0;;;;26614:97;;;26688:23;;26665:46;;26614:97;26730:36;26745:20;26730:14;:36::i;:::-;26822:53;;;;;;;;;;;-1:-1:-1;;;26822:53:0;;;;;;;;-1:-1:-1;;;;;26822:17:0;;-1:-1:-1;26822:17:0;;;:9;:17;;;;;;;;:53;;26844:6;;26822:21;:53::i;:::-;-1:-1:-1;;;;;26802:17:0;;;;;;:9;:17;;;;;;;;:73;;;;26915:17;:25;;;;;;;;;:57;;-1:-1:-1;;;;;;26944:28:0;;;;;;:17;:28;;;;;;;;26915:57;26914:148;;27028:34;27036:6;27044:9;27055:6;27028:7;:34::i;:::-;26914:148;;;27019:6;26914:148;27082:16;;26892:170;;-1:-1:-1;;;;27082:16:0;;;;:51;;;;-1:-1:-1;;;;;;27103:30:0;;;;;;:19;:30;;;;;;;;27102:31;27082:51;27079:133;;;27201:10;;27160:37;27185:11;27160:20;27170:9;-1:-1:-1;;;;;19196:18:0;19169:7;19196:18;;;:9;:18;;;;;;;19103:119;27160:37;:51;;27152:60;;;;;;-1:-1:-1;;;;;27252:20:0;;;;;;:9;:20;;;;;;:37;;27277:11;27252:24;:37::i;:::-;-1:-1:-1;;;;;27229:20:0;;;;;;;:9;:20;;;;;;;:60;;;;27311:40;;;;;;;;;;27339:11;2491:25:1;;2479:2;2464:18;;2345:177;27311:40:0;;;;;;;;27373:4;27366: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;27404:330::-;27534:53;;;;;;;;;;;-1:-1:-1;;;27534:53:0;;;;;;;;-1:-1:-1;;;;;27534:17:0;;27497:4;27534:17;;;:9;:17;;;;;;;:53;;27556:6;;27534:21;:53::i;:::-;-1:-1:-1;;;;;27514:17:0;;;;;;;:9;:17;;;;;;:73;;;;27621:20;;;;;;;:32;;27646:6;27621:24;:32::i;:::-;-1:-1:-1;;;;;27598:20:0;;;;;;;:9;:20;;;;;;;:55;;;;27669:35;;;;;;;;;;27697:6;2491:25:1;;2479:2;2464:18;;2345:177;27669:35:0;;;;;;;;-1:-1:-1;27722:4:0;27404:330;;;;;:::o;27742:1048::-;17387:16;:23;;-1:-1:-1;;;;17387:23:0;-1:-1:-1;;;17387:23:0;;;27879:24:::1;::::0;27858:15:::1;::::0;17387:23;;27846:65:::1;::::0;27909:1:::1;::::0;27846:58:::1;::::0;;;:7;;:11:::1;:28::i;:::-;:32:::0;::::1;:58::i;:65::-;27824:87:::0;-1:-1:-1;27922:21:0::1;27946:24;:7:::0;27824:87;27946:11:::1;:24::i;:::-;27922:48;;27983:31;28000:13;27983:16;:31::i;:::-;28135:15;::::0;28050:21:::1;::::0;28025:22:::1;::::0;28106:52:::1;::::0;28135:22:::1;::::0;28155:1:::1;28135:19;:22::i;:::-;28106:24;::::0;;:28:::1;:52::i;:::-;28084:74;;28179:26;28208:59;28265:1;28208:52;28248:11;28208:35;28227:15;;28208:14;:18;;:35;;;;:::i;:59::-;28179:88;;28278:21;28302:47;28337:11;28302:30;28321:10;;28302:14;:18;;:30;;;;:::i;:47::-;28278:71:::0;-1:-1:-1;28360:26:0::1;28389:57;28278:71:::0;28389:38:::1;:14:::0;28408:18;28389::::1;:38::i;:::-;:42:::0;::::1;:57::i;:::-;28360:86:::0;-1:-1:-1;28462:22:0;;28459:104:::1;;28520:22;::::0;28499:64:::1;::::0;28520:22:::1;::::0;::::1;-1:-1:-1::0;;;;;28520:22:0::1;28544:18:::0;28499:20:::1;:64::i;:::-;28579:17:::0;;28576:89:::1;;28632:17;::::0;28611:54:::1;::::0;-1:-1:-1;;;;;28632:17:0::1;28651:13:::0;28611:20:::1;:54::i;:::-;28702:1;28681:18;:22;:41;;;;;28721:1;28707:11;:15;28681:41;28678:104;;;28737:45;28750:11;28763:18;28737:12;:45::i;:::-;-1:-1:-1::0;;17433:16:0;:24;;-1:-1:-1;;;;17433:24:0;;;-1:-1:-1;;;;;;27742:1048:0:o;30000:622::-;-1:-1:-1;;;;;30161:20:0;;30086:7;30161:20;;;:12;:20;;;;;;30086:7;;30161:20;;30158:223;;;30210:38;30244:3;30210:29;30221:17;;30210:6;:10;;:29;;;;:::i;:38::-;30198:50;;30158:223;;;-1:-1:-1;;;;;30278:23:0;;;;;;:12;:23;;;;;;;;30275:106;;;30330:39;30365:3;30330:30;30341:18;;30330:6;:10;;:30;;;;:::i;:39::-;30318:51;;30275:106;30404:13;;30401:173;;30479:4;30461:24;;;;:9;:24;;;;;;:39;;30490:9;30461:28;:39::i;:::-;30452:4;30434:24;;;;:9;:24;;;;;;;:66;;;;30520:42;;-1:-1:-1;;;;;30520:42:0;;;;;;;30552:9;2491:25:1;;2479:2;2464:18;;2345:177;30520:42:0;;;;;;;;30401:173;30593:21;:6;30604:9;30593:10;:21::i;1703:250::-;1761:7;1785:1;1790;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;;10710:2:1;1868:56:0;;;10692:21:1;10749:2;10729:18;;;10722:30;10788:34;10768:18;;;10761:62;-1:-1:-1;;;10839:18:1;;;10832:31;10880:19;;1868:56:0;10508:397:1;1961:132:0;2019:7;2046:39;2050:1;2053;2046:39;;;;;;;;;;;;;;;;;:3;:39::i;28802:666::-;28952:16;;;28966:1;28952:16;;;;;;;;28928:21;;28952:16;;;;;;;;;;-1:-1:-1;28952:16:0;28928:40;;28997:4;28979;28984:1;28979:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;28979:23:0;;;:7;;;;;;;;;;:23;;;;29023:15;;:22;;;-1:-1:-1;;;29023:22:0;;;;:15;;;;;:20;;:22;;;;;28979:7;;29023:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29013:4;29018:1;29013:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;29013:32:0;;;:7;;;;;;;;;:32;29090:15;;29058:62;;29075:4;;29090:15;29108:11;29058:8;:62::i;:::-;29159:15;;:240;;-1:-1:-1;;;29159:240:0;;-1:-1:-1;;;;;29159:15:0;;;;:66;;:240;;29240:11;;29159:15;;29310:4;;29337;;29373:15;;29159:240;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29425:35;29442:11;29455:4;29425:35;;;;;;;:::i;:::-;;;;;;;;28857:611;28802:666;:::o;23693:126::-;23785:26;;-1:-1:-1;;;;;23785:18:0;;;:26;;;;;23804:6;;23785:26;;;;23804:6;23785:18;:26;;;;;;;;;;;;;;;;;;;29476:516;29656:15;;29624:62;;29641:4;;-1:-1:-1;;;;;29656:15:0;29674:11;29624:8;:62::i;:::-;29729:15;;:255;;-1:-1:-1;;;29729:255:0;;29801:4;29729:255;;;12905:34:1;12955:18;;;12948:34;;;29729:15:0;12998:18:1;;;12991:34;;;13041:18;;;13034:34;29933:10:0;13084:19:1;;;13077:44;29958:15:0;13137:19:1;;;13130:35;-1:-1:-1;;;;;29729:15:0;;;;:31;;29768:9;;12839:19:1;;29729:255:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;29476:516;;:::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:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:316::-;644:6;652;660;713:2;701:9;692:7;688:23;684:32;681:52;;;729:1;726;719:12;681:52;-1:-1:-1;;752:23:1;;;822:2;807:18;;794:32;;-1:-1:-1;873:2:1;858:18;;;845:32;;567:316;-1:-1:-1;567:316:1:o;888:131::-;-1:-1:-1;;;;;963:31:1;;953:42;;943:70;;1009:1;1006;999:12;1024:315;1092:6;1100;1153:2;1141:9;1132:7;1128:23;1124:32;1121:52;;;1169:1;1166;1159:12;1121:52;1208:9;1195:23;1227:31;1252:5;1227:31;:::i;:::-;1277:5;1329:2;1314:18;;;;1301:32;;-1:-1:-1;;;1024:315:1:o;1536:160::-;1601:20;;1657:13;;1650:21;1640:32;;1630:60;;1686:1;1683;1676:12;1630:60;1536:160;;;:::o;1701:180::-;1757:6;1810:2;1798:9;1789:7;1785:23;1781:32;1778:52;;;1826:1;1823;1816:12;1778:52;1849:26;1865:9;1849:26;:::i;2527:180::-;2586:6;2639:2;2627:9;2618:7;2614:23;2610:32;2607:52;;;2655:1;2652;2645:12;2607:52;-1:-1:-1;2678:23:1;;2527:180;-1:-1:-1;2527:180:1:o;2712:315::-;2777:6;2785;2838:2;2826:9;2817:7;2813:23;2809:32;2806:52;;;2854:1;2851;2844:12;2806:52;2893:9;2880:23;2912:31;2937:5;2912:31;:::i;:::-;2962:5;-1:-1:-1;2986:35:1;3017:2;3002:18;;2986:35;:::i;:::-;2976:45;;2712:315;;;;;:::o;3032:456::-;3109:6;3117;3125;3178:2;3166:9;3157:7;3153:23;3149:32;3146:52;;;3194:1;3191;3184:12;3146:52;3233:9;3220:23;3252:31;3277:5;3252:31;:::i;:::-;3302:5;-1:-1:-1;3359:2:1;3344:18;;3331:32;3372:33;3331:32;3372:33;:::i;:::-;3032:456;;3424:7;;-1:-1:-1;;;3478:2:1;3463:18;;;;3450:32;;3032:456::o;3701:247::-;3760:6;3813:2;3801:9;3792:7;3788:23;3784:32;3781:52;;;3829:1;3826;3819:12;3781:52;3868:9;3855:23;3887:31;3912:5;3887:31;:::i;4142:388::-;4210:6;4218;4271:2;4259:9;4250:7;4246:23;4242:32;4239:52;;;4287:1;4284;4277:12;4239:52;4326:9;4313:23;4345:31;4370:5;4345:31;:::i;:::-;4395:5;-1:-1:-1;4452:2:1;4437:18;;4424:32;4465:33;4424:32;4465:33;:::i;:::-;4517:7;4507:17;;;4142:388;;;;;:::o;4795:380::-;4874:1;4870:12;;;;4917;;;4938:61;;4992:4;4984:6;4980:17;4970:27;;4938:61;5045:2;5037:6;5034:14;5014:18;5011:38;5008:161;;5091:10;5086:3;5082:20;5079:1;5072:31;5126:4;5123:1;5116:15;5154:4;5151:1;5144:15;5008:161;;4795:380;;;:::o;5180:335::-;5382:2;5364:21;;;5421:2;5401:18;;;5394:30;-1:-1:-1;;;5455:2:1;5440:18;;5433:41;5506:2;5491:18;;5180:335::o;5520:329::-;5722:2;5704:21;;;5761:1;5741:18;;;5734:29;-1:-1:-1;;;5794:2:1;5779:18;;5772:36;5840:2;5825:18;;5520:329::o;5854:127::-;5915:10;5910:3;5906:20;5903:1;5896:31;5946:4;5943:1;5936:15;5970:4;5967:1;5960:15;5986:168;6026:7;6092:1;6088;6084:6;6080:14;6077:1;6074:21;6069:1;6062:9;6055:17;6051:45;6048:71;;;6099:18;;:::i;:::-;-1:-1:-1;6139:9:1;;5986:168::o;6159:217::-;6199:1;6225;6215:132;;6269:10;6264:3;6260:20;6257:1;6250:31;6304:4;6301:1;6294:15;6332:4;6329:1;6322:15;6215:132;-1:-1:-1;6361:9:1;;6159:217::o;6381:251::-;6451:6;6504:2;6492:9;6483:7;6479:23;6475:32;6472:52;;;6520:1;6517;6510:12;6472:52;6552:9;6546:16;6571:31;6596:5;6571:31;:::i;7162:125::-;7227:9;;;7248:10;;;7245:36;;;7261:18;;:::i;10375:128::-;10442:9;;;10463:11;;;10460:37;;;10477:18;;:::i;11042:127::-;11103:10;11098:3;11094:20;11091:1;11084:31;11134:4;11131:1;11124:15;11158:4;11155:1;11148:15;11174:461;11227:3;11265:5;11259:12;11292:6;11287:3;11280:19;11318:4;11347:2;11342:3;11338:12;11331:19;;11384:2;11377:5;11373:14;11405:1;11415:195;11429:6;11426:1;11423:13;11415:195;;;11494:13;;-1:-1:-1;;;;;11490:39:1;11478:52;;11550:12;;;;11585:15;;;;11526:1;11444:9;11415:195;;;-1:-1:-1;11626:3:1;;11174:461;-1:-1:-1;;;;;11174:461:1:o;11640:582::-;11939:6;11928:9;11921:25;11982:6;11977:2;11966:9;11962:18;11955:34;12025:3;12020:2;12009:9;12005:18;11998:31;11902:4;12046:57;12098:3;12087:9;12083:19;12075:6;12046:57;:::i;:::-;-1:-1:-1;;;;;12139:32:1;;;;12134:2;12119:18;;12112:60;-1:-1:-1;12203:3:1;12188:19;12181:35;12038:65;11640:582;-1:-1:-1;;;11640:582:1:o;12227:332::-;12434:6;12423:9;12416:25;12477:2;12472;12461:9;12457:18;12450:30;12397:4;12497:56;12549:2;12538:9;12534:18;12526:6;12497:56;:::i;:::-;12489:64;12227:332;-1:-1:-1;;;;12227:332:1:o;13176:306::-;13264:6;13272;13280;13333:2;13321:9;13312:7;13308:23;13304:32;13301:52;;;13349:1;13346;13339:12;13301:52;13378:9;13372:16;13362:26;;13428:2;13417:9;13413:18;13407:25;13397:35;;13472:2;13461:9;13457:18;13451:25;13441:35;;13176:306;;;;;:::o
Swarm Source
ipfs://293ef0ebca20d6aec8339e9348e1c7cba6919714381fd8d4c5316a17036199b1
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.