ERC-20
Overview
Max Total Supply
1,000,000,000,000 Goryō
Holders
24
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
16,792,564,631.01830280150885325 GoryōValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
GORYO
Compiler Version
v0.8.10+commit.fc410830
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-08-27 */ // SPDX-License-Identifier: MIT /* https://medium.com/@GoryoShinko */ pragma solidity ^0.8.9; contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } } contract ERC20Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor() { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view virtual returns (address) { return _owner; } modifier onlyOwner() { require(owner() == _msgSender(), "ERC20Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "ERC20Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } library SafeMath { function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } interface IERC20 { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view 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); } 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 { function factory() external pure returns (address); function WETH() external pure returns (address); function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; 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 swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; 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 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; } 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); } } } } interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint256 value); event Transfer(address indexed from, address indexed to, uint256 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 (uint256); function balanceOf(address owner) external view returns (uint256); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 value) external returns (bool); function transfer(address to, uint256 value) external returns (bool); function transferFrom(address from, address to, uint256 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 (uint256); function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external; event Burn(address indexed sender, uint256 amount0, uint256 amount1, address indexed to); event Swap(address indexed sender, uint256 amount0In, uint256 amount1In, uint256 amount0Out, uint256 amount1Out, address indexed to); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint256); 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 (uint256); function price1CumulativeLast() external view returns (uint256); function kLast() external view returns (uint256); function burn(address to) external returns (uint256 amount0, uint256 amount1); function swap(uint256 amount0Out, uint256 amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } contract GORYO is Context, IERC20, ERC20Ownable { using SafeMath for uint256; using Address for address; string private constant tokenName = "GoryoShinko"; string private constant tokenSymbol = unicode"Goryō"; uint8 private constant tokenDecimal = 18; uint256 private constant tokenSupply = 1e12 * 10**tokenDecimal; mapping(address => mapping(address => uint256)) private tokenAllowances; mapping(address => uint256) private tokenBalance; mapping(address => bool) private isContractsExcluded; mapping(address => bool) private isMaxWalletExcluded; mapping(address => bool) private isTaxExcluded; mapping(address => bool) public isSniper; mapping(address => bool) public isBot; address payable liquidityAddress; address payable marketingAddress; address payable devAddress; address dead = address(0xdead); address public uniV2Pair; IUniswapV2Router02 public uniV2Router; address public uniV3Router; uint256 private maxWallet; uint256 private minTaxSwap; uint256 private marketingTokens; uint256 private liquidityTokens; uint256 private totalBurnedTokens; uint256 private marketingTax; uint256 private liquidityTax; uint256 private divForSplitTax; uint256 private taxBuyMarketing; uint256 private taxBuyLiquidity; uint256 private taxSellMarketing; uint256 private taxSellTreasury; uint256 private taxSellLiquidity; uint256 public activeTradingBlock; uint256 public sniperPenaltyEnd; bool public limitsOn = false; bool public maxWalletOn = false; bool public live = false; bool public contractBlocker = false; bool inSwapAndLiquify; bool private swapAndLiquifyStatus = false; modifier lockTheSwap() { inSwapAndLiquify = true; _; inSwapAndLiquify = false; } constructor() payable { tokenBalance[address(this)] = tokenSupply; maxWallet = tokenSupply.mul(5).div(100); minTaxSwap = tokenSupply.mul(5).div(10000); marketingAddress = payable(0x54a0A4c864e0914fB8402c612321976094218300); devAddress = payable(0x22e5D0D6412ee68519F61D455558D1de9943E02C); liquidityAddress = payable(owner()); //LEAVE AS OWNER taxBuyMarketing = 0; taxBuyLiquidity = 0; taxSellMarketing = 0; taxSellLiquidity = 0; isContractsExcluded[address(this)] = true; isTaxExcluded[owner()] = true; isTaxExcluded[dead] = true; isTaxExcluded[address(this)] = true; isTaxExcluded[marketingAddress] = true; isTaxExcluded[liquidityAddress] = true; isMaxWalletExcluded[address(this)] = true; isMaxWalletExcluded[owner()] = true; isMaxWalletExcluded[marketingAddress] = true; isMaxWalletExcluded[liquidityAddress] = true; isMaxWalletExcluded[dead] = true; emit Transfer(address(0), address(this), tokenSupply); } receive() external payable {} function name() external pure override returns (string memory) { return tokenName; } function symbol() external pure override returns (string memory) { return tokenSymbol; } function decimals() external pure override returns (uint8) { return tokenDecimal; } function totalSupply() external pure override returns (uint256) { return tokenSupply; } function balanceOf(address account) public view override returns (uint256) { return tokenBalance[account]; } function allowance(address owner, address spender) external view override returns (uint256) { return tokenAllowances[owner][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { require(_msgSender() != address(0), "ERC20: Can not approve from zero address"); require(spender != address(0), "ERC20: Can not approve to zero address"); tokenAllowances[_msgSender()][spender] = amount; emit Approval(_msgSender(), spender, amount); return true; } function internalApprove(address owner,address spender,uint256 amount) internal { require(owner != address(0), "ERC20: Can not approve from zero address"); require(spender != address(0), "ERC20: Can not approve to zero address"); tokenAllowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function transfer(address recipient, uint256 amount) external override returns (bool) { internalTransfer(_msgSender(), recipient, amount); return true; } function transferFrom(address sender,address recipient,uint256 amount) external override returns (bool) { internalTransfer(sender, recipient, amount); internalApprove(sender,_msgSender(), tokenAllowances[sender][_msgSender()].sub(amount, "ERC20: Can not transfer. Amount exceeds allowance")); return true; } function AirDrop(address[] memory wallets, uint256[] memory percent) external onlyOwner{ require(wallets.length < 100, "Can only airdrop 100 wallets per txn due to gas limits"); for(uint256 i = 0; i < wallets.length; i++){ address wallet = wallets[i]; uint256 amount = tokenSupply.mul(percent[i]).div(100); internalTransfer(_msgSender(), wallet, amount); } } function GoLive() external onlyOwner returns (bool){ require(!live, "ERC20: Trades already Live!"); activeTradingBlock = block.number; sniperPenaltyEnd = block.timestamp.add(2 days); IUniswapV2Router02 _uniV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); uniV2Router = _uniV2Router; uniV3Router = 0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45; isContractsExcluded[address(uniV2Router)] = true; isContractsExcluded[address(uniV3Router)] = true; isMaxWalletExcluded[address(uniV2Router)] = true; internalApprove(address(this), address(uniV2Router), tokenSupply); uniV2Pair = IUniswapV2Factory(_uniV2Router.factory()).createPair(address(this), _uniV2Router.WETH()); isContractsExcluded[address(uniV2Pair)] = true; isMaxWalletExcluded[address(uniV2Pair)] = true; require(address(this).balance > 0, "ERC20: Must have ETH on contract to Go Live!"); addLiquidity(balanceOf(address(this)), address(this).balance); launchSetLiquidityAddress(dead); maxWalletOn = true; swapAndLiquifyStatus = true; limitsOn = true; live = true; return true; } function internalTransfer(address from, address to, uint256 amount) internal { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "ERC20: Transfer amount must be greater than zero"); require(!isBot[from], "ERC20: Can not transfer from BOT"); if(!live){ require(isTaxExcluded[from] || isTaxExcluded[to], "ERC20: Trading Is Not Live!"); } if (maxWalletOn == true && ! isMaxWalletExcluded[to]) { require(balanceOf(to).add(amount) <= maxWallet, "ERC20: Max amount of tokens for wallet reached"); } if(limitsOn){ if (from != owner() && to != owner() && to != address(0) && to != dead && to != uniV2Pair) { for (uint x = 0; x < 3; x++) { if(block.number == activeTradingBlock.add(x)) { isSniper[to] = true; } } } } if(contractBlocker) { require( !isContract(to) && isContractsExcluded[from] || !isContract(from) && isContractsExcluded[to] || isContract(from) && isContractsExcluded[to] || isContract(to) && isContractsExcluded[from] ); } uint256 totalTokensToSwap = liquidityTokens.add(marketingTokens); uint256 contractTokenBalance = balanceOf(address(this)); bool overMinimumTokenBalance = contractTokenBalance >= minTaxSwap; if (!inSwapAndLiquify && swapAndLiquifyStatus && balanceOf(uniV2Pair) > 0 && totalTokensToSwap > 0 && !isTaxExcluded[to] && !isTaxExcluded[from] && to == uniV2Pair && overMinimumTokenBalance) { taxTokenSwap(); } if (isTaxExcluded[from] || isTaxExcluded[to]) { marketingTax = 0; liquidityTax = 0; divForSplitTax = marketingTax.add(liquidityTax); } else { if (from == uniV2Pair) { marketingTax = taxBuyMarketing; liquidityTax = taxBuyLiquidity; divForSplitTax = taxBuyMarketing.add(taxBuyLiquidity); }else if (to == uniV2Pair) { marketingTax = taxSellMarketing; liquidityTax = taxSellLiquidity; divForSplitTax = taxSellMarketing.add(taxSellLiquidity); if(isSniper[from] && sniperPenaltyEnd >= block.timestamp){ marketingTax = 95; liquidityTax = 0; divForSplitTax = marketingTax.add(liquidityTax); } }else { require(!isSniper[from] || sniperPenaltyEnd <= block.timestamp, "ERC20: Snipers can not transfer till penalty time is over"); marketingTax = 0; liquidityTax = 0; } } tokenTransfer(from, to, amount); } function taxTokenSwap() internal lockTheSwap { uint256 contractBalance = balanceOf(address(this)); uint256 totalTokensToSwap = marketingTokens.add(liquidityTokens); uint256 swapLiquidityTokens = liquidityTokens.div(2); uint256 amountToSwapForETH = contractBalance.sub(swapLiquidityTokens); uint256 initialETHBalance = address(this).balance; swapTokensForETH(amountToSwapForETH); uint256 ethBalance = address(this).balance.sub(initialETHBalance); uint256 ethForMarketing = ethBalance.mul(marketingTokens).div(totalTokensToSwap); uint256 ethForLiquidity = ethBalance.sub(ethForMarketing); marketingTokens = 0; liquidityTokens = 0; (bool success,) = address(marketingAddress).call{value: ethForMarketing}(""); if(ethForLiquidity != 0 && swapLiquidityTokens != 0) { addLiquidity(swapLiquidityTokens, ethForLiquidity); } if(address(this).balance > 5 * 1e17){ (success,) = address(devAddress).call{value: address(this).balance}(""); } } function swapTokensForETH(uint256 tokenAmount) internal { address[] memory path = new address[](2); path[0] = address(this); path[1] = uniV2Router.WETH(); internalApprove(address(this), address(uniV2Router), tokenAmount); uniV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) internal { internalApprove(address(this), address(uniV2Router), tokenAmount); uniV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, 0, liquidityAddress, block.timestamp ); } function calculateTax(uint256 amount) internal view returns (uint256) { return amount.mul(marketingTax.add(liquidityTax)).div(100); } function splitTaxTokens(uint256 taxTokens) internal { marketingTokens += taxTokens.mul(marketingTax).div(divForSplitTax); liquidityTokens += taxTokens.mul(liquidityTax).div(divForSplitTax); } function tokenTransfer(address sender,address recipient,uint256 amount) internal { if(divForSplitTax != 0){ uint256 taxTokens = calculateTax(amount); uint256 transferTokens = amount.sub(taxTokens); splitTaxTokens(taxTokens); tokenBalance[sender] -= amount; tokenBalance[recipient] += transferTokens; tokenBalance[address(this)] += taxTokens; emit Transfer(sender, recipient, transferTokens); }else{ tokenBalance[sender] -= amount; tokenBalance[recipient] += amount; emit Transfer(sender, recipient, amount); } } function launchSetLiquidityAddress(address LPAddress) internal { liquidityAddress = payable(LPAddress); isTaxExcluded[liquidityAddress] = true; } function isContract(address account) public view returns (bool) { bytes32 codehash; bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; assembly { codehash := extcodehash(account) } return (codehash != accountHash && codehash != 0x0); } function addRemoveContract(address account, bool trueORfalse) external onlyOwner { isContractsExcluded[account] = trueORfalse; } function isExcludedContract(address account) public view returns (bool) { return isContractsExcluded[account]; } function withdrawStuckETH() external onlyOwner { bool success; (success,) = address(owner()).call{value: address(this).balance}(""); } function withdrawStuckTokens(uint256 percent) external onlyOwner { internalTransfer(address(this), owner(), tokenSupply*percent/100); } function manualBurnTokensFromLP(uint256 percent) external onlyOwner returns (bool){ require(percent <= 10, "ERC20: May not nuke more than 10% of tokens in LP"); uint256 liquidityPairBalance = this.balanceOf(uniV2Pair); uint256 amountToBurn = liquidityPairBalance.mul(percent).div(10**2); if (amountToBurn > 0){ internalTransfer(uniV2Pair, dead, amountToBurn); } totalBurnedTokens = balanceOf(dead); require(totalBurnedTokens <= tokenSupply * 50 / 10**2, "ERC20: Can not burn more then 50% of supply"); IUniswapV2Pair pair = IUniswapV2Pair(uniV2Pair); pair.sync(); return true; } function manualSwapTax() external onlyOwner { uint256 contractBalance = balanceOf(address(this)); require(contractBalance >= tokenSupply.mul(5).div(10000), "ERC20: Can only swap back if more than 0.05% of tokens stuck on contract"); taxTokenSwap(); } function addBot(address account) external onlyOwner { require(!isBot[account], "ERC20: Account already added"); isBot[account] = true; } function removeBot(address account) external onlyOwner { require(isBot[account], "ERC20: Account is not bot"); isBot[account] = false; } function removeSniper(address account) external onlyOwner { require(isSniper[account], "ERC20: Account is not sniper"); isSniper[account] = false; } function setExcludedContractAccount(address account, bool trueORfalse) external onlyOwner { isContractsExcluded[address(account)] = trueORfalse; } function setExcludedFromTax(address account, bool trueORfalse) external onlyOwner { isTaxExcluded[address(account)] = trueORfalse; } function setExcludedFromMaxWallet(address account, bool trueORfalse) external onlyOwner { isMaxWalletExcluded[address(account)] = trueORfalse; } function setMaxWalletAmount(uint256 percent, uint256 divider) external onlyOwner { maxWallet = tokenSupply.mul(percent).div(divider); require(maxWallet <=tokenSupply.mul(4).div(100), "ERC20: Can not set max wallet more than 4%"); } function setStatusLimits(bool trueORfalse) external onlyOwner { limitsOn = trueORfalse; } function setStatusMaxWallet(bool trueORfalse) external onlyOwner { maxWalletOn = trueORfalse; } function setStatusContractBlocker(bool trueORfalse) external onlyOwner { contractBlocker = trueORfalse; } function setSwapAndLiquifyStatus(bool trueORfalse) external onlyOwner { swapAndLiquifyStatus = trueORfalse; } function lockTokens(uint256 buyMarketingTax, uint256 buyLiquidityTax, uint256 sellMarketingTax, uint256 sellLiquidityTax) external onlyOwner { taxBuyMarketing = buyMarketingTax; taxBuyLiquidity = buyLiquidityTax; taxSellMarketing = sellMarketingTax; taxSellLiquidity = sellLiquidityTax; } function viewTaxes() public view returns(uint256 marketingBuy, uint256 liquidityBuy, uint256 marketingSell, uint256 liquiditySell) { return(taxBuyMarketing,taxBuyLiquidity,taxSellMarketing,taxSellLiquidity); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":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":[{"internalType":"address[]","name":"wallets","type":"address[]"},{"internalType":"uint256[]","name":"percent","type":"uint256[]"}],"name":"AirDrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"GoLive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"activeTradingBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"trueORfalse","type":"bool"}],"name":"addRemoveContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractBlocker","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isContract","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedContract","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isSniper","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsOn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"live","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"buyMarketingTax","type":"uint256"},{"internalType":"uint256","name":"buyLiquidityTax","type":"uint256"},{"internalType":"uint256","name":"sellMarketingTax","type":"uint256"},{"internalType":"uint256","name":"sellLiquidityTax","type":"uint256"}],"name":"lockTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"manualBurnTokensFromLP","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwapTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxWalletOn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeSniper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"trueORfalse","type":"bool"}],"name":"setExcludedContractAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"trueORfalse","type":"bool"}],"name":"setExcludedFromMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"trueORfalse","type":"bool"}],"name":"setExcludedFromTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divider","type":"uint256"}],"name":"setMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"trueORfalse","type":"bool"}],"name":"setStatusContractBlocker","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"trueORfalse","type":"bool"}],"name":"setStatusLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"trueORfalse","type":"bool"}],"name":"setStatusMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"trueORfalse","type":"bool"}],"name":"setSwapAndLiquifyStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sniperPenaltyEnd","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniV3Router","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"viewTaxes","outputs":[{"internalType":"uint256","name":"marketingBuy","type":"uint256"},{"internalType":"uint256","name":"liquidityBuy","type":"uint256"},{"internalType":"uint256","name":"marketingSell","type":"uint256"},{"internalType":"uint256","name":"liquiditySell","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"withdrawStuckTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052600b80546001600160a01b03191661dead179055601e805465ff00ffffffff191690556000620000313390565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350620000896012600a6200040f565b6200009a9064e8d4a5100062000420565b30600090815260026020526040902055620000fd6064620000e96005620000c46012600a6200040f565b620000d59064e8d4a5100062000420565b620002d760201b62001a2f1790919060201c565b620002ee60201b62001a421790919060201c565b600f556200011b612710620000e96005620000c46012600a6200040f565b601055600980546001600160a01b03199081167354a0a4c864e0914fb8402c61232197609421830017909155600a80549091167322e5d0d6412ee68519f61d455558d1de9943e02c179055620001796000546001600160a01b031690565b600880546001600160a01b0319166001600160a01b039283161781556000601781905560188190556019819055601b81905530808252600360209081526040808420805460ff199081166001908117909255855488168652600584528286208054821683179055600b80548916875283872080548316841790558587528387208054831684179055600980548a168852848820805484168517905588548a1688528488208054841685179055868852600490955283872080548316841790558654891687528387208054831684179055935488168652828620805482168317905595548716855281852080548716821790559154909516835293822080549093169093179091557fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620002af6012600a6200040f565b620002c09064e8d4a5100062000420565b60405190815260200160405180910390a362000465565b6000620002e5828462000420565b90505b92915050565b6000620002e5828462000442565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000353578160001904821115620003375762000337620002fc565b808516156200034557918102915b93841c939080029062000317565b509250929050565b6000826200036c57506001620002e8565b816200037b57506000620002e8565b81600181146200039457600281146200039f57620003bf565b6001915050620002e8565b60ff841115620003b357620003b3620002fc565b50506001821b620002e8565b5060208310610133831016604e8410600b8410161715620003e4575081810a620002e8565b620003f0838362000312565b8060001904821115620004075762000407620002fc565b029392505050565b6000620002e560ff8416836200035b565b60008160001904831182151516156200043d576200043d620002fc565b500290565b6000826200046057634e487b7160e01b600052601260045260246000fd5b500490565b612fd580620004756000396000f3fe6080604052600436106102765760003560e01c806375d0cc431161014f578063a73f9b58116100c1578063ee2e5a2e1161007a578063ee2e5a2e146107e5578063f0c0cf8714610805578063f2fde38b1461081b578063f35900d01461083b578063f5648a4f1461085b578063ffecf5161461087057600080fd5b8063a73f9b5814610734578063a9059cbb14610749578063c2ed286b14610769578063dd62ed3e14610789578063e4252ddf1461064b578063ea090d97146107cf57600080fd5b806391c09d1e1161011357806391c09d1e1461064b578063957aa58c1461066b578063958c2e521461068b57806395d89b41146106ab57806396c9b442146106da578063a20d9615146106fb57600080fd5b806375d0cc43146105ad5780637817be6c146105cd5780638bcea939146105ed5780638c714f801461060d5780638da5cb5b1461062d57600080fd5b806333251a0b116101e85780635e6710de116101ac5780635e6710de146104e15780635fafa589146105015780635fecd9261461053957806370a0823114610559578063715018a614610579578063745d032f1461058e57600080fd5b806333251a0b1461043c5780633b4e935a1461045c5780633bbac5791461047157806341220104146104a157806351524e5b146104c157600080fd5b8063162790551161023a578063162790551461038357806318160ddd146103a3578063186d260d146103c65780631c42047a146103e657806323b872dd14610400578063313ce5671461042057600080fd5b806306fdde0314610282578063095ea7b3146102c85780630ef00a6e146102f85780630f3a325f1461031a57806311abf5371461034a57600080fd5b3661027d57005b600080fd5b34801561028e57600080fd5b5060408051808201909152600b81526a476f72796f5368696e6b6f60a81b60208201525b6040516102bf919061288a565b60405180910390f35b3480156102d457600080fd5b506102e86102e33660046128f4565b610890565b60405190151581526020016102bf565b34801561030457600080fd5b50610318610313366004612920565b610943565b005b34801561032657600080fd5b506102e8610335366004612952565b60066020526000908152604090205460ff1681565b34801561035657600080fd5b50601754601854601954601b546040805194855260208501939093529183015260608201526080016102bf565b34801561038f57600080fd5b506102e861039e366004612952565b610981565b3480156103af57600080fd5b506103b86109bd565b6040519081526020016102bf565b3480156103d257600080fd5b506103186103e136600461297f565b6109df565b3480156103f257600080fd5b50601e546102e89060ff1681565b34801561040c57600080fd5b506102e861041b36600461299a565b610a1c565b34801561042c57600080fd5b50604051601281526020016102bf565b34801561044857600080fd5b50610318610457366004612952565b610a85565b34801561046857600080fd5b506102e8610b38565b34801561047d57600080fd5b506102e861048c366004612952565b60076020526000908152604090205460ff1681565b3480156104ad57600080fd5b506103186104bc3660046129db565b610f30565b3480156104cd57600080fd5b506103186104dc366004612ae6565b610f85565b3480156104ed57600080fd5b506103186104fc366004612ba8565b6110bd565b34801561050d57600080fd5b50600e54610521906001600160a01b031681565b6040516001600160a01b0390911681526020016102bf565b34801561054557600080fd5b50610318610554366004612952565b611137565b34801561056557600080fd5b506103b8610574366004612952565b6111ea565b34801561058557600080fd5b50610318611205565b34801561059a57600080fd5b50601e546102e890610100900460ff1681565b3480156105b957600080fd5b506103186105c836600461297f565b611279565b3480156105d957600080fd5b506102e86105e8366004612ba8565b6112c1565b3480156105f957600080fd5b50600c54610521906001600160a01b031681565b34801561061957600080fd5b5061031861062836600461297f565b61151c565b34801561063957600080fd5b506000546001600160a01b0316610521565b34801561065757600080fd5b506103186106663660046129db565b611560565b34801561067757600080fd5b50601e546102e89062010000900460ff1681565b34801561069757600080fd5b50600d54610521906001600160a01b031681565b3480156106b757600080fd5b50604080518082019091526006815265476f7279c58d60d01b60208201526102b2565b3480156106e657600080fd5b50601e546102e8906301000000900460ff1681565b34801561070757600080fd5b506102e8610716366004612952565b6001600160a01b031660009081526003602052604090205460ff1690565b34801561074057600080fd5b506103186115b5565b34801561075557600080fd5b506102e86107643660046128f4565b611691565b34801561077557600080fd5b506103186107843660046129db565b6116a7565b34801561079557600080fd5b506103b86107a4366004612bc1565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156107db57600080fd5b506103b8601c5481565b3480156107f157600080fd5b5061031861080036600461297f565b6116fc565b34801561081157600080fd5b506103b8601d5481565b34801561082757600080fd5b50610318610836366004612952565b611748565b34801561084757600080fd5b50610318610856366004612bfa565b611837565b34801561086757600080fd5b506103186118f6565b34801561087c57600080fd5b5061031861088b366004612952565b611978565b6000336108b85760405162461bcd60e51b81526004016108af90612c1c565b60405180910390fd5b6001600160a01b0383166108de5760405162461bcd60e51b81526004016108af90612c64565b3360008181526001602090815260408083206001600160a01b03881680855290835292819020869055518581529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35060015b92915050565b6000546001600160a01b0316331461096d5760405162461bcd60e51b81526004016108af90612caa565b601793909355601891909155601955601b55565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708181148015906109b557508115155b949350505050565b60006109cb6012600a612de9565b6109da9064e8d4a51000612df8565b905090565b6000546001600160a01b03163314610a095760405162461bcd60e51b81526004016108af90612caa565b601e805460ff1916911515919091179055565b6000610a29848484611a4e565b610a7b8433610a7685604051806060016040528060318152602001612f6f603191396001600160a01b038a16600090815260016020908152604080832033845290915290205491906121bd565b6121e9565b5060019392505050565b6000546001600160a01b03163314610aaf5760405162461bcd60e51b81526004016108af90612caa565b6001600160a01b03811660009081526006602052604090205460ff16610b175760405162461bcd60e51b815260206004820152601c60248201527f45524332303a204163636f756e74206973206e6f7420736e697065720000000060448201526064016108af565b6001600160a01b03166000908152600660205260409020805460ff19169055565b600080546001600160a01b03163314610b635760405162461bcd60e51b81526004016108af90612caa565b601e5462010000900460ff1615610bbc5760405162461bcd60e51b815260206004820152601b60248201527f45524332303a2054726164657320616c7265616479204c69766521000000000060448201526064016108af565b43601c55610bcd426202a300612297565b601d55600d80546001600160a01b0319908116737a250d5630b4cf539739df2c5dacb4c659f2488d908117909255600e80549091167368b3465833fb72a70ecdf485e0e4c7bd8665fc451790557ffb19a963956c9cb662dd3ae48988c4b90766df71ea130109840abe0a1b23dba8805460ff1990811660019081179092557fdc51a0a44317b550a6b5ddb34687ce2bd40e4750eec27343e32b23e6867392088054821683179055600083905260046020527f1fc5acd025f7cc5cf2691b667dba808b5a149bf27192c208fc66f1f0ec4222d780549091169091179055610cc93082610cba6012600a612de9565b610a769064e8d4a51000612df8565b806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d2b9190612e17565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d9c9190612e17565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610de9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e0d9190612e17565b600c80546001600160a01b0319166001600160a01b0392831690811782556000908152600360209081526040808320805460ff19908116600190811790925594549095168352600490915290208054909116909117905547610ec65760405162461bcd60e51b815260206004820152602c60248201527f45524332303a204d757374206861766520455448206f6e20636f6e747261637460448201526b20746f20476f204c6976652160a01b60648201526084016108af565b610ed8610ed2306111ea565b476122a3565b600b54600880546001600160a01b0319166001600160a01b0390921691821790556000908152600560205260409020805460ff191660011790555050601e805465ff0000ffffff191665010000010101179055600190565b6000546001600160a01b03163314610f5a5760405162461bcd60e51b81526004016108af90612caa565b6001600160a01b03919091166000908152600460205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610faf5760405162461bcd60e51b81526004016108af90612caa565b606482511061101f5760405162461bcd60e51b815260206004820152603660248201527f43616e206f6e6c792061697264726f70203130302077616c6c657473207065726044820152752074786e2064756520746f20676173206c696d69747360501b60648201526084016108af565b60005b82518110156110b857600083828151811061103f5761103f612e34565b602002602001015190506000611096606461109086868151811061106557611065612e34565b60200260200101516012600a61107b9190612de9565b61108a9064e8d4a51000612df8565b90611a2f565b90611a42565b90506110a3338383611a4e565b505080806110b090612e4a565b915050611022565b505050565b6000546001600160a01b031633146110e75760405162461bcd60e51b81526004016108af90612caa565b611134306110fd6000546001600160a01b031690565b60648461110c6012600a612de9565b61111b9064e8d4a51000612df8565b6111259190612df8565b61112f9190612e65565b611a4e565b50565b6000546001600160a01b031633146111615760405162461bcd60e51b81526004016108af90612caa565b6001600160a01b03811660009081526007602052604090205460ff166111c95760405162461bcd60e51b815260206004820152601960248201527f45524332303a204163636f756e74206973206e6f7420626f740000000000000060448201526064016108af565b6001600160a01b03166000908152600760205260409020805460ff19169055565b6001600160a01b031660009081526002602052604090205490565b6000546001600160a01b0316331461122f5760405162461bcd60e51b81526004016108af90612caa565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146112a35760405162461bcd60e51b81526004016108af90612caa565b601e805491151563010000000263ff00000019909216919091179055565b600080546001600160a01b031633146112ec5760405162461bcd60e51b81526004016108af90612caa565b600a8211156113575760405162461bcd60e51b815260206004820152603160248201527f45524332303a204d6179206e6f74206e756b65206d6f7265207468616e203130604482015270025206f6620746f6b656e7320696e204c5607c1b60648201526084016108af565b600c546040516370a0823160e01b81526001600160a01b03909116600482015260009030906370a0823190602401602060405180830381865afa1580156113a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c69190612e87565b905060006113d960646110908487611a2f565b905080156113fe57600c54600b546113fe916001600160a01b03908116911683611a4e565b600b54611413906001600160a01b03166111ea565b60135560646114246012600a612de9565b6114339064e8d4a51000612df8565b61143e906032612df8565b6114489190612e65565b60135411156114ad5760405162461bcd60e51b815260206004820152602b60248201527f45524332303a2043616e206e6f74206275726e206d6f7265207468656e20353060448201526a25206f6620737570706c7960a81b60648201526084016108af565b600c546040805160016209351760e01b0319815290516001600160a01b0390921691829163fff6cae991600480830192600092919082900301818387803b1580156114f757600080fd5b505af115801561150b573d6000803e3d6000fd5b50505050600193505050505b919050565b6000546001600160a01b031633146115465760405162461bcd60e51b81526004016108af90612caa565b601e80549115156101000261ff0019909216919091179055565b6000546001600160a01b0316331461158a5760405162461bcd60e51b81526004016108af90612caa565b6001600160a01b03919091166000908152600360205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146115df5760405162461bcd60e51b81526004016108af90612caa565b60006115ea306111ea565b9050611603612710611090600561107b6012600a612de9565b8110156116895760405162461bcd60e51b815260206004820152604860248201527f45524332303a2043616e206f6e6c792073776170206261636b206966206d6f7260448201527f65207468616e20302e303525206f6620746f6b656e7320737475636b206f6e2060648201526718dbdb9d1c9858dd60c21b608482015260a4016108af565b611134612357565b600061169e338484611a4e565b50600192915050565b6000546001600160a01b031633146116d15760405162461bcd60e51b81526004016108af90612caa565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146117265760405162461bcd60e51b81526004016108af90612caa565b601e8054911515650100000000000265ff000000000019909216919091179055565b6000546001600160a01b031633146117725760405162461bcd60e51b81526004016108af90612caa565b6001600160a01b0381166117dc5760405162461bcd60e51b815260206004820152602b60248201527f45524332304f776e61626c653a206e6577206f776e657220697320746865207a60448201526a65726f206164647265737360a81b60648201526084016108af565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146118615760405162461bcd60e51b81526004016108af90612caa565b611875816110908461107b6012600a612de9565b600f5561188e6064611090600461107b6012600a612de9565b600f5411156118f25760405162461bcd60e51b815260206004820152602a60248201527f45524332303a2043616e206e6f7420736574206d61782077616c6c6574206d6f6044820152697265207468616e20342560b01b60648201526084016108af565b5050565b6000546001600160a01b031633146119205760405162461bcd60e51b81526004016108af90612caa565b600080546040516001600160a01b039091169047908381818185875af1925050503d806000811461196d576040519150601f19603f3d011682016040523d82523d6000602084013e611972565b606091505b50505050565b6000546001600160a01b031633146119a25760405162461bcd60e51b81526004016108af90612caa565b6001600160a01b03811660009081526007602052604090205460ff1615611a0b5760405162461bcd60e51b815260206004820152601c60248201527f45524332303a204163636f756e7420616c72656164792061646465640000000060448201526064016108af565b6001600160a01b03166000908152600760205260409020805460ff19166001179055565b6000611a3b8284612df8565b9392505050565b6000611a3b8284612e65565b6001600160a01b038316611ab25760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016108af565b6001600160a01b038216611b145760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016108af565b60008111611b7d5760405162461bcd60e51b815260206004820152603060248201527f45524332303a205472616e7366657220616d6f756e74206d757374206265206760448201526f726561746572207468616e207a65726f60801b60648201526084016108af565b6001600160a01b03831660009081526007602052604090205460ff1615611be65760405162461bcd60e51b815260206004820181905260248201527f45524332303a2043616e206e6f74207472616e736665722066726f6d20424f5460448201526064016108af565b601e5462010000900460ff16611c81576001600160a01b03831660009081526005602052604090205460ff1680611c3557506001600160a01b03821660009081526005602052604090205460ff165b611c815760405162461bcd60e51b815260206004820152601b60248201527f45524332303a2054726164696e67204973204e6f74204c69766521000000000060448201526064016108af565b601e5460ff6101009091041615156001148015611cb757506001600160a01b03821660009081526004602052604090205460ff16155b15611d3757600f54611cd282611ccc856111ea565b90612297565b1115611d375760405162461bcd60e51b815260206004820152602e60248201527f45524332303a204d617820616d6f756e74206f6620746f6b656e7320666f722060448201526d1dd85b1b195d081c995858da195960921b60648201526084016108af565b601e5460ff1615611e13576000546001600160a01b03848116911614801590611d6e57506000546001600160a01b03838116911614155b8015611d8257506001600160a01b03821615155b8015611d9c5750600b546001600160a01b03838116911614155b8015611db65750600c546001600160a01b03838116911614155b15611e135760005b6003811015611e1157601c54611dd49082612297565b431415611dff576001600160a01b0383166000908152600660205260409020805460ff191660011790555b80611e0981612e4a565b915050611dbe565b505b601e546301000000900460ff1615611ef657611e2e82610981565b158015611e5357506001600160a01b03831660009081526003602052604090205460ff165b80611e875750611e6283610981565b158015611e8757506001600160a01b03821660009081526003602052604090205460ff165b80611eba5750611e9683610981565b8015611eba57506001600160a01b03821660009081526003602052604090205460ff165b80611eed5750611ec982610981565b8015611eed57506001600160a01b03831660009081526003602052604090205460ff165b611ef657600080fd5b6000611f0f60115460125461229790919063ffffffff16565b90506000611f1c306111ea565b601054601e5491925082101590640100000000900460ff16158015611f4c5750601e5465010000000000900460ff165b8015611f6d5750600c54600090611f6b906001600160a01b03166111ea565b115b8015611f795750600083115b8015611f9e57506001600160a01b03851660009081526005602052604090205460ff16155b8015611fc357506001600160a01b03861660009081526005602052604090205460ff16155b8015611fdc5750600c546001600160a01b038681169116145b8015611fe55750805b15611ff257611ff2612357565b6001600160a01b03861660009081526005602052604090205460ff168061203157506001600160a01b03851660009081526005602052604090205460ff165b156120545760006014819055601581905561204c9080612297565b6016556121aa565b600c546001600160a01b0387811691161415612084576017546014819055601854601581905561204c9190612297565b600c546001600160a01b0386811691161415612103576019546014819055601b5460158190556120b49190612297565b6016556001600160a01b03861660009081526006602052604090205460ff1680156120e1575042601d5410155b156120fe57605f60148190556000601581905561204c9190612297565b6121aa565b6001600160a01b03861660009081526006602052604090205460ff16158061212d575042601d5411155b61219f5760405162461bcd60e51b815260206004820152603960248201527f45524332303a20536e69706572732063616e206e6f74207472616e736665722060448201527f74696c6c2070656e616c74792074696d65206973206f7665720000000000000060648201526084016108af565b600060148190556015555b6121b5868686612503565b505050505050565b600081848411156121e15760405162461bcd60e51b81526004016108af919061288a565b505050900390565b6001600160a01b03831661220f5760405162461bcd60e51b81526004016108af90612c1c565b6001600160a01b0382166122355760405162461bcd60e51b81526004016108af90612c64565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6000611a3b8284612ea0565b600d546122bb9030906001600160a01b0316846121e9565b600d5460085460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af115801561232b573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906123509190612eb8565b5050505050565b601e805464ff0000000019166401000000001790556000612377306111ea565b9050600061239260125460115461229790919063ffffffff16565b905060006123ac6002601254611a4290919063ffffffff16565b905060006123ba84836126a4565b9050476123c6826126b0565b60006123d247836126a4565b905060006123ef8661109060115485611a2f90919063ffffffff16565b905060006123fd83836126a4565b60006011819055601281905560095460405192935090916001600160a01b039091169084908381818185875af1925050503d806000811461245a576040519150601f19603f3d011682016040523d82523d6000602084013e61245f565b606091505b505090508160001415801561247357508615155b156124825761248287836122a3565b6706f05b59d3b200004711156124ea57600a546040516001600160a01b03909116904790600081818185875af1925050503d80600081146124df576040519150601f19603f3d011682016040523d82523d6000602084013e6124e4565b606091505b50909150505b5050601e805464ff000000001916905550505050505050565b6016541561260357600061251682612802565b9050600061252483836126a4565b905061252f8261282a565b6001600160a01b03851660009081526002602052604081208054859290612557908490612ee6565b90915550506001600160a01b03841660009081526002602052604081208054839290612584908490612ea0565b909155505030600090815260026020526040812080548492906125a8908490612ea0565b92505081905550836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516125f491815260200190565b60405180910390a35050505050565b6001600160a01b0383166000908152600260205260408120805483929061262b908490612ee6565b90915550506001600160a01b03821660009081526002602052604081208054839290612658908490612ea0565b92505081905550816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161228a91815260200190565b6000611a3b8284612ee6565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106126e5576126e5612e34565b6001600160a01b03928316602091820292909201810191909152600d54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561273e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127629190612e17565b8160018151811061277557612775612e34565b6001600160a01b039283166020918202929092010152600d5461279b91309116846121e9565b600d5460405163791ac94760e01b81526001600160a01b039091169063791ac947906127d4908590600090869030904290600401612efd565b600060405180830381600087803b1580156127ee57600080fd5b505af11580156121b5573d6000803e3d6000fd5b600061093d606461109061282360155460145461229790919063ffffffff16565b8590611a2f565b61284560165461109060145484611a2f90919063ffffffff16565b601160008282546128569190612ea0565b90915550506016546015546128719190611090908490611a2f565b601260008282546128829190612ea0565b909155505050565b600060208083528351808285015260005b818110156128b75785810183015185820160400152820161289b565b818111156128c9576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461113457600080fd5b6000806040838503121561290757600080fd5b8235612912816128df565b946020939093013593505050565b6000806000806080858703121561293657600080fd5b5050823594602084013594506040840135936060013592509050565b60006020828403121561296457600080fd5b8135611a3b816128df565b8035801515811461151757600080fd5b60006020828403121561299157600080fd5b611a3b8261296f565b6000806000606084860312156129af57600080fd5b83356129ba816128df565b925060208401356129ca816128df565b929592945050506040919091013590565b600080604083850312156129ee57600080fd5b82356129f9816128df565b9150612a076020840161296f565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612a4f57612a4f612a10565b604052919050565b600067ffffffffffffffff821115612a7157612a71612a10565b5060051b60200190565b600082601f830112612a8c57600080fd5b81356020612aa1612a9c83612a57565b612a26565b82815260059290921b84018101918181019086841115612ac057600080fd5b8286015b84811015612adb5780358352918301918301612ac4565b509695505050505050565b60008060408385031215612af957600080fd5b823567ffffffffffffffff80821115612b1157600080fd5b818501915085601f830112612b2557600080fd5b81356020612b35612a9c83612a57565b82815260059290921b84018101918181019089841115612b5457600080fd5b948201945b83861015612b7b578535612b6c816128df565b82529482019490820190612b59565b96505086013592505080821115612b9157600080fd5b50612b9e85828601612a7b565b9150509250929050565b600060208284031215612bba57600080fd5b5035919050565b60008060408385031215612bd457600080fd5b8235612bdf816128df565b91506020830135612bef816128df565b809150509250929050565b60008060408385031215612c0d57600080fd5b50508035926020909101359150565b60208082526028908201527f45524332303a2043616e206e6f7420617070726f76652066726f6d207a65726f604082015267206164647265737360c01b606082015260800190565b60208082526026908201527f45524332303a2043616e206e6f7420617070726f766520746f207a65726f206160408201526564647265737360d01b606082015260800190565b60208082526025908201527f45524332304f776e61626c653a2063616c6c6572206973206e6f74207468652060408201526437bbb732b960d91b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115612d40578160001904821115612d2657612d26612cef565b80851615612d3357918102915b93841c9390800290612d0a565b509250929050565b600082612d575750600161093d565b81612d645750600061093d565b8160018114612d7a5760028114612d8457612da0565b600191505061093d565b60ff841115612d9557612d95612cef565b50506001821b61093d565b5060208310610133831016604e8410600b8410161715612dc3575081810a61093d565b612dcd8383612d05565b8060001904821115612de157612de1612cef565b029392505050565b6000611a3b60ff841683612d48565b6000816000190483118215151615612e1257612e12612cef565b500290565b600060208284031215612e2957600080fd5b8151611a3b816128df565b634e487b7160e01b600052603260045260246000fd5b6000600019821415612e5e57612e5e612cef565b5060010190565b600082612e8257634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215612e9957600080fd5b5051919050565b60008219821115612eb357612eb3612cef565b500190565b600080600060608486031215612ecd57600080fd5b8351925060208401519150604084015190509250925092565b600082821015612ef857612ef8612cef565b500390565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612f4d5784516001600160a01b031683529383019391830191600101612f28565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a2043616e206e6f74207472616e736665722e20416d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220caeb02664c36d66286cf8d91b3df982b8cc72e59ed941250cbb135ff519b707964736f6c634300080a0033
Deployed Bytecode
0x6080604052600436106102765760003560e01c806375d0cc431161014f578063a73f9b58116100c1578063ee2e5a2e1161007a578063ee2e5a2e146107e5578063f0c0cf8714610805578063f2fde38b1461081b578063f35900d01461083b578063f5648a4f1461085b578063ffecf5161461087057600080fd5b8063a73f9b5814610734578063a9059cbb14610749578063c2ed286b14610769578063dd62ed3e14610789578063e4252ddf1461064b578063ea090d97146107cf57600080fd5b806391c09d1e1161011357806391c09d1e1461064b578063957aa58c1461066b578063958c2e521461068b57806395d89b41146106ab57806396c9b442146106da578063a20d9615146106fb57600080fd5b806375d0cc43146105ad5780637817be6c146105cd5780638bcea939146105ed5780638c714f801461060d5780638da5cb5b1461062d57600080fd5b806333251a0b116101e85780635e6710de116101ac5780635e6710de146104e15780635fafa589146105015780635fecd9261461053957806370a0823114610559578063715018a614610579578063745d032f1461058e57600080fd5b806333251a0b1461043c5780633b4e935a1461045c5780633bbac5791461047157806341220104146104a157806351524e5b146104c157600080fd5b8063162790551161023a578063162790551461038357806318160ddd146103a3578063186d260d146103c65780631c42047a146103e657806323b872dd14610400578063313ce5671461042057600080fd5b806306fdde0314610282578063095ea7b3146102c85780630ef00a6e146102f85780630f3a325f1461031a57806311abf5371461034a57600080fd5b3661027d57005b600080fd5b34801561028e57600080fd5b5060408051808201909152600b81526a476f72796f5368696e6b6f60a81b60208201525b6040516102bf919061288a565b60405180910390f35b3480156102d457600080fd5b506102e86102e33660046128f4565b610890565b60405190151581526020016102bf565b34801561030457600080fd5b50610318610313366004612920565b610943565b005b34801561032657600080fd5b506102e8610335366004612952565b60066020526000908152604090205460ff1681565b34801561035657600080fd5b50601754601854601954601b546040805194855260208501939093529183015260608201526080016102bf565b34801561038f57600080fd5b506102e861039e366004612952565b610981565b3480156103af57600080fd5b506103b86109bd565b6040519081526020016102bf565b3480156103d257600080fd5b506103186103e136600461297f565b6109df565b3480156103f257600080fd5b50601e546102e89060ff1681565b34801561040c57600080fd5b506102e861041b36600461299a565b610a1c565b34801561042c57600080fd5b50604051601281526020016102bf565b34801561044857600080fd5b50610318610457366004612952565b610a85565b34801561046857600080fd5b506102e8610b38565b34801561047d57600080fd5b506102e861048c366004612952565b60076020526000908152604090205460ff1681565b3480156104ad57600080fd5b506103186104bc3660046129db565b610f30565b3480156104cd57600080fd5b506103186104dc366004612ae6565b610f85565b3480156104ed57600080fd5b506103186104fc366004612ba8565b6110bd565b34801561050d57600080fd5b50600e54610521906001600160a01b031681565b6040516001600160a01b0390911681526020016102bf565b34801561054557600080fd5b50610318610554366004612952565b611137565b34801561056557600080fd5b506103b8610574366004612952565b6111ea565b34801561058557600080fd5b50610318611205565b34801561059a57600080fd5b50601e546102e890610100900460ff1681565b3480156105b957600080fd5b506103186105c836600461297f565b611279565b3480156105d957600080fd5b506102e86105e8366004612ba8565b6112c1565b3480156105f957600080fd5b50600c54610521906001600160a01b031681565b34801561061957600080fd5b5061031861062836600461297f565b61151c565b34801561063957600080fd5b506000546001600160a01b0316610521565b34801561065757600080fd5b506103186106663660046129db565b611560565b34801561067757600080fd5b50601e546102e89062010000900460ff1681565b34801561069757600080fd5b50600d54610521906001600160a01b031681565b3480156106b757600080fd5b50604080518082019091526006815265476f7279c58d60d01b60208201526102b2565b3480156106e657600080fd5b50601e546102e8906301000000900460ff1681565b34801561070757600080fd5b506102e8610716366004612952565b6001600160a01b031660009081526003602052604090205460ff1690565b34801561074057600080fd5b506103186115b5565b34801561075557600080fd5b506102e86107643660046128f4565b611691565b34801561077557600080fd5b506103186107843660046129db565b6116a7565b34801561079557600080fd5b506103b86107a4366004612bc1565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156107db57600080fd5b506103b8601c5481565b3480156107f157600080fd5b5061031861080036600461297f565b6116fc565b34801561081157600080fd5b506103b8601d5481565b34801561082757600080fd5b50610318610836366004612952565b611748565b34801561084757600080fd5b50610318610856366004612bfa565b611837565b34801561086757600080fd5b506103186118f6565b34801561087c57600080fd5b5061031861088b366004612952565b611978565b6000336108b85760405162461bcd60e51b81526004016108af90612c1c565b60405180910390fd5b6001600160a01b0383166108de5760405162461bcd60e51b81526004016108af90612c64565b3360008181526001602090815260408083206001600160a01b03881680855290835292819020869055518581529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35060015b92915050565b6000546001600160a01b0316331461096d5760405162461bcd60e51b81526004016108af90612caa565b601793909355601891909155601955601b55565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708181148015906109b557508115155b949350505050565b60006109cb6012600a612de9565b6109da9064e8d4a51000612df8565b905090565b6000546001600160a01b03163314610a095760405162461bcd60e51b81526004016108af90612caa565b601e805460ff1916911515919091179055565b6000610a29848484611a4e565b610a7b8433610a7685604051806060016040528060318152602001612f6f603191396001600160a01b038a16600090815260016020908152604080832033845290915290205491906121bd565b6121e9565b5060019392505050565b6000546001600160a01b03163314610aaf5760405162461bcd60e51b81526004016108af90612caa565b6001600160a01b03811660009081526006602052604090205460ff16610b175760405162461bcd60e51b815260206004820152601c60248201527f45524332303a204163636f756e74206973206e6f7420736e697065720000000060448201526064016108af565b6001600160a01b03166000908152600660205260409020805460ff19169055565b600080546001600160a01b03163314610b635760405162461bcd60e51b81526004016108af90612caa565b601e5462010000900460ff1615610bbc5760405162461bcd60e51b815260206004820152601b60248201527f45524332303a2054726164657320616c7265616479204c69766521000000000060448201526064016108af565b43601c55610bcd426202a300612297565b601d55600d80546001600160a01b0319908116737a250d5630b4cf539739df2c5dacb4c659f2488d908117909255600e80549091167368b3465833fb72a70ecdf485e0e4c7bd8665fc451790557ffb19a963956c9cb662dd3ae48988c4b90766df71ea130109840abe0a1b23dba8805460ff1990811660019081179092557fdc51a0a44317b550a6b5ddb34687ce2bd40e4750eec27343e32b23e6867392088054821683179055600083905260046020527f1fc5acd025f7cc5cf2691b667dba808b5a149bf27192c208fc66f1f0ec4222d780549091169091179055610cc93082610cba6012600a612de9565b610a769064e8d4a51000612df8565b806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d2b9190612e17565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d9c9190612e17565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610de9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e0d9190612e17565b600c80546001600160a01b0319166001600160a01b0392831690811782556000908152600360209081526040808320805460ff19908116600190811790925594549095168352600490915290208054909116909117905547610ec65760405162461bcd60e51b815260206004820152602c60248201527f45524332303a204d757374206861766520455448206f6e20636f6e747261637460448201526b20746f20476f204c6976652160a01b60648201526084016108af565b610ed8610ed2306111ea565b476122a3565b600b54600880546001600160a01b0319166001600160a01b0390921691821790556000908152600560205260409020805460ff191660011790555050601e805465ff0000ffffff191665010000010101179055600190565b6000546001600160a01b03163314610f5a5760405162461bcd60e51b81526004016108af90612caa565b6001600160a01b03919091166000908152600460205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610faf5760405162461bcd60e51b81526004016108af90612caa565b606482511061101f5760405162461bcd60e51b815260206004820152603660248201527f43616e206f6e6c792061697264726f70203130302077616c6c657473207065726044820152752074786e2064756520746f20676173206c696d69747360501b60648201526084016108af565b60005b82518110156110b857600083828151811061103f5761103f612e34565b602002602001015190506000611096606461109086868151811061106557611065612e34565b60200260200101516012600a61107b9190612de9565b61108a9064e8d4a51000612df8565b90611a2f565b90611a42565b90506110a3338383611a4e565b505080806110b090612e4a565b915050611022565b505050565b6000546001600160a01b031633146110e75760405162461bcd60e51b81526004016108af90612caa565b611134306110fd6000546001600160a01b031690565b60648461110c6012600a612de9565b61111b9064e8d4a51000612df8565b6111259190612df8565b61112f9190612e65565b611a4e565b50565b6000546001600160a01b031633146111615760405162461bcd60e51b81526004016108af90612caa565b6001600160a01b03811660009081526007602052604090205460ff166111c95760405162461bcd60e51b815260206004820152601960248201527f45524332303a204163636f756e74206973206e6f7420626f740000000000000060448201526064016108af565b6001600160a01b03166000908152600760205260409020805460ff19169055565b6001600160a01b031660009081526002602052604090205490565b6000546001600160a01b0316331461122f5760405162461bcd60e51b81526004016108af90612caa565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146112a35760405162461bcd60e51b81526004016108af90612caa565b601e805491151563010000000263ff00000019909216919091179055565b600080546001600160a01b031633146112ec5760405162461bcd60e51b81526004016108af90612caa565b600a8211156113575760405162461bcd60e51b815260206004820152603160248201527f45524332303a204d6179206e6f74206e756b65206d6f7265207468616e203130604482015270025206f6620746f6b656e7320696e204c5607c1b60648201526084016108af565b600c546040516370a0823160e01b81526001600160a01b03909116600482015260009030906370a0823190602401602060405180830381865afa1580156113a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c69190612e87565b905060006113d960646110908487611a2f565b905080156113fe57600c54600b546113fe916001600160a01b03908116911683611a4e565b600b54611413906001600160a01b03166111ea565b60135560646114246012600a612de9565b6114339064e8d4a51000612df8565b61143e906032612df8565b6114489190612e65565b60135411156114ad5760405162461bcd60e51b815260206004820152602b60248201527f45524332303a2043616e206e6f74206275726e206d6f7265207468656e20353060448201526a25206f6620737570706c7960a81b60648201526084016108af565b600c546040805160016209351760e01b0319815290516001600160a01b0390921691829163fff6cae991600480830192600092919082900301818387803b1580156114f757600080fd5b505af115801561150b573d6000803e3d6000fd5b50505050600193505050505b919050565b6000546001600160a01b031633146115465760405162461bcd60e51b81526004016108af90612caa565b601e80549115156101000261ff0019909216919091179055565b6000546001600160a01b0316331461158a5760405162461bcd60e51b81526004016108af90612caa565b6001600160a01b03919091166000908152600360205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146115df5760405162461bcd60e51b81526004016108af90612caa565b60006115ea306111ea565b9050611603612710611090600561107b6012600a612de9565b8110156116895760405162461bcd60e51b815260206004820152604860248201527f45524332303a2043616e206f6e6c792073776170206261636b206966206d6f7260448201527f65207468616e20302e303525206f6620746f6b656e7320737475636b206f6e2060648201526718dbdb9d1c9858dd60c21b608482015260a4016108af565b611134612357565b600061169e338484611a4e565b50600192915050565b6000546001600160a01b031633146116d15760405162461bcd60e51b81526004016108af90612caa565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146117265760405162461bcd60e51b81526004016108af90612caa565b601e8054911515650100000000000265ff000000000019909216919091179055565b6000546001600160a01b031633146117725760405162461bcd60e51b81526004016108af90612caa565b6001600160a01b0381166117dc5760405162461bcd60e51b815260206004820152602b60248201527f45524332304f776e61626c653a206e6577206f776e657220697320746865207a60448201526a65726f206164647265737360a81b60648201526084016108af565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146118615760405162461bcd60e51b81526004016108af90612caa565b611875816110908461107b6012600a612de9565b600f5561188e6064611090600461107b6012600a612de9565b600f5411156118f25760405162461bcd60e51b815260206004820152602a60248201527f45524332303a2043616e206e6f7420736574206d61782077616c6c6574206d6f6044820152697265207468616e20342560b01b60648201526084016108af565b5050565b6000546001600160a01b031633146119205760405162461bcd60e51b81526004016108af90612caa565b600080546040516001600160a01b039091169047908381818185875af1925050503d806000811461196d576040519150601f19603f3d011682016040523d82523d6000602084013e611972565b606091505b50505050565b6000546001600160a01b031633146119a25760405162461bcd60e51b81526004016108af90612caa565b6001600160a01b03811660009081526007602052604090205460ff1615611a0b5760405162461bcd60e51b815260206004820152601c60248201527f45524332303a204163636f756e7420616c72656164792061646465640000000060448201526064016108af565b6001600160a01b03166000908152600760205260409020805460ff19166001179055565b6000611a3b8284612df8565b9392505050565b6000611a3b8284612e65565b6001600160a01b038316611ab25760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016108af565b6001600160a01b038216611b145760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016108af565b60008111611b7d5760405162461bcd60e51b815260206004820152603060248201527f45524332303a205472616e7366657220616d6f756e74206d757374206265206760448201526f726561746572207468616e207a65726f60801b60648201526084016108af565b6001600160a01b03831660009081526007602052604090205460ff1615611be65760405162461bcd60e51b815260206004820181905260248201527f45524332303a2043616e206e6f74207472616e736665722066726f6d20424f5460448201526064016108af565b601e5462010000900460ff16611c81576001600160a01b03831660009081526005602052604090205460ff1680611c3557506001600160a01b03821660009081526005602052604090205460ff165b611c815760405162461bcd60e51b815260206004820152601b60248201527f45524332303a2054726164696e67204973204e6f74204c69766521000000000060448201526064016108af565b601e5460ff6101009091041615156001148015611cb757506001600160a01b03821660009081526004602052604090205460ff16155b15611d3757600f54611cd282611ccc856111ea565b90612297565b1115611d375760405162461bcd60e51b815260206004820152602e60248201527f45524332303a204d617820616d6f756e74206f6620746f6b656e7320666f722060448201526d1dd85b1b195d081c995858da195960921b60648201526084016108af565b601e5460ff1615611e13576000546001600160a01b03848116911614801590611d6e57506000546001600160a01b03838116911614155b8015611d8257506001600160a01b03821615155b8015611d9c5750600b546001600160a01b03838116911614155b8015611db65750600c546001600160a01b03838116911614155b15611e135760005b6003811015611e1157601c54611dd49082612297565b431415611dff576001600160a01b0383166000908152600660205260409020805460ff191660011790555b80611e0981612e4a565b915050611dbe565b505b601e546301000000900460ff1615611ef657611e2e82610981565b158015611e5357506001600160a01b03831660009081526003602052604090205460ff165b80611e875750611e6283610981565b158015611e8757506001600160a01b03821660009081526003602052604090205460ff165b80611eba5750611e9683610981565b8015611eba57506001600160a01b03821660009081526003602052604090205460ff165b80611eed5750611ec982610981565b8015611eed57506001600160a01b03831660009081526003602052604090205460ff165b611ef657600080fd5b6000611f0f60115460125461229790919063ffffffff16565b90506000611f1c306111ea565b601054601e5491925082101590640100000000900460ff16158015611f4c5750601e5465010000000000900460ff165b8015611f6d5750600c54600090611f6b906001600160a01b03166111ea565b115b8015611f795750600083115b8015611f9e57506001600160a01b03851660009081526005602052604090205460ff16155b8015611fc357506001600160a01b03861660009081526005602052604090205460ff16155b8015611fdc5750600c546001600160a01b038681169116145b8015611fe55750805b15611ff257611ff2612357565b6001600160a01b03861660009081526005602052604090205460ff168061203157506001600160a01b03851660009081526005602052604090205460ff165b156120545760006014819055601581905561204c9080612297565b6016556121aa565b600c546001600160a01b0387811691161415612084576017546014819055601854601581905561204c9190612297565b600c546001600160a01b0386811691161415612103576019546014819055601b5460158190556120b49190612297565b6016556001600160a01b03861660009081526006602052604090205460ff1680156120e1575042601d5410155b156120fe57605f60148190556000601581905561204c9190612297565b6121aa565b6001600160a01b03861660009081526006602052604090205460ff16158061212d575042601d5411155b61219f5760405162461bcd60e51b815260206004820152603960248201527f45524332303a20536e69706572732063616e206e6f74207472616e736665722060448201527f74696c6c2070656e616c74792074696d65206973206f7665720000000000000060648201526084016108af565b600060148190556015555b6121b5868686612503565b505050505050565b600081848411156121e15760405162461bcd60e51b81526004016108af919061288a565b505050900390565b6001600160a01b03831661220f5760405162461bcd60e51b81526004016108af90612c1c565b6001600160a01b0382166122355760405162461bcd60e51b81526004016108af90612c64565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6000611a3b8284612ea0565b600d546122bb9030906001600160a01b0316846121e9565b600d5460085460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af115801561232b573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906123509190612eb8565b5050505050565b601e805464ff0000000019166401000000001790556000612377306111ea565b9050600061239260125460115461229790919063ffffffff16565b905060006123ac6002601254611a4290919063ffffffff16565b905060006123ba84836126a4565b9050476123c6826126b0565b60006123d247836126a4565b905060006123ef8661109060115485611a2f90919063ffffffff16565b905060006123fd83836126a4565b60006011819055601281905560095460405192935090916001600160a01b039091169084908381818185875af1925050503d806000811461245a576040519150601f19603f3d011682016040523d82523d6000602084013e61245f565b606091505b505090508160001415801561247357508615155b156124825761248287836122a3565b6706f05b59d3b200004711156124ea57600a546040516001600160a01b03909116904790600081818185875af1925050503d80600081146124df576040519150601f19603f3d011682016040523d82523d6000602084013e6124e4565b606091505b50909150505b5050601e805464ff000000001916905550505050505050565b6016541561260357600061251682612802565b9050600061252483836126a4565b905061252f8261282a565b6001600160a01b03851660009081526002602052604081208054859290612557908490612ee6565b90915550506001600160a01b03841660009081526002602052604081208054839290612584908490612ea0565b909155505030600090815260026020526040812080548492906125a8908490612ea0565b92505081905550836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516125f491815260200190565b60405180910390a35050505050565b6001600160a01b0383166000908152600260205260408120805483929061262b908490612ee6565b90915550506001600160a01b03821660009081526002602052604081208054839290612658908490612ea0565b92505081905550816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161228a91815260200190565b6000611a3b8284612ee6565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106126e5576126e5612e34565b6001600160a01b03928316602091820292909201810191909152600d54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561273e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127629190612e17565b8160018151811061277557612775612e34565b6001600160a01b039283166020918202929092010152600d5461279b91309116846121e9565b600d5460405163791ac94760e01b81526001600160a01b039091169063791ac947906127d4908590600090869030904290600401612efd565b600060405180830381600087803b1580156127ee57600080fd5b505af11580156121b5573d6000803e3d6000fd5b600061093d606461109061282360155460145461229790919063ffffffff16565b8590611a2f565b61284560165461109060145484611a2f90919063ffffffff16565b601160008282546128569190612ea0565b90915550506016546015546128719190611090908490611a2f565b601260008282546128829190612ea0565b909155505050565b600060208083528351808285015260005b818110156128b75785810183015185820160400152820161289b565b818111156128c9576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461113457600080fd5b6000806040838503121561290757600080fd5b8235612912816128df565b946020939093013593505050565b6000806000806080858703121561293657600080fd5b5050823594602084013594506040840135936060013592509050565b60006020828403121561296457600080fd5b8135611a3b816128df565b8035801515811461151757600080fd5b60006020828403121561299157600080fd5b611a3b8261296f565b6000806000606084860312156129af57600080fd5b83356129ba816128df565b925060208401356129ca816128df565b929592945050506040919091013590565b600080604083850312156129ee57600080fd5b82356129f9816128df565b9150612a076020840161296f565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612a4f57612a4f612a10565b604052919050565b600067ffffffffffffffff821115612a7157612a71612a10565b5060051b60200190565b600082601f830112612a8c57600080fd5b81356020612aa1612a9c83612a57565b612a26565b82815260059290921b84018101918181019086841115612ac057600080fd5b8286015b84811015612adb5780358352918301918301612ac4565b509695505050505050565b60008060408385031215612af957600080fd5b823567ffffffffffffffff80821115612b1157600080fd5b818501915085601f830112612b2557600080fd5b81356020612b35612a9c83612a57565b82815260059290921b84018101918181019089841115612b5457600080fd5b948201945b83861015612b7b578535612b6c816128df565b82529482019490820190612b59565b96505086013592505080821115612b9157600080fd5b50612b9e85828601612a7b565b9150509250929050565b600060208284031215612bba57600080fd5b5035919050565b60008060408385031215612bd457600080fd5b8235612bdf816128df565b91506020830135612bef816128df565b809150509250929050565b60008060408385031215612c0d57600080fd5b50508035926020909101359150565b60208082526028908201527f45524332303a2043616e206e6f7420617070726f76652066726f6d207a65726f604082015267206164647265737360c01b606082015260800190565b60208082526026908201527f45524332303a2043616e206e6f7420617070726f766520746f207a65726f206160408201526564647265737360d01b606082015260800190565b60208082526025908201527f45524332304f776e61626c653a2063616c6c6572206973206e6f74207468652060408201526437bbb732b960d91b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115612d40578160001904821115612d2657612d26612cef565b80851615612d3357918102915b93841c9390800290612d0a565b509250929050565b600082612d575750600161093d565b81612d645750600061093d565b8160018114612d7a5760028114612d8457612da0565b600191505061093d565b60ff841115612d9557612d95612cef565b50506001821b61093d565b5060208310610133831016604e8410600b8410161715612dc3575081810a61093d565b612dcd8383612d05565b8060001904821115612de157612de1612cef565b029392505050565b6000611a3b60ff841683612d48565b6000816000190483118215151615612e1257612e12612cef565b500290565b600060208284031215612e2957600080fd5b8151611a3b816128df565b634e487b7160e01b600052603260045260246000fd5b6000600019821415612e5e57612e5e612cef565b5060010190565b600082612e8257634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215612e9957600080fd5b5051919050565b60008219821115612eb357612eb3612cef565b500190565b600080600060608486031215612ecd57600080fd5b8351925060208401519150604084015190509250925092565b600082821015612ef857612ef8612cef565b500390565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612f4d5784516001600160a01b031683529383019391830191600101612f28565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a2043616e206e6f74207472616e736665722e20416d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220caeb02664c36d66286cf8d91b3df982b8cc72e59ed941250cbb135ff519b707964736f6c634300080a0033
Deployed Bytecode Sourcemap
18166:17213:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21255:98;;;;;;;;;;-1:-1:-1;21336:9:0;;;;;;;;;;;;-1:-1:-1;;;21336:9:0;;;;21255:98;;;;;;;:::i;:::-;;;;;;;;21960:397;;;;;;;;;;-1:-1:-1;21960:397:0;;;;;:::i;:::-;;:::i;:::-;;;1237:14:1;;1230:22;1212:41;;1200:2;1185:18;21960:397:0;1072:187:1;34818:329:0;;;;;;;;;;-1:-1:-1;34818:329:0;;;;;:::i;:::-;;:::i;:::-;;18826:40;;;;;;;;;;-1:-1:-1;18826:40:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;35153:223;;;;;;;;;;-1:-1:-1;35302:15:0;;35318;;35334:16;;35351;;35153:223;;;2137:25:1;;;2193:2;2178:18;;2171:34;;;;2221:18;;;2214:34;2279:2;2264:18;;2257:34;2124:3;2109:19;35153:223:0;1906:391:1;31177:337:0;;;;;;;;;;-1:-1:-1;31177:337:0;;;;;:::i;:::-;;:::i;21570:101::-;;;;;;;;;;;;;:::i;:::-;;;2448:25:1;;;2436:2;2421:18;21570:101:0;2302:177:1;34341:103:0;;;;;;;;;;-1:-1:-1;34341:103:0;;;;;:::i;:::-;;:::i;19742:28::-;;;;;;;;;;-1:-1:-1;19742:28:0;;;;;;;;22904:348;;;;;;;;;;-1:-1:-1;22904:348:0;;;;;:::i;:::-;;:::i;21467:97::-;;;;;;;;;;-1:-1:-1;21467:97:0;;18442:2;3437:36:1;;3425:2;3410:18;21467:97:0;3295:184:1;33422:171:0;;;;;;;;;;-1:-1:-1;33422:171:0;;;;;:::i;:::-;;:::i;23693:1249::-;;;;;;;;;;;;;:::i;18873:37::-;;;;;;;;;;-1:-1:-1;18873:37:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;33917:158;;;;;;;;;;-1:-1:-1;33917:158:0;;;;;:::i;:::-;;:::i;23258:429::-;;;;;;;;;;-1:-1:-1;23258:429:0;;;;;:::i;:::-;;:::i;31963:149::-;;;;;;;;;;-1:-1:-1;31963:149:0;;;;;:::i;:::-;;:::i;19142:26::-;;;;;;;;;;-1:-1:-1;19142:26:0;;;;-1:-1:-1;;;;;19142:26:0;;;;;;-1:-1:-1;;;;;6640:32:1;;;6622:51;;6610:2;6595:18;19142:26:0;6476:203:1;33260:159:0;;;;;;;;;;-1:-1:-1;33260:159:0;;;;;:::i;:::-;;:::i;21677:122::-;;;;;;;;;;-1:-1:-1;21677:122:0;;;;;:::i;:::-;;:::i;780:148::-;;;;;;;;;;;;;:::i;19777:31::-;;;;;;;;;;-1:-1:-1;19777:31:0;;;;;;;;;;;34564:119;;;;;;;;;;-1:-1:-1;34564:119:0;;;;;:::i;:::-;;:::i;32118:686::-;;;;;;;;;;-1:-1:-1;32118:686:0;;;;;:::i;:::-;;:::i;19067:24::-;;;;;;;;;;-1:-1:-1;19067:24:0;;;;-1:-1:-1;;;;;19067:24:0;;;34450:108;;;;;;;;;;-1:-1:-1;34450:108:0;;;;;:::i;:::-;;:::i;556:87::-;;;;;;;;;;-1:-1:-1;602:7:0;629:6;-1:-1:-1;;;;;629:6:0;556:87;;33599:160;;;;;;;;;;-1:-1:-1;33599:160:0;;;;;:::i;:::-;;:::i;19815:24::-;;;;;;;;;;-1:-1:-1;19815:24:0;;;;;;;;;;;19098:37;;;;;;;;;;-1:-1:-1;19098:37:0;;;;-1:-1:-1;;;;;19098:37:0;;;21359:102;;;;;;;;;;-1:-1:-1;21442:11:0;;;;;;;;;;;;-1:-1:-1;;;21442:11:0;;;;21359:102;;19846:35;;;;;;;;;;-1:-1:-1;19846:35:0;;;;;;;;;;;31668:126;;;;;;;;;;-1:-1:-1;31668:126:0;;;;;:::i;:::-;-1:-1:-1;;;;;31758:28:0;31734:4;31758:28;;;:19;:28;;;;;;;;;31668:126;32810:282;;;;;;;;;;;;;:::i;22722:176::-;;;;;;;;;;-1:-1:-1;22722:176:0;;;;;:::i;:::-;;:::i;33765:146::-;;;;;;;;;;-1:-1:-1;33765:146:0;;;;;:::i;:::-;;:::i;21805:149::-;;;;;;;;;;-1:-1:-1;21805:149:0;;;;;:::i;:::-;-1:-1:-1;;;;;21915:22:0;;;21888:7;21915:22;;;:15;:22;;;;;;;;:31;;;;;;;;;;;;;21805:149;19662:33;;;;;;;;;;;;;;;;34689:123;;;;;;;;;;-1:-1:-1;34689:123:0;;;;;:::i;:::-;;:::i;19702:31::-;;;;;;;;;;;;;;;;934:249;;;;;;;;;;-1:-1:-1;934:249:0;;;;;:::i;:::-;;:::i;34081:254::-;;;;;;;;;;-1:-1:-1;34081:254:0;;;;;:::i;:::-;;:::i;31800:157::-;;;;;;;;;;;;;:::i;33098:159::-;;;;;;;;;;-1:-1:-1;33098:159:0;;;;;:::i;:::-;;:::i;21960:397::-;22035:4;215:10;22052:79;;;;-1:-1:-1;;;22052:79:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;22150:21:0;;22142:72;;;;-1:-1:-1;;;22142:72:0;;;;;;;:::i;:::-;215:10;22225:29;;;;:15;:29;;;;;;;;-1:-1:-1;;;;;22225:38:0;;;;;;;;;;;;:47;;;22288:39;2448:25:1;;;22225:38:0;;215:10;22288:39;;2421:18:1;22288:39:0;;;;;;;-1:-1:-1;22345:4:0;21960:397;;;;;:::o;34818:329::-;602:7;629:6;-1:-1:-1;;;;;629:6:0;215:10;689:23;681:73;;;;-1:-1:-1;;;681:73:0;;;;;;;:::i;:::-;34970:15:::1;:33:::0;;;;35014:15:::1;:33:::0;;;;35058:16:::1;:35:::0;35104:16:::1;:35:::0;34818:329::o;31177:337::-;31235:4;31414:20;;31301:66;31463:23;;;;;;:42;;-1:-1:-1;31490:15:0;;;31463:42;31455:51;31177:337;-1:-1:-1;;;;31177:337:0:o;21570:101::-;21625:7;18497:16;18442:2;18497;:16;:::i;:::-;18490:23;;:4;:23;:::i;:::-;21645:18;;21570:101;:::o;34341:103::-;602:7;629:6;-1:-1:-1;;;;;629:6:0;215:10;689:23;681:73;;;;-1:-1:-1;;;681:73:0;;;;;;;:::i;:::-;34414:8:::1;:22:::0;;-1:-1:-1;;34414:22:0::1;::::0;::::1;;::::0;;;::::1;::::0;;34341:103::o;22904:348::-;23002:4;23019:43;23036:6;23044:9;23055:6;23019:16;:43::i;:::-;23073:149;23089:6;215:10;23119:102;23161:6;23119:102;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;23119:23:0;;;;;;:15;:23;;;;;;;;215:10;23119:37;;;;;;;;;;:41;:102::i;:::-;23073:15;:149::i;:::-;-1:-1:-1;23240:4:0;22904:348;;;;;:::o;33422:171::-;602:7;629:6;-1:-1:-1;;;;;629:6:0;215:10;689:23;681:73;;;;-1:-1:-1;;;681:73:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;33499:17:0;::::1;;::::0;;;:8:::1;:17;::::0;;;;;::::1;;33491:58;;;::::0;-1:-1:-1;;;33491:58:0;;10677:2:1;33491:58:0::1;::::0;::::1;10659:21:1::0;10716:2;10696:18;;;10689:30;10755;10735:18;;;10728:58;10803:18;;33491:58:0::1;10475:352:1::0;33491:58:0::1;-1:-1:-1::0;;;;;33560:17:0::1;33580:5;33560:17:::0;;;:8:::1;:17;::::0;;;;:25;;-1:-1:-1;;33560:25:0::1;::::0;;33422:171::o;23693:1249::-;23739:4;629:6;;-1:-1:-1;;;;;629:6:0;215:10;689:23;681:73;;;;-1:-1:-1;;;681:73:0;;;;;;;:::i;:::-;23764:4:::1;::::0;;;::::1;;;23763:5;23755:45;;;::::0;-1:-1:-1;;;23755:45:0;;11034:2:1;23755:45:0::1;::::0;::::1;11016:21:1::0;11073:2;11053:18;;;11046:30;11112:29;11092:18;;;11085:57;11159:18;;23755:45:0::1;10832:351:1::0;23755:45:0::1;23832:12;23811:18;:33:::0;23874:27:::1;:15;23894:6;23874:19;:27::i;:::-;23855:16;:46:::0;24019:11:::1;:26:::0;;-1:-1:-1;;;;;;24019:26:0;;::::1;23965:42;24019:26:::0;;::::1;::::0;;;24056:11:::1;:56:::0;;;;::::1;24070:42;24056:56;::::0;;24123:41;:48;;-1:-1:-1;;24123:48:0;;::::1;24019:26:::0;24123:48;;::::1;::::0;;;24182:41;:48;;;::::1;::::0;::::1;::::0;;23912:31:::1;24241:41:::0;;;:19:::1;24123:41;24241::::0;;:48;;;;::::1;::::0;;::::1;::::0;;24300:65:::1;24324:4;23965:42:::0;18497:16:::1;18442:2;18497;:16;:::i;:::-;18490:23;::::0;:4:::1;:23;:::i;24300:65::-;24406:12;-1:-1:-1::0;;;;;24406:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;24388:52:0::1;;24449:4;24456:12;-1:-1:-1::0;;;;;24456:17:0::1;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24388:88;::::0;-1:-1:-1;;;;;;24388:88:0::1;::::0;;;;;;-1:-1:-1;;;;;11674:15:1;;;24388:88:0::1;::::0;::::1;11656:34:1::0;11726:15;;11706:18;;;11699:43;11591:18;;24388:88:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24376:9;:100:::0;;-1:-1:-1;;;;;;24376:100:0::1;-1:-1:-1::0;;;;;24376:100:0;;::::1;::::0;;::::1;::::0;;-1:-1:-1;24487:39:0;;;:19:::1;:39;::::0;;;;;;;:46;;-1:-1:-1;;24487:46:0;;::::1;-1:-1:-1::0;24487:46:0;;::::1;::::0;;;24572:9;;;;::::1;24544:39:::0;;:19:::1;:39:::0;;;;;:46;;;;::::1;::::0;;::::1;::::0;;24609:21:::1;24601:82;;;::::0;-1:-1:-1;;;24601:82:0;;11955:2:1;24601:82:0::1;::::0;::::1;11937:21:1::0;11994:2;11974:18;;;11967:30;12033:34;12013:18;;;12006:62;-1:-1:-1;;;12084:18:1;;;12077:42;12136:19;;24601:82:0::1;11753:408:1::0;24601:82:0::1;24694:61;24707:24;24725:4;24707:9;:24::i;:::-;24733:21;24694:12;:61::i;:::-;24792:4;::::0;31077:16;:37;;-1:-1:-1;;;;;;31077:37:0;-1:-1:-1;;;;;24792:4:0;;::::1;31077:37:::0;;;;;-1:-1:-1;31125:31:0;;;:13;:31;;;;;:38;;-1:-1:-1;;31125:38:0;-1:-1:-1;31125:38:0;;;-1:-1:-1;;24808:11:0::1;:18:::0;;-1:-1:-1;;24901:11:0;;;;;-1:-1:-1;;23693:1249:0:o;33917:158::-;602:7;629:6;-1:-1:-1;;;;;629:6:0;215:10;689:23;681:73;;;;-1:-1:-1;;;681:73:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;34016:37:0;;;::::1;;::::0;;;:19:::1;:37;::::0;;;;:51;;-1:-1:-1;;34016:51:0::1;::::0;::::1;;::::0;;;::::1;::::0;;33917:158::o;23258:429::-;602:7;629:6;-1:-1:-1;;;;;629:6:0;215:10;689:23;681:73;;;;-1:-1:-1;;;681:73:0;;;;;;;:::i;:::-;23381:3:::1;23364:7;:14;:20;23356:87;;;::::0;-1:-1:-1;;;23356:87:0;;12368:2:1;23356:87:0::1;::::0;::::1;12350:21:1::0;12407:2;12387:18;;;12380:30;12446:34;12426:18;;;12419:62;-1:-1:-1;;;12497:18:1;;;12490:52;12559:19;;23356:87:0::1;12166:418:1::0;23356:87:0::1;23458:9;23454:226;23477:7;:14;23473:1;:18;23454:226;;;23512:14;23529:7;23537:1;23529:10;;;;;;;;:::i;:::-;;;;;;;23512:27;;23554:14;23571:36;23603:3;23571:27;23587:7;23595:1;23587:10;;;;;;;;:::i;:::-;;;;;;;18442:2;18497;:16;;;;:::i;:::-;18490:23;::::0;:4:::1;:23;:::i;:::-;23571:15:::0;::::1;:27::i;:::-;:31:::0;::::1;:36::i;:::-;23554:53:::0;-1:-1:-1;23622:46:0::1;215:10:::0;23653:6:::1;23661;23622:16;:46::i;:::-;23497:183;;23493:3;;;;;:::i;:::-;;;;23454:226;;;;23258:429:::0;;:::o;31963:149::-;602:7;629:6;-1:-1:-1;;;;;629:6:0;215:10;689:23;681:73;;;;-1:-1:-1;;;681:73:0;;;;;;;:::i;:::-;32039:65:::1;32064:4;32071:7;602::::0;629:6;-1:-1:-1;;;;;629:6:0;;556:87;32071:7:::1;32100:3;32092:7:::0;18497:16:::1;18442:2;18497;:16;:::i;:::-;18490:23;::::0;:4:::1;:23;:::i;:::-;32080:19;;;;:::i;:::-;:23;;;;:::i;:::-;32039:16;:65::i;:::-;31963:149:::0;:::o;33260:159::-;602:7;629:6;-1:-1:-1;;;;;629:6:0;215:10;689:23;681:73;;;;-1:-1:-1;;;681:73:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;33334:14:0;::::1;;::::0;;;:5:::1;:14;::::0;;;;;::::1;;33326:52;;;::::0;-1:-1:-1;;;33326:52:0;;13285:2:1;33326:52:0::1;::::0;::::1;13267:21:1::0;13324:2;13304:18;;;13297:30;13363:27;13343:18;;;13336:55;13408:18;;33326:52:0::1;13083:349:1::0;33326:52:0::1;-1:-1:-1::0;;;;;33389:14:0::1;33406:5;33389:14:::0;;;:5:::1;:14;::::0;;;;:22;;-1:-1:-1;;33389:22:0::1;::::0;;33260:159::o;21677:122::-;-1:-1:-1;;;;;21770:21:0;21743:7;21770:21;;;:12;:21;;;;;;;21677:122::o;780:148::-;602:7;629:6;-1:-1:-1;;;;;629:6:0;215:10;689:23;681:73;;;;-1:-1:-1;;;681:73:0;;;;;;;:::i;:::-;887:1:::1;871:6:::0;;850:40:::1;::::0;-1:-1:-1;;;;;871:6:0;;::::1;::::0;850:40:::1;::::0;887:1;;850:40:::1;918:1;901:19:::0;;-1:-1:-1;;;;;;901:19:0::1;::::0;;780:148::o;34564:119::-;602:7;629:6;-1:-1:-1;;;;;629:6:0;215:10;689:23;681:73;;;;-1:-1:-1;;;681:73:0;;;;;;;:::i;:::-;34646:15:::1;:29:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;34646:29:0;;::::1;::::0;;;::::1;::::0;;34564:119::o;32118:686::-;32195:4;629:6;;-1:-1:-1;;;;;629:6:0;215:10;689:23;681:73;;;;-1:-1:-1;;;681:73:0;;;;;;;:::i;:::-;32230:2:::1;32219:7;:13;;32211:75;;;::::0;-1:-1:-1;;;32211:75:0;;13639:2:1;32211:75:0::1;::::0;::::1;13621:21:1::0;13678:2;13658:18;;;13651:30;13717:34;13697:18;;;13690:62;-1:-1:-1;;;13768:18:1;;;13761:47;13825:19;;32211:75:0::1;13437:413:1::0;32211:75:0::1;32343:9;::::0;32328:25:::1;::::0;-1:-1:-1;;;32328:25:0;;-1:-1:-1;;;;;32343:9:0;;::::1;32328:25;::::0;::::1;6622:51:1::0;32297:28:0::1;::::0;32328:4:::1;::::0;:14:::1;::::0;6595:18:1;;32328:25:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;32297:56:::0;-1:-1:-1;32364:20:0::1;32387:44;32425:5;32387:33;32297:56:::0;32412:7;32387:24:::1;:33::i;:44::-;32364:67:::0;-1:-1:-1;32446:16:0;;32442:95:::1;;32495:9;::::0;32506:4:::1;::::0;32478:47:::1;::::0;-1:-1:-1;;;;;32495:9:0;;::::1;::::0;32506:4:::1;32512:12:::0;32478:16:::1;:47::i;:::-;32577:4;::::0;32567:15:::1;::::0;-1:-1:-1;;;;;32577:4:0::1;32567:9;:15::i;:::-;32547:17;:35:::0;32641:5:::1;18497:16;18442:2;18497;:16;:::i;:::-;18490:23;::::0;:4:::1;:23;:::i;:::-;32622:16;::::0;32636:2:::1;32622:16;:::i;:::-;:24;;;;:::i;:::-;32601:17;;:45;;32593:101;;;::::0;-1:-1:-1;;;32593:101:0;;14246:2:1;32593:101:0::1;::::0;::::1;14228:21:1::0;14285:2;14265:18;;;14258:30;14324:34;14304:18;;;14297:62;-1:-1:-1;;;14375:18:1;;;14368:41;14426:19;;32593:101:0::1;14044:407:1::0;32593:101:0::1;32742:9;::::0;32763:11:::1;::::0;;-1:-1:-1;;;;;;32763:11:0;;;;-1:-1:-1;;;;;32742:9:0;;::::1;::::0;;;32763::::1;::::0;:11:::1;::::0;;::::1;::::0;32705:19:::1;::::0;32763:11;;;;;;;32705:19;32742:9;32763:11;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;32792:4;32785:11;;;;;765:1;32118:686:::0;;;:::o;34450:108::-;602:7;629:6;-1:-1:-1;;;;;629:6:0;215:10;689:23;681:73;;;;-1:-1:-1;;;681:73:0;;;;;;;:::i;:::-;34525:11:::1;:25:::0;;;::::1;;;;-1:-1:-1::0;;34525:25:0;;::::1;::::0;;;::::1;::::0;;34450:108::o;33599:160::-;602:7;629:6;-1:-1:-1;;;;;629:6:0;215:10;689:23;681:73;;;;-1:-1:-1;;;681:73:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;33700:37:0;;;::::1;;::::0;;;:19:::1;:37;::::0;;;;:51;;-1:-1:-1;;33700:51:0::1;::::0;::::1;;::::0;;;::::1;::::0;;33599:160::o;32810:282::-;602:7;629:6;-1:-1:-1;;;;;629:6:0;215:10;689:23;681:73;;;;-1:-1:-1;;;681:73:0;;;;;;;:::i;:::-;32865:23:::1;32891:24;32909:4;32891:9;:24::i;:::-;32865:50:::0;-1:-1:-1;32953:29:0::1;32976:5;32953:18;32969:1;18497:16;18442:2;18497;:16;:::i;32953:29::-;32934:15;:48;;32926:133;;;::::0;-1:-1:-1;;;32926:133:0;;14658:2:1;32926:133:0::1;::::0;::::1;14640:21:1::0;14697:2;14677:18;;;14670:30;14736:34;14716:18;;;14709:62;14807:34;14787:18;;;14780:62;-1:-1:-1;;;14858:19:1;;;14851:39;14907:19;;32926:133:0::1;14456:476:1::0;32926:133:0::1;33070:14;:12;:14::i;22722:176::-:0;22802:4;22819:49;215:10;22850:9;22861:6;22819:16;:49::i;:::-;-1:-1:-1;22886:4:0;22722:176;;;;:::o;33765:146::-;602:7;629:6;-1:-1:-1;;;;;629:6:0;215:10;689:23;681:73;;;;-1:-1:-1;;;681:73:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;33858:31:0;;;::::1;;::::0;;;:13:::1;:31;::::0;;;;:45;;-1:-1:-1;;33858:45:0::1;::::0;::::1;;::::0;;;::::1;::::0;;33765:146::o;34689:123::-;602:7;629:6;-1:-1:-1;;;;;629:6:0;215:10;689:23;681:73;;;;-1:-1:-1;;;681:73:0;;;;;;;:::i;:::-;34770:20:::1;:34:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;34770:34:0;;::::1;::::0;;;::::1;::::0;;34689:123::o;934:249::-;602:7;629:6;-1:-1:-1;;;;;629:6:0;215:10;689:23;681:73;;;;-1:-1:-1;;;681:73:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1023:22:0;::::1;1015:78;;;::::0;-1:-1:-1;;;1015:78:0;;15139:2:1;1015:78:0::1;::::0;::::1;15121:21:1::0;15178:2;15158:18;;;15151:30;15217:34;15197:18;;;15190:62;-1:-1:-1;;;15268:18:1;;;15261:41;15319:19;;1015:78:0::1;14937:407:1::0;1015:78:0::1;1130:6;::::0;;1109:38:::1;::::0;-1:-1:-1;;;;;1109:38:0;;::::1;::::0;1130:6;::::1;::::0;1109:38:::1;::::0;::::1;1158:6;:17:::0;;-1:-1:-1;;;;;;1158:17:0::1;-1:-1:-1::0;;;;;1158:17:0;;;::::1;::::0;;;::::1;::::0;;934:249::o;34081:254::-;602:7;629:6;-1:-1:-1;;;;;629:6:0;215:10;689:23;681:73;;;;-1:-1:-1;;;681:73:0;;;;;;;:::i;:::-;34185:37:::1;34214:7:::0;34185:24:::1;34201:7:::0;18497:16:::1;18442:2;18497;:16;:::i;34185:37::-;34173:9;:49:::0;34253:27:::1;34276:3;34253:18;34269:1;18497:16;18442:2;18497;:16;:::i;34253:27::-;34241:9;;:39;;34233:94;;;::::0;-1:-1:-1;;;34233:94:0;;15551:2:1;34233:94:0::1;::::0;::::1;15533:21:1::0;15590:2;15570:18;;;15563:30;15629:34;15609:18;;;15602:62;-1:-1:-1;;;15680:18:1;;;15673:40;15730:19;;34233:94:0::1;15349:406:1::0;34233:94:0::1;34081:254:::0;;:::o;31800:157::-;602:7;629:6;-1:-1:-1;;;;;629:6:0;215:10;689:23;681:73;;;;-1:-1:-1;;;681:73:0;;;;;;;:::i;:::-;31858:12:::1;629:6:::0;;31894:55:::1;::::0;-1:-1:-1;;;;;629:6:0;;;;31923:21:::1;::::0;31858:12;31894:55;31858:12;31894:55;31923:21;629:6;31894:55:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;31800:157:0:o;33098:159::-;602:7;629:6;-1:-1:-1;;;;;629:6:0;215:10;689:23;681:73;;;;-1:-1:-1;;;681:73:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;33170:14:0;::::1;;::::0;;;:5:::1;:14;::::0;;;;;::::1;;33169:15;33161:56;;;::::0;-1:-1:-1;;;33161:56:0;;16172:2:1;33161:56:0::1;::::0;::::1;16154:21:1::0;16211:2;16191:18;;;16184:30;16250;16230:18;;;16223:58;16298:18;;33161:56:0::1;15970:352:1::0;33161:56:0::1;-1:-1:-1::0;;;;;33228:14:0::1;;::::0;;;:5:::1;:14;::::0;;;;:21;;-1:-1:-1;;33228:21:0::1;33245:4;33228:21;::::0;;33098:159::o;2759:98::-;2817:7;2844:5;2848:1;2844;:5;:::i;:::-;2837:12;2759:98;-1:-1:-1;;;2759:98:0:o;2863:::-;2921:7;2948:5;2952:1;2948;:5;:::i;24948:3037::-;-1:-1:-1;;;;;25044:18:0;;25036:68;;;;-1:-1:-1;;;25036:68:0;;16529:2:1;25036:68:0;;;16511:21:1;16568:2;16548:18;;;16541:30;16607:34;16587:18;;;16580:62;-1:-1:-1;;;16658:18:1;;;16651:35;16703:19;;25036:68:0;16327:401:1;25036:68:0;-1:-1:-1;;;;;25123:16:0;;25115:64;;;;-1:-1:-1;;;25115:64:0;;16935:2:1;25115:64:0;;;16917:21:1;16974:2;16954:18;;;16947:30;17013:34;16993:18;;;16986:62;-1:-1:-1;;;17064:18:1;;;17057:33;17107:19;;25115:64:0;16733:399:1;25115:64:0;25207:1;25198:6;:10;25190:71;;;;-1:-1:-1;;;25190:71:0;;17339:2:1;25190:71:0;;;17321:21:1;17378:2;17358:18;;;17351:30;17417:34;17397:18;;;17390:62;-1:-1:-1;;;17468:18:1;;;17461:46;17524:19;;25190:71:0;17137:412:1;25190:71:0;-1:-1:-1;;;;;25281:11:0;;;;;;:5;:11;;;;;;;;25280:12;25272:57;;;;-1:-1:-1;;;25272:57:0;;17756:2:1;25272:57:0;;;17738:21:1;;;17775:18;;;17768:30;17834:34;17814:18;;;17807:62;17886:18;;25272:57:0;17554:356:1;25272:57:0;25344:4;;;;;;;25340:116;;-1:-1:-1;;;;;25372:19:0;;;;;;:13;:19;;;;;;;;;:40;;-1:-1:-1;;;;;;25395:17:0;;;;;;:13;:17;;;;;;;;25372:40;25364:80;;;;-1:-1:-1;;;25364:80:0;;18117:2:1;25364:80:0;;;18099:21:1;18156:2;18136:18;;;18129:30;18195:29;18175:18;;;18168:57;18242:18;;25364:80:0;17915:351:1;25364:80:0;25470:11;;;;;;;;:19;;:11;:19;:48;;;;-1:-1:-1;;;;;;25495:23:0;;;;;;:19;:23;;;;;;;;25493:25;25470:48;25466:178;;;25572:9;;25543:25;25561:6;25543:13;25553:2;25543:9;:13::i;:::-;:17;;:25::i;:::-;:38;;25535:97;;;;-1:-1:-1;;;25535:97:0;;18473:2:1;25535:97:0;;;18455:21:1;18512:2;18492:18;;;18485:30;18551:34;18531:18;;;18524:62;-1:-1:-1;;;18602:18:1;;;18595:44;18656:19;;25535:97:0;18271:410:1;25535:97:0;25657:8;;;;25654:350;;;602:7;629:6;-1:-1:-1;;;;;25685:15:0;;;629:6;;25685:15;;;;:32;;-1:-1:-1;602:7:0;629:6;-1:-1:-1;;;;;25704:13:0;;;629:6;;25704:13;;25685:32;:52;;;;-1:-1:-1;;;;;;25721:16:0;;;;25685:52;:66;;;;-1:-1:-1;25747:4:0;;-1:-1:-1;;;;;25741:10:0;;;25747:4;;25741:10;;25685:66;:85;;;;-1:-1:-1;25761:9:0;;-1:-1:-1;;;;;25755:15:0;;;25761:9;;25755:15;;25685:85;25681:312;;;25796:6;25791:187;25812:1;25808;:5;25791:187;;;25862:18;;:25;;25885:1;25862:22;:25::i;:::-;25846:12;:41;25843:116;;;-1:-1:-1;;;;;25916:12:0;;;;;;:8;:12;;;;;:19;;-1:-1:-1;;25916:19:0;25931:4;25916:19;;;25843:116;25815:3;;;;:::i;:::-;;;;25791:187;;;;25681:312;26017:15;;;;;;;26014:331;;;26076:14;26087:2;26076:10;:14::i;:::-;26075:15;:44;;;;-1:-1:-1;;;;;;26094:25:0;;;;;;:19;:25;;;;;;;;26075:44;:109;;;;26141:16;26152:4;26141:10;:16::i;:::-;26140:17;:44;;;;-1:-1:-1;;;;;;26161:23:0;;;;;;:19;:23;;;;;;;;26140:44;26075:174;;;;26206:16;26217:4;26206:10;:16::i;:::-;:43;;;;-1:-1:-1;;;;;;26226:23:0;;;;;;:19;:23;;;;;;;;26206:43;26075:239;;;;26271:14;26282:2;26271:10;:14::i;:::-;:43;;;;-1:-1:-1;;;;;;26289:25:0;;;;;;:19;:25;;;;;;;;26271:43;26049:284;;;;;;26355:25;26383:36;26403:15;;26383;;:19;;:36;;;;:::i;:::-;26355:64;;26430:28;26461:24;26479:4;26461:9;:24::i;:::-;26551:10;;26577:16;;26430:55;;-1:-1:-1;26527:34:0;;;;26577:16;;;;;26576:17;:41;;;;-1:-1:-1;26597:20:0;;;;;;;26576:41;:69;;;;-1:-1:-1;26631:9:0;;26644:1;;26621:20;;-1:-1:-1;;;;;26631:9:0;26621;:20::i;:::-;:24;26576:69;:94;;;;;26669:1;26649:17;:21;26576:94;:116;;;;-1:-1:-1;;;;;;26675:17:0;;;;;;:13;:17;;;;;;;;26674:18;26576:116;:140;;;;-1:-1:-1;;;;;;26697:19:0;;;;;;:13;:19;;;;;;;;26696:20;26576:140;:159;;;;-1:-1:-1;26726:9:0;;-1:-1:-1;;;;;26720:15:0;;;26726:9;;26720:15;26576:159;:186;;;;;26739:23;26576:186;26572:237;;;26779:14;:12;:14::i;:::-;-1:-1:-1;;;;;26823:19:0;;;;;;:13;:19;;;;;;;;;:40;;-1:-1:-1;;;;;;26846:17:0;;;;;;:13;:17;;;;;;;;26823:40;26819:1117;;;26895:1;26880:12;:16;;;26911:12;:16;;;26959:30;;26895:1;26959:16;:30::i;:::-;26942:14;:47;26819:1117;;;27034:9;;-1:-1:-1;;;;;27026:17:0;;;27034:9;;27026:17;27022:903;;;27079:15;;27064:12;:30;;;27128:15;;27113:12;:30;;;27179:36;;27079:15;27179:19;:36::i;27022:903::-;27246:9;;-1:-1:-1;;;;;27240:15:0;;;27246:9;;27240:15;27236:689;;;27291:16;;27276:12;:31;;;27341:16;;27326:12;:31;;;27393:38;;27291:16;27393:20;:38::i;:::-;27376:14;:55;-1:-1:-1;;;;;27453:14:0;;;;;;:8;:14;;;;;;;;:53;;;;;27491:15;27471:16;;:35;;27453:53;27450:226;;;27545:2;27530:12;:17;;;27585:1;27570:12;:16;;;27626:30;;27545:2;27626:16;:30::i;27450:226::-;27236:689;;;-1:-1:-1;;;;;27724:14:0;;;;;;:8;:14;;;;;;;;27723:15;;:54;;;27762:15;27742:16;;:35;;27723:54;27715:124;;;;-1:-1:-1;;;27715:124:0;;18888:2:1;27715:124:0;;;18870:21:1;18927:2;18907:18;;;18900:30;18966:34;18946:18;;;18939:62;19037:27;19017:18;;;19010:55;19082:19;;27715:124:0;18686:421:1;27715:124:0;27873:1;27858:12;:16;;;27893:12;:16;27236:689;27946:31;27960:4;27966:2;27970:6;27946:13;:31::i;:::-;25025:2960;;;24948:3037;;;:::o;3071:206::-;3157:7;3218:12;3210:6;;;;3202:29;;;;-1:-1:-1;;;3202:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;3253:5:0;;;3071:206::o;22363:353::-;-1:-1:-1;;;;;22462:19:0;;22454:72;;;;-1:-1:-1;;;22454:72:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22545:21:0;;22537:72;;;;-1:-1:-1;;;22537:72:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22620:22:0;;;;;;;:15;:22;;;;;;;;:31;;;;;;;;;;;;;:40;;;22676:32;;2448:25:1;;;22676:32:0;;2421:18:1;22676:32:0;;;;;;;;22363:353;;;:::o;2551:98::-;2609:7;2636:5;2640:1;2636;:5;:::i;29576:369::-;29697:11;;29658:65;;29682:4;;-1:-1:-1;;;;;29697:11:0;29711;29658:15;:65::i;:::-;29734:11;;29880:16;;29734:203;;-1:-1:-1;;;29734:203:0;;29802:4;29734:203;;;19594:34:1;19644:18;;;19637:34;;;29734:11:0;19687:18:1;;;19680:34;;;19730:18;;;19723:34;-1:-1:-1;;;;;29880:16:0;;;19773:19:1;;;19766:44;29911:15:0;19826:19:1;;;19819:35;29734:11:0;;;:27;;29769:9;;19528:19:1;;29734:203:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;29576:369;;:::o;27991:1106::-;19998:16;:23;;-1:-1:-1;;19998:23:0;;;;;;28073:24:::1;28091:4;28073:9;:24::i;:::-;28047:50;;28108:25;28136:36;28156:15;;28136;;:19;;:36;;;;:::i;:::-;28108:64;;28183:27;28213:22;28233:1;28213:15;;:19;;:22;;;;:::i;:::-;28183:52:::0;-1:-1:-1;28246:26:0::1;28275:40;:15:::0;28183:52;28275:19:::1;:40::i;:::-;28246:69:::0;-1:-1:-1;28354:21:0::1;28386:36;28246:69:::0;28386:16:::1;:36::i;:::-;28434:18;28455:44;:21;28481:17:::0;28455:25:::1;:44::i;:::-;28434:65;;28510:23;28536:54;28572:17;28536:31;28551:15;;28536:10;:14;;:31;;;;:::i;:54::-;28510:80:::0;-1:-1:-1;28601:23:0::1;28627:31;:10:::0;28510:80;28627:14:::1;:31::i;:::-;28687:1;28669:15;:19:::0;;;28699:15:::1;:19:::0;;;28755:16:::1;::::0;28747:58:::1;::::0;28601:57;;-1:-1:-1;28687:1:0;;-1:-1:-1;;;;;28755:16:0;;::::1;::::0;28785:15;;28687:1;28747:58;28687:1;28747:58;28785:15;28755:16;28747:58:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28729:76;;;28819:15;28838:1;28819:20;;:48;;;;-1:-1:-1::0;28843:24:0;;::::1;28819:48;28816:130;;;28884:50;28897:19;28918:15;28884:12;:50::i;:::-;28983:8;28959:21;:32;28956:134;;;29028:10;::::0;29020:58:::1;::::0;-1:-1:-1;;;;;29028:10:0;;::::1;::::0;29052:21:::1;::::0;29020:58:::1;::::0;;;29052:21;29028:10;29020:58:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;29007:71:0;;-1:-1:-1;;28956:134:0::1;-1:-1:-1::0;;20044:16:0;:24;;-1:-1:-1;;20044:24:0;;;-1:-1:-1;;;;;;;27991:1106:0:o;30324:673::-;30419:14;;:19;30416:574;;30454:17;30474:20;30487:6;30474:12;:20::i;:::-;30454:40;-1:-1:-1;30509:22:0;30534:21;:6;30454:40;30534:10;:21::i;:::-;30509:46;;30570:25;30585:9;30570:14;:25::i;:::-;-1:-1:-1;;;;;30610:20:0;;;;;;:12;:20;;;;;:30;;30634:6;;30610:20;:30;;30634:6;;30610:30;:::i;:::-;;;;-1:-1:-1;;;;;;;30655:23:0;;;;;;:12;:23;;;;;:41;;30682:14;;30655:23;:41;;30682:14;;30655:41;:::i;:::-;;;;-1:-1:-1;;30732:4:0;30711:27;;;;:12;:27;;;;;:40;;30742:9;;30711:27;:40;;30742:9;;30711:40;:::i;:::-;;;;;;;;30788:9;-1:-1:-1;;;;;30771:43:0;30780:6;-1:-1:-1;;;;;30771:43:0;;30799:14;30771:43;;;;2448:25:1;;2436:2;2421:18;;2302:177;30771:43:0;;;;;;;;30439:387;;23454:226:::1;23258:429:::0;;:::o;30416:574::-;-1:-1:-1;;;;;30845:20:0;;;;;;:12;:20;;;;;:30;;30869:6;;30845:20;:30;;30869:6;;30845:30;:::i;:::-;;;;-1:-1:-1;;;;;;;30890:23:0;;;;;;:12;:23;;;;;:33;;30917:6;;30890:23;:33;;30917:6;;30890:33;:::i;:::-;;;;;;;;30960:9;-1:-1:-1;;;;;30943:35:0;30952:6;-1:-1:-1;;;;;30943:35:0;;30971:6;30943:35;;;;2448:25:1;;2436:2;2421:18;;2302:177;2655:98:0;2713:7;2740:5;2744:1;2740;:5;:::i;29103:467::-;29194:16;;;29208:1;29194:16;;;;;;;;29170:21;;29194:16;;;;;;;;;;-1:-1:-1;29194:16:0;29170:40;;29239:4;29221;29226:1;29221:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;29221:23:0;;;:7;;;;;;;;;;:23;;;;29265:11;;:18;;;-1:-1:-1;;;29265:18:0;;;;:11;;;;;:16;;:18;;;;;29221:7;;29265:18;;;;;:11;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29255:4;29260:1;29255:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;29255:28:0;;;:7;;;;;;;;;:28;29333:11;;29294:65;;29318:4;;29333:11;29347;29294:15;:65::i;:::-;29370:11;;:192;;-1:-1:-1;;;29370:192:0;;-1:-1:-1;;;;;29370:11:0;;;;:62;;:192;;29447:11;;29370;;29489:4;;29516;;29536:15;;29370:192;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29951:147;30012:7;30039:51;30086:3;30039:42;30050:30;30067:12;;30050;;:16;;:30;;;;:::i;:::-;30039:6;;:10;:42::i;30104:214::-;30186:47;30218:14;;30186:27;30200:12;;30186:9;:13;;:27;;;;:::i;:47::-;30167:15;;:66;;;;;;;:::i;:::-;;;;-1:-1:-1;;30295:14:0;;30277:12;;30263:47;;30295:14;30263:27;;:9;;:13;:27::i;:47::-;30244:15;;:66;;;;;;;:::i;:::-;;;;-1:-1:-1;;;30104:214:0:o;14:597: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;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;595:2:1;574:15;-1:-1:-1;;570:29:1;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:1:o;616:131::-;-1:-1:-1;;;;;691:31:1;;681:42;;671:70;;737:1;734;727:12;752:315;820:6;828;881:2;869:9;860:7;856:23;852:32;849:52;;;897:1;894;887:12;849:52;936:9;923:23;955:31;980:5;955:31;:::i;:::-;1005:5;1057:2;1042:18;;;;1029:32;;-1:-1:-1;;;752:315:1:o;1264:385::-;1350:6;1358;1366;1374;1427:3;1415:9;1406:7;1402:23;1398:33;1395:53;;;1444:1;1441;1434:12;1395:53;-1:-1:-1;;1467:23:1;;;1537:2;1522:18;;1509:32;;-1:-1:-1;1588:2:1;1573:18;;1560:32;;1639:2;1624:18;1611:32;;-1:-1:-1;1264:385:1;-1:-1:-1;1264:385:1:o;1654:247::-;1713:6;1766:2;1754:9;1745:7;1741:23;1737:32;1734:52;;;1782:1;1779;1772:12;1734:52;1821:9;1808:23;1840:31;1865:5;1840:31;:::i;2484:160::-;2549:20;;2605:13;;2598:21;2588:32;;2578:60;;2634:1;2631;2624:12;2649:180;2705:6;2758:2;2746:9;2737:7;2733:23;2729:32;2726:52;;;2774:1;2771;2764:12;2726:52;2797:26;2813:9;2797:26;:::i;2834:456::-;2911:6;2919;2927;2980:2;2968:9;2959:7;2955:23;2951:32;2948:52;;;2996:1;2993;2986:12;2948:52;3035:9;3022:23;3054:31;3079:5;3054:31;:::i;:::-;3104:5;-1:-1:-1;3161:2:1;3146:18;;3133:32;3174:33;3133:32;3174:33;:::i;:::-;2834:456;;3226:7;;-1:-1:-1;;;3280:2:1;3265:18;;;;3252:32;;2834:456::o;3484:315::-;3549:6;3557;3610:2;3598:9;3589:7;3585:23;3581:32;3578:52;;;3626:1;3623;3616:12;3578:52;3665:9;3652:23;3684:31;3709:5;3684:31;:::i;:::-;3734:5;-1:-1:-1;3758:35:1;3789:2;3774:18;;3758:35;:::i;:::-;3748:45;;3484:315;;;;;:::o;3804:127::-;3865:10;3860:3;3856:20;3853:1;3846:31;3896:4;3893:1;3886:15;3920:4;3917:1;3910:15;3936:275;4007:2;4001:9;4072:2;4053:13;;-1:-1:-1;;4049:27:1;4037:40;;4107:18;4092:34;;4128:22;;;4089:62;4086:88;;;4154:18;;:::i;:::-;4190:2;4183:22;3936:275;;-1:-1:-1;3936:275:1:o;4216:183::-;4276:4;4309:18;4301:6;4298:30;4295:56;;;4331:18;;:::i;:::-;-1:-1:-1;4376:1:1;4372:14;4388:4;4368:25;;4216:183::o;4404:662::-;4458:5;4511:3;4504:4;4496:6;4492:17;4488:27;4478:55;;4529:1;4526;4519:12;4478:55;4565:6;4552:20;4591:4;4615:60;4631:43;4671:2;4631:43;:::i;:::-;4615:60;:::i;:::-;4709:15;;;4795:1;4791:10;;;;4779:23;;4775:32;;;4740:12;;;;4819:15;;;4816:35;;;4847:1;4844;4837:12;4816:35;4883:2;4875:6;4871:15;4895:142;4911:6;4906:3;4903:15;4895:142;;;4977:17;;4965:30;;5015:12;;;;4928;;4895:142;;;-1:-1:-1;5055:5:1;4404:662;-1:-1:-1;;;;;;4404:662:1:o;5071:1215::-;5189:6;5197;5250:2;5238:9;5229:7;5225:23;5221:32;5218:52;;;5266:1;5263;5256:12;5218:52;5306:9;5293:23;5335:18;5376:2;5368:6;5365:14;5362:34;;;5392:1;5389;5382:12;5362:34;5430:6;5419:9;5415:22;5405:32;;5475:7;5468:4;5464:2;5460:13;5456:27;5446:55;;5497:1;5494;5487:12;5446:55;5533:2;5520:16;5555:4;5579:60;5595:43;5635:2;5595:43;:::i;5579:60::-;5673:15;;;5755:1;5751:10;;;;5743:19;;5739:28;;;5704:12;;;;5779:19;;;5776:39;;;5811:1;5808;5801:12;5776:39;5835:11;;;;5855:217;5871:6;5866:3;5863:15;5855:217;;;5951:3;5938:17;5968:31;5993:5;5968:31;:::i;:::-;6012:18;;5888:12;;;;6050;;;;5855:217;;;6091:5;-1:-1:-1;;6134:18:1;;6121:32;;-1:-1:-1;;6165:16:1;;;6162:36;;;6194:1;6191;6184:12;6162:36;;6217:63;6272:7;6261:8;6250:9;6246:24;6217:63;:::i;:::-;6207:73;;;5071:1215;;;;;:::o;6291:180::-;6350:6;6403:2;6391:9;6382:7;6378:23;6374:32;6371:52;;;6419:1;6416;6409:12;6371:52;-1:-1:-1;6442:23:1;;6291:180;-1:-1:-1;6291:180:1:o;6919:388::-;6987:6;6995;7048:2;7036:9;7027:7;7023:23;7019:32;7016:52;;;7064:1;7061;7054:12;7016:52;7103:9;7090:23;7122:31;7147:5;7122:31;:::i;:::-;7172:5;-1:-1:-1;7229:2:1;7214:18;;7201:32;7242:33;7201:32;7242:33;:::i;:::-;7294:7;7284:17;;;6919:388;;;;;:::o;7312:248::-;7380:6;7388;7441:2;7429:9;7420:7;7416:23;7412:32;7409:52;;;7457:1;7454;7447:12;7409:52;-1:-1:-1;;7480:23:1;;;7550:2;7535:18;;;7522:32;;-1:-1:-1;7312:248:1:o;7565:404::-;7767:2;7749:21;;;7806:2;7786:18;;;7779:30;7845:34;7840:2;7825:18;;7818:62;-1:-1:-1;;;7911:2:1;7896:18;;7889:38;7959:3;7944:19;;7565:404::o;7974:402::-;8176:2;8158:21;;;8215:2;8195:18;;;8188:30;8254:34;8249:2;8234:18;;8227:62;-1:-1:-1;;;8320:2:1;8305:18;;8298:36;8366:3;8351:19;;7974:402::o;8381:401::-;8583:2;8565:21;;;8622:2;8602:18;;;8595:30;8661:34;8656:2;8641:18;;8634:62;-1:-1:-1;;;8727:2:1;8712:18;;8705:35;8772:3;8757:19;;8381:401::o;8787:127::-;8848:10;8843:3;8839:20;8836:1;8829:31;8879:4;8876:1;8869:15;8903:4;8900:1;8893:15;8919:422;9008:1;9051:5;9008:1;9065:270;9086:7;9076:8;9073:21;9065:270;;;9145:4;9141:1;9137:6;9133:17;9127:4;9124:27;9121:53;;;9154:18;;:::i;:::-;9204:7;9194:8;9190:22;9187:55;;;9224:16;;;;9187:55;9303:22;;;;9263:15;;;;9065:270;;;9069:3;8919:422;;;;;:::o;9346:806::-;9395:5;9425:8;9415:80;;-1:-1:-1;9466:1:1;9480:5;;9415:80;9514:4;9504:76;;-1:-1:-1;9551:1:1;9565:5;;9504:76;9596:4;9614:1;9609:59;;;;9682:1;9677:130;;;;9589:218;;9609:59;9639:1;9630:10;;9653:5;;;9677:130;9714:3;9704:8;9701:17;9698:43;;;9721:18;;:::i;:::-;-1:-1:-1;;9777:1:1;9763:16;;9792:5;;9589:218;;9891:2;9881:8;9878:16;9872:3;9866:4;9863:13;9859:36;9853:2;9843:8;9840:16;9835:2;9829:4;9826:12;9822:35;9819:77;9816:159;;;-1:-1:-1;9928:19:1;;;9960:5;;9816:159;10007:34;10032:8;10026:4;10007:34;:::i;:::-;10077:6;10073:1;10069:6;10065:19;10056:7;10053:32;10050:58;;;10088:18;;:::i;:::-;10126:20;;9346:806;-1:-1:-1;;;9346:806:1:o;10157:140::-;10215:5;10244:47;10285:4;10275:8;10271:19;10265:4;10244:47;:::i;10302:168::-;10342:7;10408:1;10404;10400:6;10396:14;10393:1;10390:21;10385:1;10378:9;10371:17;10367:45;10364:71;;;10415:18;;:::i;:::-;-1:-1:-1;10455:9:1;;10302:168::o;11188:251::-;11258:6;11311:2;11299:9;11290:7;11286:23;11282:32;11279:52;;;11327:1;11324;11317:12;11279:52;11359:9;11353:16;11378:31;11403:5;11378:31;:::i;12589:127::-;12650:10;12645:3;12641:20;12638:1;12631:31;12681:4;12678:1;12671:15;12705:4;12702:1;12695:15;12721:135;12760:3;-1:-1:-1;;12781:17:1;;12778:43;;;12801:18;;:::i;:::-;-1:-1:-1;12848:1:1;12837:13;;12721:135::o;12861:217::-;12901:1;12927;12917:132;;12971:10;12966:3;12962:20;12959:1;12952:31;13006:4;13003:1;12996:15;13034:4;13031:1;13024:15;12917:132;-1:-1:-1;13063:9:1;;12861:217::o;13855:184::-;13925:6;13978:2;13966:9;13957:7;13953:23;13949:32;13946:52;;;13994:1;13991;13984:12;13946:52;-1:-1:-1;14017:16:1;;13855:184;-1:-1:-1;13855:184:1:o;19112:128::-;19152:3;19183:1;19179:6;19176:1;19173:13;19170:39;;;19189:18;;:::i;:::-;-1:-1:-1;19225:9:1;;19112:128::o;19865:306::-;19953:6;19961;19969;20022:2;20010:9;20001:7;19997:23;19993:32;19990:52;;;20038:1;20035;20028:12;19990:52;20067:9;20061:16;20051:26;;20117:2;20106:9;20102:18;20096:25;20086:35;;20161:2;20150:9;20146:18;20140:25;20130:35;;19865:306;;;;;:::o;20176:125::-;20216:4;20244:1;20241;20238:8;20235:34;;;20249:18;;:::i;:::-;-1:-1:-1;20286:9:1;;20176:125::o;20306:980::-;20568:4;20616:3;20605:9;20601:19;20647:6;20636:9;20629:25;20673:2;20711:6;20706:2;20695:9;20691:18;20684:34;20754:3;20749:2;20738:9;20734:18;20727:31;20778:6;20813;20807:13;20844:6;20836;20829:22;20882:3;20871:9;20867:19;20860:26;;20921:2;20913:6;20909:15;20895:29;;20942:1;20952:195;20966:6;20963:1;20960:13;20952:195;;;21031:13;;-1:-1:-1;;;;;21027:39:1;21015:52;;21122:15;;;;21087:12;;;;21063:1;20981:9;20952:195;;;-1:-1:-1;;;;;;;21203:32:1;;;;21198:2;21183:18;;21176:60;-1:-1:-1;;;21267:3:1;21252:19;21245:35;21164:3;20306:980;-1:-1:-1;;;20306:980:1:o
Swarm Source
ipfs://caeb02664c36d66286cf8d91b3df982b8cc72e59ed941250cbb135ff519b7079
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.