ERC-20
Overview
Max Total Supply
1,001,103,100,000,000,000 pBUFF
Holders
104,284
Market
Price
$0.00 @ 0.000000 POL
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
5,000,000 pBUFFValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
Contract Name:
Buffalo
Compiler Version
v0.8.18+commit.87f61d96
Contract Source Code (Solidity)
/** *Submitted for verification at polygonscan.com on 2023-08-24 */ /** *Submitted for verification at BscScan.com on 2023-07-29 */ // SPDX-License-Identifier: NOLICENSE pragma solidity ^0.8.0; 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; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 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() { _setOwner(_msgSender()); } function owner() public view virtual returns (address) { return _owner; } modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { _setOwner(address(0)); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _setOwner(newOwner); } function _setOwner(address newOwner) private { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } interface IFactory{ function createPair(address tokenA, address tokenB) external returns (address pair); function getPair(address tokenA, address tokenB) external view returns (address pair); } interface IRouter { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); 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; } //"ETH" symb is used for better uniswap-core integration //uniswap is use due to their better repo management contract Buffalo is Context, IERC20, Ownable { using SafeMath for uint256; using Address for address; function mint(address account, uint256 amount) public onlyOwner { require(totalSupply().add(amount) <= _maxSupply, "Minting would exceed the max supply"); _tTotal = _tTotal.add(amount); _balances[account] = _balances[account].add(amount); emit Transfer(address(0), account, amount); } 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 => bool) private _isBot; mapping(address => uint256) private _balances; address[] private _excluded; bool public tradingEnabled; bool public swapEnabled; bool public buyBackEnabled = false; bool private swapping; IRouter public router; address public pair; uint8 private constant _decimals = 9; uint256 private constant MAX = ~uint256(0); uint256 private _tTotal = 100000000000 * 10**_decimals; uint256 private _maxSupply = 20000000000000000000000 * 10**_decimals; uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 public maxBuyAmount = _tTotal.mul(2).div(100); uint256 public maxSellAmount = _tTotal.mul(1).div(100); uint256 public swapTokensAtAmount = 5000000000 * 10**_decimals; uint256 public _maxWalletSize = 2000000000000 * 10**9; uint256 public buyBackUpperLimit = 1 * 10**18; address public marketingAddress = 0x9B3ebf0de5159A1E538a11785BF1C0450D539cE2; address public operationsAddress = 0x9B3ebf0de5159A1E538a11785BF1C0450D539cE2; address public constant deadAddress = 0x000000000000000000000000000000000000dEaD; string private constant _name = "pBuffalo Network"; string private constant _symbol = "pBUFF"; struct feeRatesStruct { uint256 rfi; uint256 operations; uint256 marketing; uint256 liquidity; uint256 buyback; } feeRatesStruct public feeRates = feeRatesStruct( {rfi: 1, operations: 0, marketing: 0, liquidity: 1, buyback: 1 }); feeRatesStruct public sellFeeRates = feeRatesStruct( {rfi: 20, operations: 30, marketing: 0, liquidity: 50, buyback: 50 }); struct TotFeesPaidStruct{ uint256 rfi; uint256 operations; uint256 marketing; uint256 liquidity; uint256 buyBack; } TotFeesPaidStruct public totFeesPaid; struct valuesFromGetValues{ uint256 rAmount; uint256 rTransferAmount; uint256 rRfi; uint256 rOperations; uint256 rMarketing; uint256 rLiquidity; uint256 rBuyback; uint256 tTransferAmount; uint256 tRfi; uint256 tOperations; uint256 tMarketing; uint256 tLiquidity; uint256 tBuyback; } event FeesChanged(); event TradingEnabled(uint256 startDate); event UpdatedRouter(address oldRouter, address newRouter); modifier lockTheSwap { swapping = true; _; swapping = false; } constructor (address routerAddress) { IRouter _router = IRouter(routerAddress); address _pair = IFactory(_router.factory()) .createPair(address(this), _router.WETH()); router = _router; pair = _pair; _rOwned[owner()] = _rTotal; _isExcludedFromFee[owner()] = true; _isExcludedFromFee[marketingAddress]=true; _isExcludedFromFee[operationsAddress] = true; emit Transfer(address(0), owner(), _tTotal); } //std ERC20: 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; } //override ERC20: 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 true; } 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 true; } 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 isExcludedFromReward(address account) public view returns (bool) { return _isExcluded[account]; } function deliver(uint256 tAmount) public { address sender = _msgSender(); require(!_isExcluded[sender], "Excluded addresses cannot call this function"); valuesFromGetValues memory s = _getValues(tAmount, true, false); _rOwned[sender] = _rOwned[sender].sub(s.rAmount); _rTotal = _rTotal.sub(s.rAmount); totFeesPaid.rfi += tAmount; } 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, false); return s.rAmount; } else { valuesFromGetValues memory s = _getValues(tAmount, true, false); return s.rTransferAmount; } } function startTrading() external onlyOwner{ tradingEnabled = true; swapEnabled = true; emit TradingEnabled(block.timestamp); } function tokenFromReflection(uint256 rAmount) public view returns(uint256) { require(rAmount <= _rTotal, "Amount must be less than total reflections"); uint256 currentRate = _getRate(); return rAmount/currentRate; } //@dev kept original RFI naming -> "reward" as in reflection 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 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 setMaxWalletPercent(uint256 maxWallPercent) external onlyOwner() { _maxWalletSize = _tTotal.mul(maxWallPercent).div( 10**2 ); } function setFeeRates(uint256 _rfi, uint256 _operations, uint256 _marketing, uint256 _liquidity, uint256 _buyback) external onlyOwner { feeRates.rfi = _rfi; feeRates.operations = _operations; feeRates.marketing = _marketing; feeRates.liquidity = _liquidity; feeRates.buyback = _buyback; emit FeesChanged(); } function setSellFeeRates(uint256 _rfi, uint256 _operations, uint256 _marketing, uint256 _liquidity, uint256 _buyback) external onlyOwner{ sellFeeRates.rfi = _rfi; sellFeeRates.operations = _operations; sellFeeRates.marketing = _marketing; sellFeeRates.liquidity = _liquidity; sellFeeRates.buyback = _buyback; emit FeesChanged(); } function _reflectRfi(uint256 rRfi, uint256 tRfi) private { _rTotal -=rRfi; totFeesPaid.rfi +=tRfi; } function _takeOperations(uint256 rOperations, uint256 tOperations) private { totFeesPaid.operations +=tOperations; if(_isExcluded[address(this)]){ _tOwned[address(this)]+=tOperations; } _rOwned[address(this)] +=rOperations; } function _takeBuyback(uint256 rBuyback, uint256 tBuyback) private { totFeesPaid.buyBack +=tBuyback; if(_isExcluded[address(this)]) { _tOwned[address(this)]+=tBuyback; } _rOwned[address(this)] +=rBuyback; } function _takeLiquidity(uint256 rLiquidity, uint256 tLiquidity) private { totFeesPaid.liquidity +=tLiquidity; if(_isExcluded[address(this)]) { _tOwned[address(this)]+=tLiquidity; } _rOwned[address(this)] +=rLiquidity; } function _takeMarketing(uint256 rMarketing, uint256 tMarketing) private { totFeesPaid.marketing +=tMarketing; if(_isExcluded[marketingAddress]) { _tOwned[marketingAddress]+=tMarketing; } _rOwned[marketingAddress] +=rMarketing; } function _getValues(uint256 tAmount, bool takeFee, bool isSale) private view returns (valuesFromGetValues memory to_return) { to_return = _getTValues(tAmount, takeFee, isSale); (to_return.rAmount, to_return.rTransferAmount, to_return.rRfi,to_return.rOperations, to_return.rMarketing, to_return.rLiquidity, to_return.rBuyback) = _getRValues(to_return, tAmount, takeFee, _getRate()); return to_return; } function _getTValues(uint256 tAmount, bool takeFee, bool isSale) private view returns (valuesFromGetValues memory s) { if(!takeFee) { s.tTransferAmount = tAmount; return s; } if(isSale){ s.tRfi = tAmount*sellFeeRates.rfi/1000; s.tOperations = tAmount*sellFeeRates.operations/1000; s.tMarketing = tAmount*sellFeeRates.marketing/1000; s.tLiquidity = tAmount*sellFeeRates.liquidity/1000; s.tBuyback = tAmount*sellFeeRates.buyback/1000; s.tTransferAmount = tAmount-s.tRfi-s.tOperations-s.tMarketing-s.tLiquidity-s.tBuyback; } else{ s.tRfi = tAmount*feeRates.rfi/1000; s.tOperations = tAmount*feeRates.operations/1000; s.tMarketing = tAmount*feeRates.marketing/1000; s.tLiquidity = tAmount*feeRates.liquidity/1000; s.tBuyback = tAmount*feeRates.buyback/1000; s.tTransferAmount = tAmount-s.tRfi-s.tOperations-s.tMarketing-s.tLiquidity-s.tBuyback; } return s; } function _getRValues(valuesFromGetValues memory s, uint256 tAmount, bool takeFee, uint256 currentRate) private pure returns (uint256 rAmount, uint256 rTransferAmount, uint256 rRfi, uint256 rOperations,uint256 rMarketing, uint256 rLiquidity, uint256 rBuyback) { rAmount = tAmount*currentRate; if(!takeFee) { return(rAmount, rAmount, 0,0,0,0,0); } rRfi = s.tRfi*currentRate; rOperations = s.tOperations*currentRate; rMarketing = s.tMarketing*currentRate; rLiquidity = s.tLiquidity*currentRate; rBuyback = s.tBuyback*currentRate; rTransferAmount = rAmount-rRfi-rOperations-rMarketing-rLiquidity-rBuyback; return (rAmount, rTransferAmount, rRfi,rOperations,rMarketing,rLiquidity, rBuyback); } 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 _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 your balance"); require(!_isBot[from] && !_isBot[to], "Fuck you Bots"); if(!_isExcludedFromFee[from] && !_isExcludedFromFee[to]){ require(tradingEnabled, "Trading is not enabled yet"); } if( from != owner() && to != owner() && to != address(0) && to != address(0xdead) && from == pair){ require(amount <= maxBuyAmount, "you are exceeding maxBuyAmount"); uint256 walletCurrentBalance = balanceOf(to); require(walletCurrentBalance + amount <= _maxWalletSize, "Exceeds maximum wallet token amount"); } if( from != owner() && to != owner() && to != address(0) && to != address(0xdead) && from == pair){ require(amount <= maxSellAmount, "Amount is exceeding maxSellAmount"); } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= swapTokensAtAmount; if(!swapping && swapEnabled && canSwap && from != pair){ uint256 balance = address(this).balance; if (buyBackEnabled && balance > uint256(1 * 10**18) && to == pair) { if (balance > buyBackUpperLimit) balance = buyBackUpperLimit; buyBackTokens(balance.div(100)); } swapAndLiquify(swapTokensAtAmount); } bool isSale; if(to == pair) isSale = true; _tokenTransfer(from, to, amount, !(_isExcludedFromFee[from] || _isExcludedFromFee[to]), isSale); } //this method is responsible for taking all fee, if takeFee is true function _tokenTransfer(address sender, address recipient, uint256 tAmount, bool takeFee, bool isSale) private { valuesFromGetValues memory s = _getValues(tAmount, takeFee, isSale); if (_isExcluded[sender] ) { //from excluded _tOwned[sender] = _tOwned[sender]-tAmount; } if (_isExcluded[recipient]) { //to excluded _tOwned[recipient] = _tOwned[recipient]+s.tTransferAmount; } _rOwned[sender] = _rOwned[sender]-s.rAmount; _rOwned[recipient] = _rOwned[recipient]+s.rTransferAmount; _reflectRfi(s.rRfi, s.tRfi); _takeOperations(s.rOperations,s.tOperations); _takeLiquidity(s.rLiquidity,s.tLiquidity); _takeMarketing(s.rMarketing, s.tMarketing); _takeBuyback(s.rBuyback, s.tBuyback); emit Transfer(sender, recipient, s.tTransferAmount); emit Transfer(sender, address(this), s.tLiquidity + s.tOperations + s.tBuyback); emit Transfer(sender, marketingAddress, s.tMarketing); } function buyBackTokens(uint256 amount) private lockTheSwap{ if (amount > 0) { swapETHForTokens(amount); } } function swapETHForTokens(uint256 amount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = router.WETH(); path[1] = address(this); // make the swap router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}( 0, // accept any amount of Tokens path, deadAddress, // Burn address block.timestamp.add(300) ); } function swapAndLiquify(uint256 tokens) private lockTheSwap{ // Split the contract balance into halves uint256 denominator= (feeRates.liquidity + feeRates.buyback + feeRates.operations) * 2; uint256 tokensToAddLiquidityWith = tokens * feeRates.liquidity / denominator; uint256 toSwap = tokens - tokensToAddLiquidityWith; uint256 initialBalance = address(this).balance; swapTokensForBNB(toSwap); uint256 deltaBalance = address(this).balance - initialBalance; uint256 unitBalance= deltaBalance / (denominator - feeRates.liquidity); uint256 bnbToAddLiquidityWith = unitBalance * feeRates.liquidity; if(bnbToAddLiquidityWith > 0){ // Add liquidity to pancake addLiquidity(tokensToAddLiquidityWith, bnbToAddLiquidityWith); } // Send BNB to operationsWallet uint256 operationsAmt = unitBalance * 2 * feeRates.operations; if(operationsAmt > 0){ payable(operationsAddress).transfer(operationsAmt); } } function addLiquidity(uint256 tokenAmount, uint256 bnbAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(router), tokenAmount); // add the liquidity router.addLiquidityETH{value: bnbAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable owner(), block.timestamp ); } function swapTokensForBNB(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = router.WETH(); _approve(address(this), address(router), tokenAmount); // make the swap router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function updateMarketingWallet(address newWallet) external onlyOwner{ require(marketingAddress != newWallet ,'Wallet already set'); marketingAddress = newWallet; _isExcludedFromFee[marketingAddress]; } function updateOperationsWallet(address newWallet) external onlyOwner{ require(operationsAddress != newWallet ,'Wallet already set'); operationsAddress = newWallet; _isExcludedFromFee[operationsAddress]; } function setMaxBuyAndSellAmount(uint256 _maxBuyamount, uint256 _maxSellAmount) external onlyOwner{ maxBuyAmount = _maxBuyamount * 10**9; maxSellAmount = _maxSellAmount * 10**9; } function updateSwapTokensAtAmount(uint256 amount) external onlyOwner{ swapTokensAtAmount = amount * 10**_decimals; } function updateSwapEnabled(bool _enabled) external onlyOwner{ swapEnabled = _enabled; } function updateBuybackEnabled(bool _enabled) external onlyOwner{ buyBackEnabled = _enabled; } function setAntibot(address account, bool _bot) external onlyOwner{ require(_isBot[account] != _bot, 'Value already set'); _isBot[account] = _bot; } function setBuybackUpperLimit(uint256 buyBackLimit) external onlyOwner() { buyBackUpperLimit = buyBackLimit * 10**15; } function isBot(address account) public view returns(bool){ return _isBot[account]; } //Use this in case BNB are sent to the contract by mistake function rescueBNB(uint256 weiAmount) external onlyOwner{ require(address(this).balance >= weiAmount, "insufficient BNB balance"); payable(msg.sender).transfer(weiAmount); } function rescueBEP20Tokens(address tokenAddress) external onlyOwner{ IERC20(tokenAddress).transfer(msg.sender, IERC20(tokenAddress).balanceOf(address(this))); } /// @dev Update router address in case of pancakeswap migration function setRouterAddress(address newRouter) external onlyOwner { require(newRouter != address(router)); IRouter _newRouter = IRouter(newRouter); address get_pair = IFactory(_newRouter.factory()).getPair(address(this), _newRouter.WETH()); if (get_pair == address(0)) { pair = IFactory(_newRouter.factory()).createPair(address(this), _newRouter.WETH()); } else { pair = get_pair; } router = _newRouter; } receive() external payable{ } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"routerAddress","type":"address"}],"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":[],"name":"FeesChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"startDate","type":"uint256"}],"name":"TradingEnabled","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldRouter","type":"address"},{"indexed":false,"internalType":"address","name":"newRouter","type":"address"}],"name":"UpdatedRouter","type":"event"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyBackEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyBackUpperLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"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":"uint256","name":"tAmount","type":"uint256"}],"name":"deliver","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":[],"name":"feeRates","outputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"operations","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"buyback","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":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"operationsAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","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":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"}],"name":"rescueBEP20Tokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"rescueBNB","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellFeeRates","outputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"operations","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"buyback","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"_bot","type":"bool"}],"name":"setAntibot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buyBackLimit","type":"uint256"}],"name":"setBuybackUpperLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rfi","type":"uint256"},{"internalType":"uint256","name":"_operations","type":"uint256"},{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_buyback","type":"uint256"}],"name":"setFeeRates","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxBuyamount","type":"uint256"},{"internalType":"uint256","name":"_maxSellAmount","type":"uint256"}],"name":"setMaxBuyAndSellAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent","type":"uint256"}],"name":"setMaxWalletPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"}],"name":"setRouterAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rfi","type":"uint256"},{"internalType":"uint256","name":"_operations","type":"uint256"},{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_buyback","type":"uint256"}],"name":"setSellFeeRates","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","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":"operations","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"buyBack","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"bool","name":"_enabled","type":"bool"}],"name":"updateBuybackEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateOperationsWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526009805462ff0000191681556200001d90600a62000626565b6200002e9064174876e80062000637565b600b556200003f6009600a62000626565b620000559069043c33c193756480000062000637565b600c55600b54620000699060001962000667565b62000077906000196200067e565b600d55620000b160646200009d6002600b546200049e60201b62001e4d1790919060201c565b620004b560201b62001e591790919060201c565b600e55620000d760646200009d6001600b546200049e60201b62001e4d1790919060201c565b600f55620000e86009600a62000626565b620000f99064012a05f20062000637565b601055686c6b935b8bbd400000601155670de0b6b3a764000060125560138054739b3ebf0de5159a1e538a11785bf1c0450d539ce26001600160a01b031991821681179092556014805490911690911781556040805160a0808201835260018083526000602080850182905284860182905260608086018490526080958601849052601584905560168390556017839055601884905560199390935585519384018652868452601e908401819052948301819052603291830182905291909201829052601a93909355601b829055601c92909255601d82905555348015620001e057600080fd5b506040516200415438038062004154833981016040819052620002039162000694565b6200020e33620004c3565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000254573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200027a919062000694565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002c8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ee919062000694565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156200033c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000362919062000694565b60098054600160201b600160c01b0319166401000000006001600160a01b038681169190910291909117909155600a80546001600160a01b031916838316179055600d54600080549092168252600160208190526040832091909155919250600490620003d76000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055601354821681526004909352818320805485166001908117909155601454909116835291208054909216179055620004456000546001600160a01b031690565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600b546040516200048d91815260200190565b60405180910390a3505050620006dd565b6000620004ac828462000637565b90505b92915050565b6000620004ac8284620006c6565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200056a5781600019048211156200054e576200054e62000513565b808516156200055c57918102915b93841c93908002906200052e565b509250929050565b6000826200058357506001620004af565b816200059257506000620004af565b8160018114620005ab5760028114620005b657620005d6565b6001915050620004af565b60ff841115620005ca57620005ca62000513565b50506001821b620004af565b5060208310610133831016604e8410600b8410161715620005fb575081810a620004af565b62000607838362000529565b80600019048211156200061e576200061e62000513565b029392505050565b6000620004ac60ff84168362000572565b8082028115828204841417620004af57620004af62000513565b634e487b7160e01b600052601260045260246000fd5b60008262000679576200067962000651565b500690565b81810381811115620004af57620004af62000513565b600060208284031215620006a757600080fd5b81516001600160a01b0381168114620006bf57600080fd5b9392505050565b600082620006d857620006d862000651565b500490565b613a6780620006ed6000396000f3fe60806040526004361061036f5760003560e01c806370e50241116101c6578063a8aa1b31116100f7578063e116554511610095578063ea4cfe121161006f578063ea4cfe1214610aac578063f2fde38b14610acc578063f887ea4014610aec578063f9e0896914610b1357600080fd5b8063e116554514610a56578063e2f4560514610a76578063ea2f0b3714610a8c57600080fd5b8063abeef102116100d1578063abeef102146109b0578063cdebfea3146109d0578063d257b34f146109f0578063dd62ed3e14610a1057600080fd5b8063a8aa1b3114610950578063a9059cbb14610970578063aacebbe31461099057600080fd5b80638da5cb5b1161016457806395d89b411161013e57806395d89b41146108bb5780639ba5e4d5146108e9578063a457c2d714610910578063a5ece9411461093057600080fd5b80638da5cb5b146108675780638f9a55c014610885578063924de9b71461089b57600080fd5b806382bf293c116101a057806382bf293c146107d857806382d2a4bb146107f857806388e765ff1461081857806388f820201461082e57600080fd5b806370e5024114610786578063715018a61461079c5780637688c584146107b157600080fd5b80633bd5d173116102a057806352390c021161023e57806366d602ae1161021857806366d602ae1461071157806368ca6145146107275780636ddd17131461074757806370a082311461076657600080fd5b806352390c02146106985780635342acb4146106b85780636053a0e3146106f157600080fd5b8063437823ec1161027a578063437823ec1461061e578063441b1d301461063e5780634549b0391461065e5780634ada218b1461067e57600080fd5b80633bd5d173146105be57806340c10f19146105de57806341cb87fc146105fe57600080fd5b8063293230b81161030d578063313ce567116102e7578063313ce567146105295780633685d4191461054557806339509351146105655780633bbac5791461058557600080fd5b8063293230b8146104d45780632d838119146104e957806330d5d18d1461050957600080fd5b806318160ddd1161034957806318160ddd1461041857806318a90c441461043757806323b872dd1461048657806327c8f835146104a657600080fd5b8063042cfb511461037b57806306fdde031461039d578063095ea7b3146103e857600080fd5b3661037657005b600080fd5b34801561038757600080fd5b5061039b6103963660046134a7565b610b33565b005b3480156103a957600080fd5b5060408051808201909152601081526f7042756666616c6f204e6574776f726b60801b60208201525b6040516103df91906134c4565b60405180910390f35b3480156103f457600080fd5b50610408610403366004613512565b610c4b565b60405190151581526020016103df565b34801561042457600080fd5b50600b545b6040519081526020016103df565b34801561044357600080fd5b50601a54601b54601c54601d54601e5461045e949392919085565b604080519586526020860194909452928401919091526060830152608082015260a0016103df565b34801561049257600080fd5b506104086104a136600461353e565b610c62565b3480156104b257600080fd5b506104bc61dead81565b6040516001600160a01b0390911681526020016103df565b3480156104e057600080fd5b5061039b610ccc565b3480156104f557600080fd5b5061042961050436600461357f565b610d3a565b34801561051557600080fd5b5061039b6105243660046134a7565b610db7565b34801561053557600080fd5b50604051600981526020016103df565b34801561055157600080fd5b5061039b6105603660046134a7565b610e5c565b34801561057157600080fd5b50610408610580366004613512565b61100e565b34801561059157600080fd5b506104086105a03660046134a7565b6001600160a01b031660009081526006602052604090205460ff1690565b3480156105ca57600080fd5b5061039b6105d936600461357f565b611045565b3480156105ea57600080fd5b5061039b6105f9366004613512565b61113a565b34801561060a57600080fd5b5061039b6106193660046134a7565b611252565b34801561062a57600080fd5b5061039b6106393660046134a7565b6115ab565b34801561064a57600080fd5b5061039b61065936600461357f565b6115f9565b34801561066a57600080fd5b506104296106793660046135a6565b6116a0565b34801561068a57600080fd5b506009546104089060ff1681565b3480156106a457600080fd5b5061039b6106b33660046134a7565b61172e565b3480156106c457600080fd5b506104086106d33660046134a7565b6001600160a01b031660009081526004602052604090205460ff1690565b3480156106fd57600080fd5b506009546104089062010000900460ff1681565b34801561071d57600080fd5b50610429600f5481565b34801561073357600080fd5b5061039b6107423660046135d6565b611881565b34801561075357600080fd5b5060095461040890610100900460ff1681565b34801561077257600080fd5b506104296107813660046134a7565b6118f4565b34801561079257600080fd5b5061042960125481565b3480156107a857600080fd5b5061039b611953565b3480156107bd57600080fd5b5060155460165460175460185460195461045e949392919085565b3480156107e457600080fd5b5061039b6107f336600461357f565b611989565b34801561080457600080fd5b5061039b61081336600461357f565b6119d9565b34801561082457600080fd5b50610429600e5481565b34801561083a57600080fd5b506104086108493660046134a7565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561087357600080fd5b506000546001600160a01b03166104bc565b34801561089157600080fd5b5061042960115481565b3480156108a757600080fd5b5061039b6108b6366004613611565b611a1a565b3480156108c757600080fd5b5060408051808201909152600581526438212aa32360d91b60208201526103d2565b3480156108f557600080fd5b50601f5460205460215460225460235461045e949392919085565b34801561091c57600080fd5b5061040861092b366004613512565b611a5e565b34801561093c57600080fd5b506013546104bc906001600160a01b031681565b34801561095c57600080fd5b50600a546104bc906001600160a01b031681565b34801561097c57600080fd5b5061040861098b366004613512565b611aad565b34801561099c57600080fd5b5061039b6109ab3660046134a7565b611aba565b3480156109bc57600080fd5b5061039b6109cb3660046135d6565b611b5f565b3480156109dc57600080fd5b5061039b6109eb36600461362e565b611bd2565b3480156109fc57600080fd5b5061039b610a0b36600461357f565b611c22565b348015610a1c57600080fd5b50610429610a2b366004613650565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b348015610a6257600080fd5b5061039b610a7136600461367e565b611c68565b348015610a8257600080fd5b5061042960105481565b348015610a9857600080fd5b5061039b610aa73660046134a7565b611d21565b348015610ab857600080fd5b506014546104bc906001600160a01b031681565b348015610ad857600080fd5b5061039b610ae73660046134a7565b611d6c565b348015610af857600080fd5b506009546104bc90600160201b90046001600160a01b031681565b348015610b1f57600080fd5b5061039b610b2e366004613611565b611e07565b6000546001600160a01b03163314610b665760405162461bcd60e51b8152600401610b5d906136ac565b60405180910390fd5b6040516370a0823160e01b81523060048201526001600160a01b0382169063a9059cbb90339083906370a0823190602401602060405180830381865afa158015610bb4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bd891906136e1565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015610c23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c4791906136fa565b5050565b6000610c58338484611e65565b5060015b92915050565b6000610c6f848484611f89565b610cc18433610cbc856040518060600160405280602881526020016139c5602891396001600160a01b038a166000908152600360209081526040808320338452909152902054919061258a565b611e65565b5060015b9392505050565b6000546001600160a01b03163314610cf65760405162461bcd60e51b8152600401610b5d906136ac565b6009805461ffff19166101011790556040514281527fb3da2db3dfc3778f99852546c6e9ab39ec253f9de7b0847afec61bd27878e9239060200160405180910390a1565b6000600d54821115610da15760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610b5d565b6000610dab6125b6565b9050610cc5818461372d565b6000546001600160a01b03163314610de15760405162461bcd60e51b8152600401610b5d906136ac565b6014546001600160a01b03808316911603610e335760405162461bcd60e51b815260206004820152601260248201527115d85b1b195d08185b1c9958591e481cd95d60721b6044820152606401610b5d565b601480546001600160a01b039092166001600160a01b0319909216821790556000526004602052565b6000546001600160a01b03163314610e865760405162461bcd60e51b8152600401610b5d906136ac565b6001600160a01b03811660009081526005602052604090205460ff16610eee5760405162461bcd60e51b815260206004820152601760248201527f4163636f756e74206973206e6f74206578636c756465640000000000000000006044820152606401610b5d565b60005b600854811015610c4757816001600160a01b031660088281548110610f1857610f1861374f565b6000918252602090912001546001600160a01b031603610ffc5760088054610f4290600190613765565b81548110610f5257610f5261374f565b600091825260209091200154600880546001600160a01b039092169183908110610f7e57610f7e61374f565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600282526040808220829055600590925220805460ff191690556008805480610fd657610fd6613778565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b806110068161378e565b915050610ef1565b3360008181526003602090815260408083206001600160a01b03871684529091528120549091610c58918590610cbc9086906137a7565b3360008181526005602052604090205460ff16156110ba5760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b6064820152608401610b5d565b60006110c983600160006125d9565b80516001600160a01b0384166000908152600160205260409020549192506110f19190612628565b6001600160a01b0383166000908152600160205260409020558051600d5461111891612628565b600d55601f80548491906000906111309084906137a7565b9091555050505050565b6000546001600160a01b031633146111645760405162461bcd60e51b8152600401610b5d906136ac565b600c5461117a82611174600b5490565b90612634565b11156111d45760405162461bcd60e51b815260206004820152602360248201527f4d696e74696e6720776f756c642065786365656420746865206d617820737570604482015262706c7960e81b6064820152608401610b5d565b600b546111e19082612634565b600b556001600160a01b0382166000908152600760205260409020546112079082612634565b6001600160a01b0383166000818152600760205260408082209390935591519091906000805160206139ed833981519152906112469085815260200190565b60405180910390a35050565b6000546001600160a01b0316331461127c5760405162461bcd60e51b8152600401610b5d906136ac565b6009546001600160a01b03600160201b90910481169082160361129e57600080fd5b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112e3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061130791906137ba565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611354573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061137891906137ba565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa1580156113c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113e791906137ba565b90506001600160a01b03811661156057816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611435573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061145991906137ba565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114ca91906137ba565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015611517573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061153b91906137ba565b600a80546001600160a01b0319166001600160a01b039290921691909117905561157c565b600a80546001600160a01b0319166001600160a01b0383161790555b50600980546001600160a01b03909216600160201b02640100000000600160c01b031990921691909117905550565b6000546001600160a01b031633146115d55760405162461bcd60e51b8152600401610b5d906136ac565b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b6000546001600160a01b031633146116235760405162461bcd60e51b8152600401610b5d906136ac565b804710156116735760405162461bcd60e51b815260206004820152601860248201527f696e73756666696369656e7420424e422062616c616e636500000000000000006044820152606401610b5d565b604051339082156108fc029083906000818181858888f19350505050158015610c47573d6000803e3d6000fd5b6000600b548311156116f45760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610b5d565b8161171257600061170884600160006125d9565b519150610c5c9050565b600061172184600160006125d9565b602001519150610c5c9050565b6000546001600160a01b031633146117585760405162461bcd60e51b8152600401610b5d906136ac565b6001600160a01b03811660009081526005602052604090205460ff16156117c15760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610b5d565b6001600160a01b0381166000908152600160205260409020541561181b576001600160a01b03811660009081526001602052604090205461180190610d3a565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600560205260408120805460ff191660019081179091556008805491820181559091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b0319169091179055565b6000546001600160a01b031633146118ab5760405162461bcd60e51b8152600401610b5d906136ac565b601585905560168490556017839055601882905560198190556040517f846206d6c3449ac0b05841dfb88bf28b55aef00f96152490c69c96238048de1590600090a15050505050565b6001600160a01b03811660009081526005602052604081205460ff161561193157506001600160a01b031660009081526002602052604090205490565b6001600160a01b038216600090815260016020526040902054610c5c90610d3a565b6000546001600160a01b0316331461197d5760405162461bcd60e51b8152600401610b5d906136ac565b6119876000612640565b565b6000546001600160a01b031633146119b35760405162461bcd60e51b8152600401610b5d906136ac565b6119d360646119cd83600b54611e4d90919063ffffffff16565b90611e59565b60115550565b6000546001600160a01b03163314611a035760405162461bcd60e51b8152600401610b5d906136ac565b611a148166038d7ea4c680006137d7565b60125550565b6000546001600160a01b03163314611a445760405162461bcd60e51b8152600401610b5d906136ac565b600980549115156101000261ff0019909216919091179055565b6000610c583384610cbc85604051806060016040528060258152602001613a0d602591393360009081526003602090815260408083206001600160a01b038d168452909152902054919061258a565b6000610c58338484611f89565b6000546001600160a01b03163314611ae45760405162461bcd60e51b8152600401610b5d906136ac565b6013546001600160a01b03808316911603611b365760405162461bcd60e51b815260206004820152601260248201527115d85b1b195d08185b1c9958591e481cd95d60721b6044820152606401610b5d565b601380546001600160a01b039092166001600160a01b0319909216821790556000526004602052565b6000546001600160a01b03163314611b895760405162461bcd60e51b8152600401610b5d906136ac565b601a859055601b849055601c839055601d829055601e8190556040517f846206d6c3449ac0b05841dfb88bf28b55aef00f96152490c69c96238048de1590600090a15050505050565b6000546001600160a01b03163314611bfc5760405162461bcd60e51b8152600401610b5d906136ac565b611c0a82633b9aca006137d7565b600e55611c1b81633b9aca006137d7565b600f555050565b6000546001600160a01b03163314611c4c5760405162461bcd60e51b8152600401610b5d906136ac565b611c586009600a6138d2565b611c6290826137d7565b60105550565b6000546001600160a01b03163314611c925760405162461bcd60e51b8152600401610b5d906136ac565b6001600160a01b03821660009081526006602052604090205481151560ff909116151503611cf65760405162461bcd60e51b815260206004820152601160248201527015985b1d5948185b1c9958591e481cd95d607a1b6044820152606401610b5d565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314611d4b5760405162461bcd60e51b8152600401610b5d906136ac565b6001600160a01b03166000908152600460205260409020805460ff19169055565b6000546001600160a01b03163314611d965760405162461bcd60e51b8152600401610b5d906136ac565b6001600160a01b038116611dfb5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b5d565b611e0481612640565b50565b6000546001600160a01b03163314611e315760405162461bcd60e51b8152600401610b5d906136ac565b60098054911515620100000262ff000019909216919091179055565b6000610cc582846137d7565b6000610cc5828461372d565b6001600160a01b038316611ec75760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610b5d565b6001600160a01b038216611f285760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610b5d565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611fed5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610b5d565b6001600160a01b03821661204f5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610b5d565b600081116120b15760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610b5d565b6120ba836118f4565b8111156121235760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b6064820152608401610b5d565b6001600160a01b03831660009081526006602052604090205460ff1615801561216557506001600160a01b03821660009081526006602052604090205460ff16155b6121a15760405162461bcd60e51b815260206004820152600d60248201526c4675636b20796f7520426f747360981b6044820152606401610b5d565b6001600160a01b03831660009081526004602052604090205460ff161580156121e357506001600160a01b03821660009081526004602052604090205460ff16155b1561223a5760095460ff1661223a5760405162461bcd60e51b815260206004820152601a60248201527f54726164696e67206973206e6f7420656e61626c6564207965740000000000006044820152606401610b5d565b6000546001600160a01b0384811691161480159061226657506000546001600160a01b03838116911614155b801561227a57506001600160a01b03821615155b801561229157506001600160a01b03821661dead14155b80156122aa5750600a546001600160a01b038481169116145b1561237857600e548111156123015760405162461bcd60e51b815260206004820152601e60248201527f796f752061726520657863656564696e67206d6178427579416d6f756e7400006044820152606401610b5d565b600061230c836118f4565b60115490915061231c83836137a7565b11156123765760405162461bcd60e51b815260206004820152602360248201527f45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f6044820152621d5b9d60ea1b6064820152608401610b5d565b505b6000546001600160a01b038481169116148015906123a457506000546001600160a01b03838116911614155b80156123b857506001600160a01b03821615155b80156123cf57506001600160a01b03821661dead14155b80156123e85750600a546001600160a01b038481169116145b1561244957600f548111156124495760405162461bcd60e51b815260206004820152602160248201527f416d6f756e7420697320657863656564696e67206d617853656c6c416d6f756e6044820152601d60fa1b6064820152608401610b5d565b6000612454306118f4565b601054600954919250821015906301000000900460ff1615801561247f5750600954610100900460ff165b80156124885750805b80156124a25750600a546001600160a01b03868116911614155b1561251557600954479062010000900460ff1680156124c85750670de0b6b3a764000081115b80156124e15750600a546001600160a01b038681169116145b15612508576012548111156124f557506012545b612508612503826064611e59565b612690565b6125136010546126c2565b505b600a546000906001600160a01b0390811690861603612532575060015b6001600160a01b0386166000908152600460205260409020546125829087908790879060ff168061257b57506001600160a01b03891660009081526004602052604090205460ff165b15856127ff565b505050505050565b600081848411156125ae5760405162461bcd60e51b8152600401610b5d91906134c4565b505050900390565b60008060006125c3612a84565b90925090506125d2818361372d565b9250505090565b6125e161342a565b6125ec848484612c07565b90506126018185856125fc6125b6565b612e1e565b60c088015260a0870152608086015260608501526040840152602083015281529392505050565b6000610cc58284613765565b6000610cc582846137a7565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6009805463ff0000001916630100000017905580156126b2576126b281612ef4565b506009805463ff00000019169055565b6009805463ff00000019166301000000179055601654601954601854600092916126eb916137a7565b6126f591906137a7565b6127009060026137d7565b90506000816015600301548461271691906137d7565b612720919061372d565b9050600061272e8285613765565b90504761273a82613061565b60006127468247613765565b6018549091506000906127599087613765565b612763908361372d565b60185490915060009061277690836137d7565b905080156127885761278886826131da565b6016546000906127998460026137d7565b6127a391906137d7565b905080156127e7576014546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156127e5573d6000803e3d6000fd5b505b50506009805463ff0000001916905550505050505050565b600061280c8484846125d9565b6001600160a01b03871660009081526005602052604090205490915060ff161561286e576001600160a01b038616600090815260026020526040902054612854908590613765565b6001600160a01b0387166000908152600260205260409020555b6001600160a01b03851660009081526005602052604090205460ff16156128d15760e08101516001600160a01b0386166000908152600260205260409020546128b791906137a7565b6001600160a01b0386166000908152600260205260409020555b80516001600160a01b0387166000908152600160205260409020546128f69190613765565b6001600160a01b038088166000908152600160209081526040808320949094558401519188168152919091205461292d91906137a7565b6001600160a01b038616600090815260016020526040908190209190915581015161010082015161295e91906132be565b61297181606001518261012001516132f3565b6129848160a00151826101600151613369565b612997816080015182610140015161337e565b6129aa8160c00151826101800151613415565b846001600160a01b0316866001600160a01b03166000805160206139ed8339815191528360e001516040516129e191815260200190565b60405180910390a3306001600160a01b0316866001600160a01b03166000805160206139ed833981519152836101800151846101200151856101600151612a2891906137a7565b612a3291906137a7565b60405190815260200160405180910390a36013546101408201516040519081526001600160a01b03918216918816906000805160206139ed8339815191529060200160405180910390a3505050505050565b600d54600b546000918291825b600854811015612bd657826001600060088481548110612ab357612ab361374f565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180612b1e5750816002600060088481548110612af757612af761374f565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15612b3457600d54600b54945094505050509091565b6001600060088381548110612b4b57612b4b61374f565b60009182526020808320909101546001600160a01b03168352820192909252604001902054612b7a9084613765565b92506002600060088381548110612b9357612b9361374f565b60009182526020808320909101546001600160a01b03168352820192909252604001902054612bc29083613765565b915080612bce8161378e565b915050612a91565b50600b54600d54612be7919061372d565b821015612bfe57600d54600b549350935050509091565b90939092509050565b612c0f61342a565b82612c205760e08101849052610cc5565b8115612d2157601a546103e890612c3790866137d7565b612c41919061372d565b610100820152601b546103e890612c5890866137d7565b612c62919061372d565b610120820152601c546103e890612c7990866137d7565b612c83919061372d565b610140820152601d546103e890612c9a90866137d7565b612ca4919061372d565b610160820152601e546103e890612cbb90866137d7565b612cc5919061372d565b6101808201819052610160820151610140830151610120840151610100850151612cef9089613765565b612cf99190613765565b612d039190613765565b612d0d9190613765565b612d179190613765565b60e0820152610cc5565b6015546103e890612d3290866137d7565b612d3c919061372d565b6101008201526016546103e890612d5390866137d7565b612d5d919061372d565b6101208201526017546103e890612d7490866137d7565b612d7e919061372d565b6101408201526018546103e890612d9590866137d7565b612d9f919061372d565b6101608201526019546103e890612db690866137d7565b612dc0919061372d565b6101808201819052610160820151610140830151610120840151610100850151612dea9089613765565b612df49190613765565b612dfe9190613765565b612e089190613765565b612e129190613765565b60e08201529392505050565b6000808080808080612e30888b6137d7565b965088612e4e57508594506000935083925082915081905080612ee6565b878b6101000151612e5f91906137d7565b9450878b6101200151612e7291906137d7565b9350878b6101400151612e8591906137d7565b9250878b6101600151612e9891906137d7565b9150878b6101800151612eab91906137d7565b905080828486612ebb898c613765565b612ec59190613765565b612ecf9190613765565b612ed99190613765565b612ee39190613765565b95505b949950949992975094509450565b604080516002808252606082018352600092602083019080368337019050509050600960049054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612f68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f8c91906137ba565b81600081518110612f9f57612f9f61374f565b60200260200101906001600160a01b031690816001600160a01b0316815250503081600181518110612fd357612fd361374f565b6001600160a01b039283166020918202929092010152600954600160201b90041663b6f9de958360008461dead61300c4261012c612634565b6040518663ffffffff1660e01b815260040161302b9493929190613925565b6000604051808303818588803b15801561304457600080fd5b505af1158015613058573d6000803e3d6000fd5b50505050505050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106130965761309661374f565b60200260200101906001600160a01b031690816001600160a01b031681525050600960049054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613109573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061312d91906137ba565b816001815181106131405761314061374f565b6001600160a01b03928316602091820292909201015260095461316d913091600160201b90041684611e65565b60095460405163791ac94760e01b8152600160201b9091046001600160a01b03169063791ac947906131ac90859060009086903090429060040161395a565b600060405180830381600087803b1580156131c657600080fd5b505af1158015612582573d6000803e3d6000fd5b6009546131f9903090600160201b90046001600160a01b031684611e65565b6009546001600160a01b03600160201b9091041663f305d71982308560008061322a6000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015613292573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906132b79190613996565b5050505050565b81600d60008282546132d09190613765565b9091555050601f80548291906000906132ea9084906137a7565b90915550505050565b80601f600101600082825461330891906137a7565b90915550503060009081526005602052604090205460ff161561334a5730600090815260026020526040812080548392906133449084906137a7565b90915550505b30600090815260016020526040812080548492906132ea9084906137a7565b80601f600301600082825461330891906137a7565b80601f600201600082825461339391906137a7565b90915550506013546001600160a01b031660009081526005602052604090205460ff16156133eb576013546001600160a01b0316600090815260026020526040812080548392906133e59084906137a7565b90915550505b6013546001600160a01b0316600090815260016020526040812080548492906132ea9084906137a7565b80601f600401600082825461330891906137a7565b604051806101a00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6001600160a01b0381168114611e0457600080fd5b6000602082840312156134b957600080fd5b8135610cc581613492565b600060208083528351808285015260005b818110156134f1578581018301518582016040015282016134d5565b506000604082860101526040601f19601f8301168501019250505092915050565b6000806040838503121561352557600080fd5b823561353081613492565b946020939093013593505050565b60008060006060848603121561355357600080fd5b833561355e81613492565b9250602084013561356e81613492565b929592945050506040919091013590565b60006020828403121561359157600080fd5b5035919050565b8015158114611e0457600080fd5b600080604083850312156135b957600080fd5b8235915060208301356135cb81613598565b809150509250929050565b600080600080600060a086880312156135ee57600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b60006020828403121561362357600080fd5b8135610cc581613598565b6000806040838503121561364157600080fd5b50508035926020909101359150565b6000806040838503121561366357600080fd5b823561366e81613492565b915060208301356135cb81613492565b6000806040838503121561369157600080fd5b823561369c81613492565b915060208301356135cb81613598565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6000602082840312156136f357600080fd5b5051919050565b60006020828403121561370c57600080fd5b8151610cc581613598565b634e487b7160e01b600052601160045260246000fd5b60008261374a57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b81810381811115610c5c57610c5c613717565b634e487b7160e01b600052603160045260246000fd5b6000600182016137a0576137a0613717565b5060010190565b80820180821115610c5c57610c5c613717565b6000602082840312156137cc57600080fd5b8151610cc581613492565b8082028115828204841417610c5c57610c5c613717565b600181815b8085111561382957816000190482111561380f5761380f613717565b8085161561381c57918102915b93841c93908002906137f3565b509250929050565b60008261384057506001610c5c565b8161384d57506000610c5c565b8160018114613863576002811461386d57613889565b6001915050610c5c565b60ff84111561387e5761387e613717565b50506001821b610c5c565b5060208310610133831016604e8410600b84101617156138ac575081810a610c5c565b6138b683836137ee565b80600019048211156138ca576138ca613717565b029392505050565b6000610cc560ff841683613831565b600081518084526020808501945080840160005b8381101561391a5781516001600160a01b0316875295820195908201906001016138f5565b509495945050505050565b84815260806020820152600061393e60808301866138e1565b6001600160a01b03949094166040830152506060015292915050565b85815284602082015260a06040820152600061397960a08301866138e1565b6001600160a01b0394909416606083015250608001529392505050565b6000806000606084860312156139ab57600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122051e0f8cbd4149614e5e3bd4baec2db2516561bd84e3ed60d490da270432bbe4864736f6c63430008120033000000000000000000000000a5e0829caced8ffdd4de3c43696c57f7d7a678ff
Deployed Bytecode
0x60806040526004361061036f5760003560e01c806370e50241116101c6578063a8aa1b31116100f7578063e116554511610095578063ea4cfe121161006f578063ea4cfe1214610aac578063f2fde38b14610acc578063f887ea4014610aec578063f9e0896914610b1357600080fd5b8063e116554514610a56578063e2f4560514610a76578063ea2f0b3714610a8c57600080fd5b8063abeef102116100d1578063abeef102146109b0578063cdebfea3146109d0578063d257b34f146109f0578063dd62ed3e14610a1057600080fd5b8063a8aa1b3114610950578063a9059cbb14610970578063aacebbe31461099057600080fd5b80638da5cb5b1161016457806395d89b411161013e57806395d89b41146108bb5780639ba5e4d5146108e9578063a457c2d714610910578063a5ece9411461093057600080fd5b80638da5cb5b146108675780638f9a55c014610885578063924de9b71461089b57600080fd5b806382bf293c116101a057806382bf293c146107d857806382d2a4bb146107f857806388e765ff1461081857806388f820201461082e57600080fd5b806370e5024114610786578063715018a61461079c5780637688c584146107b157600080fd5b80633bd5d173116102a057806352390c021161023e57806366d602ae1161021857806366d602ae1461071157806368ca6145146107275780636ddd17131461074757806370a082311461076657600080fd5b806352390c02146106985780635342acb4146106b85780636053a0e3146106f157600080fd5b8063437823ec1161027a578063437823ec1461061e578063441b1d301461063e5780634549b0391461065e5780634ada218b1461067e57600080fd5b80633bd5d173146105be57806340c10f19146105de57806341cb87fc146105fe57600080fd5b8063293230b81161030d578063313ce567116102e7578063313ce567146105295780633685d4191461054557806339509351146105655780633bbac5791461058557600080fd5b8063293230b8146104d45780632d838119146104e957806330d5d18d1461050957600080fd5b806318160ddd1161034957806318160ddd1461041857806318a90c441461043757806323b872dd1461048657806327c8f835146104a657600080fd5b8063042cfb511461037b57806306fdde031461039d578063095ea7b3146103e857600080fd5b3661037657005b600080fd5b34801561038757600080fd5b5061039b6103963660046134a7565b610b33565b005b3480156103a957600080fd5b5060408051808201909152601081526f7042756666616c6f204e6574776f726b60801b60208201525b6040516103df91906134c4565b60405180910390f35b3480156103f457600080fd5b50610408610403366004613512565b610c4b565b60405190151581526020016103df565b34801561042457600080fd5b50600b545b6040519081526020016103df565b34801561044357600080fd5b50601a54601b54601c54601d54601e5461045e949392919085565b604080519586526020860194909452928401919091526060830152608082015260a0016103df565b34801561049257600080fd5b506104086104a136600461353e565b610c62565b3480156104b257600080fd5b506104bc61dead81565b6040516001600160a01b0390911681526020016103df565b3480156104e057600080fd5b5061039b610ccc565b3480156104f557600080fd5b5061042961050436600461357f565b610d3a565b34801561051557600080fd5b5061039b6105243660046134a7565b610db7565b34801561053557600080fd5b50604051600981526020016103df565b34801561055157600080fd5b5061039b6105603660046134a7565b610e5c565b34801561057157600080fd5b50610408610580366004613512565b61100e565b34801561059157600080fd5b506104086105a03660046134a7565b6001600160a01b031660009081526006602052604090205460ff1690565b3480156105ca57600080fd5b5061039b6105d936600461357f565b611045565b3480156105ea57600080fd5b5061039b6105f9366004613512565b61113a565b34801561060a57600080fd5b5061039b6106193660046134a7565b611252565b34801561062a57600080fd5b5061039b6106393660046134a7565b6115ab565b34801561064a57600080fd5b5061039b61065936600461357f565b6115f9565b34801561066a57600080fd5b506104296106793660046135a6565b6116a0565b34801561068a57600080fd5b506009546104089060ff1681565b3480156106a457600080fd5b5061039b6106b33660046134a7565b61172e565b3480156106c457600080fd5b506104086106d33660046134a7565b6001600160a01b031660009081526004602052604090205460ff1690565b3480156106fd57600080fd5b506009546104089062010000900460ff1681565b34801561071d57600080fd5b50610429600f5481565b34801561073357600080fd5b5061039b6107423660046135d6565b611881565b34801561075357600080fd5b5060095461040890610100900460ff1681565b34801561077257600080fd5b506104296107813660046134a7565b6118f4565b34801561079257600080fd5b5061042960125481565b3480156107a857600080fd5b5061039b611953565b3480156107bd57600080fd5b5060155460165460175460185460195461045e949392919085565b3480156107e457600080fd5b5061039b6107f336600461357f565b611989565b34801561080457600080fd5b5061039b61081336600461357f565b6119d9565b34801561082457600080fd5b50610429600e5481565b34801561083a57600080fd5b506104086108493660046134a7565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561087357600080fd5b506000546001600160a01b03166104bc565b34801561089157600080fd5b5061042960115481565b3480156108a757600080fd5b5061039b6108b6366004613611565b611a1a565b3480156108c757600080fd5b5060408051808201909152600581526438212aa32360d91b60208201526103d2565b3480156108f557600080fd5b50601f5460205460215460225460235461045e949392919085565b34801561091c57600080fd5b5061040861092b366004613512565b611a5e565b34801561093c57600080fd5b506013546104bc906001600160a01b031681565b34801561095c57600080fd5b50600a546104bc906001600160a01b031681565b34801561097c57600080fd5b5061040861098b366004613512565b611aad565b34801561099c57600080fd5b5061039b6109ab3660046134a7565b611aba565b3480156109bc57600080fd5b5061039b6109cb3660046135d6565b611b5f565b3480156109dc57600080fd5b5061039b6109eb36600461362e565b611bd2565b3480156109fc57600080fd5b5061039b610a0b36600461357f565b611c22565b348015610a1c57600080fd5b50610429610a2b366004613650565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b348015610a6257600080fd5b5061039b610a7136600461367e565b611c68565b348015610a8257600080fd5b5061042960105481565b348015610a9857600080fd5b5061039b610aa73660046134a7565b611d21565b348015610ab857600080fd5b506014546104bc906001600160a01b031681565b348015610ad857600080fd5b5061039b610ae73660046134a7565b611d6c565b348015610af857600080fd5b506009546104bc90600160201b90046001600160a01b031681565b348015610b1f57600080fd5b5061039b610b2e366004613611565b611e07565b6000546001600160a01b03163314610b665760405162461bcd60e51b8152600401610b5d906136ac565b60405180910390fd5b6040516370a0823160e01b81523060048201526001600160a01b0382169063a9059cbb90339083906370a0823190602401602060405180830381865afa158015610bb4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bd891906136e1565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015610c23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c4791906136fa565b5050565b6000610c58338484611e65565b5060015b92915050565b6000610c6f848484611f89565b610cc18433610cbc856040518060600160405280602881526020016139c5602891396001600160a01b038a166000908152600360209081526040808320338452909152902054919061258a565b611e65565b5060015b9392505050565b6000546001600160a01b03163314610cf65760405162461bcd60e51b8152600401610b5d906136ac565b6009805461ffff19166101011790556040514281527fb3da2db3dfc3778f99852546c6e9ab39ec253f9de7b0847afec61bd27878e9239060200160405180910390a1565b6000600d54821115610da15760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610b5d565b6000610dab6125b6565b9050610cc5818461372d565b6000546001600160a01b03163314610de15760405162461bcd60e51b8152600401610b5d906136ac565b6014546001600160a01b03808316911603610e335760405162461bcd60e51b815260206004820152601260248201527115d85b1b195d08185b1c9958591e481cd95d60721b6044820152606401610b5d565b601480546001600160a01b039092166001600160a01b0319909216821790556000526004602052565b6000546001600160a01b03163314610e865760405162461bcd60e51b8152600401610b5d906136ac565b6001600160a01b03811660009081526005602052604090205460ff16610eee5760405162461bcd60e51b815260206004820152601760248201527f4163636f756e74206973206e6f74206578636c756465640000000000000000006044820152606401610b5d565b60005b600854811015610c4757816001600160a01b031660088281548110610f1857610f1861374f565b6000918252602090912001546001600160a01b031603610ffc5760088054610f4290600190613765565b81548110610f5257610f5261374f565b600091825260209091200154600880546001600160a01b039092169183908110610f7e57610f7e61374f565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600282526040808220829055600590925220805460ff191690556008805480610fd657610fd6613778565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b806110068161378e565b915050610ef1565b3360008181526003602090815260408083206001600160a01b03871684529091528120549091610c58918590610cbc9086906137a7565b3360008181526005602052604090205460ff16156110ba5760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b6064820152608401610b5d565b60006110c983600160006125d9565b80516001600160a01b0384166000908152600160205260409020549192506110f19190612628565b6001600160a01b0383166000908152600160205260409020558051600d5461111891612628565b600d55601f80548491906000906111309084906137a7565b9091555050505050565b6000546001600160a01b031633146111645760405162461bcd60e51b8152600401610b5d906136ac565b600c5461117a82611174600b5490565b90612634565b11156111d45760405162461bcd60e51b815260206004820152602360248201527f4d696e74696e6720776f756c642065786365656420746865206d617820737570604482015262706c7960e81b6064820152608401610b5d565b600b546111e19082612634565b600b556001600160a01b0382166000908152600760205260409020546112079082612634565b6001600160a01b0383166000818152600760205260408082209390935591519091906000805160206139ed833981519152906112469085815260200190565b60405180910390a35050565b6000546001600160a01b0316331461127c5760405162461bcd60e51b8152600401610b5d906136ac565b6009546001600160a01b03600160201b90910481169082160361129e57600080fd5b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112e3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061130791906137ba565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611354573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061137891906137ba565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa1580156113c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113e791906137ba565b90506001600160a01b03811661156057816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611435573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061145991906137ba565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114ca91906137ba565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015611517573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061153b91906137ba565b600a80546001600160a01b0319166001600160a01b039290921691909117905561157c565b600a80546001600160a01b0319166001600160a01b0383161790555b50600980546001600160a01b03909216600160201b02640100000000600160c01b031990921691909117905550565b6000546001600160a01b031633146115d55760405162461bcd60e51b8152600401610b5d906136ac565b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b6000546001600160a01b031633146116235760405162461bcd60e51b8152600401610b5d906136ac565b804710156116735760405162461bcd60e51b815260206004820152601860248201527f696e73756666696369656e7420424e422062616c616e636500000000000000006044820152606401610b5d565b604051339082156108fc029083906000818181858888f19350505050158015610c47573d6000803e3d6000fd5b6000600b548311156116f45760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610b5d565b8161171257600061170884600160006125d9565b519150610c5c9050565b600061172184600160006125d9565b602001519150610c5c9050565b6000546001600160a01b031633146117585760405162461bcd60e51b8152600401610b5d906136ac565b6001600160a01b03811660009081526005602052604090205460ff16156117c15760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610b5d565b6001600160a01b0381166000908152600160205260409020541561181b576001600160a01b03811660009081526001602052604090205461180190610d3a565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600560205260408120805460ff191660019081179091556008805491820181559091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b0319169091179055565b6000546001600160a01b031633146118ab5760405162461bcd60e51b8152600401610b5d906136ac565b601585905560168490556017839055601882905560198190556040517f846206d6c3449ac0b05841dfb88bf28b55aef00f96152490c69c96238048de1590600090a15050505050565b6001600160a01b03811660009081526005602052604081205460ff161561193157506001600160a01b031660009081526002602052604090205490565b6001600160a01b038216600090815260016020526040902054610c5c90610d3a565b6000546001600160a01b0316331461197d5760405162461bcd60e51b8152600401610b5d906136ac565b6119876000612640565b565b6000546001600160a01b031633146119b35760405162461bcd60e51b8152600401610b5d906136ac565b6119d360646119cd83600b54611e4d90919063ffffffff16565b90611e59565b60115550565b6000546001600160a01b03163314611a035760405162461bcd60e51b8152600401610b5d906136ac565b611a148166038d7ea4c680006137d7565b60125550565b6000546001600160a01b03163314611a445760405162461bcd60e51b8152600401610b5d906136ac565b600980549115156101000261ff0019909216919091179055565b6000610c583384610cbc85604051806060016040528060258152602001613a0d602591393360009081526003602090815260408083206001600160a01b038d168452909152902054919061258a565b6000610c58338484611f89565b6000546001600160a01b03163314611ae45760405162461bcd60e51b8152600401610b5d906136ac565b6013546001600160a01b03808316911603611b365760405162461bcd60e51b815260206004820152601260248201527115d85b1b195d08185b1c9958591e481cd95d60721b6044820152606401610b5d565b601380546001600160a01b039092166001600160a01b0319909216821790556000526004602052565b6000546001600160a01b03163314611b895760405162461bcd60e51b8152600401610b5d906136ac565b601a859055601b849055601c839055601d829055601e8190556040517f846206d6c3449ac0b05841dfb88bf28b55aef00f96152490c69c96238048de1590600090a15050505050565b6000546001600160a01b03163314611bfc5760405162461bcd60e51b8152600401610b5d906136ac565b611c0a82633b9aca006137d7565b600e55611c1b81633b9aca006137d7565b600f555050565b6000546001600160a01b03163314611c4c5760405162461bcd60e51b8152600401610b5d906136ac565b611c586009600a6138d2565b611c6290826137d7565b60105550565b6000546001600160a01b03163314611c925760405162461bcd60e51b8152600401610b5d906136ac565b6001600160a01b03821660009081526006602052604090205481151560ff909116151503611cf65760405162461bcd60e51b815260206004820152601160248201527015985b1d5948185b1c9958591e481cd95d607a1b6044820152606401610b5d565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314611d4b5760405162461bcd60e51b8152600401610b5d906136ac565b6001600160a01b03166000908152600460205260409020805460ff19169055565b6000546001600160a01b03163314611d965760405162461bcd60e51b8152600401610b5d906136ac565b6001600160a01b038116611dfb5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b5d565b611e0481612640565b50565b6000546001600160a01b03163314611e315760405162461bcd60e51b8152600401610b5d906136ac565b60098054911515620100000262ff000019909216919091179055565b6000610cc582846137d7565b6000610cc5828461372d565b6001600160a01b038316611ec75760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610b5d565b6001600160a01b038216611f285760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610b5d565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611fed5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610b5d565b6001600160a01b03821661204f5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610b5d565b600081116120b15760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610b5d565b6120ba836118f4565b8111156121235760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b6064820152608401610b5d565b6001600160a01b03831660009081526006602052604090205460ff1615801561216557506001600160a01b03821660009081526006602052604090205460ff16155b6121a15760405162461bcd60e51b815260206004820152600d60248201526c4675636b20796f7520426f747360981b6044820152606401610b5d565b6001600160a01b03831660009081526004602052604090205460ff161580156121e357506001600160a01b03821660009081526004602052604090205460ff16155b1561223a5760095460ff1661223a5760405162461bcd60e51b815260206004820152601a60248201527f54726164696e67206973206e6f7420656e61626c6564207965740000000000006044820152606401610b5d565b6000546001600160a01b0384811691161480159061226657506000546001600160a01b03838116911614155b801561227a57506001600160a01b03821615155b801561229157506001600160a01b03821661dead14155b80156122aa5750600a546001600160a01b038481169116145b1561237857600e548111156123015760405162461bcd60e51b815260206004820152601e60248201527f796f752061726520657863656564696e67206d6178427579416d6f756e7400006044820152606401610b5d565b600061230c836118f4565b60115490915061231c83836137a7565b11156123765760405162461bcd60e51b815260206004820152602360248201527f45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f6044820152621d5b9d60ea1b6064820152608401610b5d565b505b6000546001600160a01b038481169116148015906123a457506000546001600160a01b03838116911614155b80156123b857506001600160a01b03821615155b80156123cf57506001600160a01b03821661dead14155b80156123e85750600a546001600160a01b038481169116145b1561244957600f548111156124495760405162461bcd60e51b815260206004820152602160248201527f416d6f756e7420697320657863656564696e67206d617853656c6c416d6f756e6044820152601d60fa1b6064820152608401610b5d565b6000612454306118f4565b601054600954919250821015906301000000900460ff1615801561247f5750600954610100900460ff165b80156124885750805b80156124a25750600a546001600160a01b03868116911614155b1561251557600954479062010000900460ff1680156124c85750670de0b6b3a764000081115b80156124e15750600a546001600160a01b038681169116145b15612508576012548111156124f557506012545b612508612503826064611e59565b612690565b6125136010546126c2565b505b600a546000906001600160a01b0390811690861603612532575060015b6001600160a01b0386166000908152600460205260409020546125829087908790879060ff168061257b57506001600160a01b03891660009081526004602052604090205460ff165b15856127ff565b505050505050565b600081848411156125ae5760405162461bcd60e51b8152600401610b5d91906134c4565b505050900390565b60008060006125c3612a84565b90925090506125d2818361372d565b9250505090565b6125e161342a565b6125ec848484612c07565b90506126018185856125fc6125b6565b612e1e565b60c088015260a0870152608086015260608501526040840152602083015281529392505050565b6000610cc58284613765565b6000610cc582846137a7565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6009805463ff0000001916630100000017905580156126b2576126b281612ef4565b506009805463ff00000019169055565b6009805463ff00000019166301000000179055601654601954601854600092916126eb916137a7565b6126f591906137a7565b6127009060026137d7565b90506000816015600301548461271691906137d7565b612720919061372d565b9050600061272e8285613765565b90504761273a82613061565b60006127468247613765565b6018549091506000906127599087613765565b612763908361372d565b60185490915060009061277690836137d7565b905080156127885761278886826131da565b6016546000906127998460026137d7565b6127a391906137d7565b905080156127e7576014546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156127e5573d6000803e3d6000fd5b505b50506009805463ff0000001916905550505050505050565b600061280c8484846125d9565b6001600160a01b03871660009081526005602052604090205490915060ff161561286e576001600160a01b038616600090815260026020526040902054612854908590613765565b6001600160a01b0387166000908152600260205260409020555b6001600160a01b03851660009081526005602052604090205460ff16156128d15760e08101516001600160a01b0386166000908152600260205260409020546128b791906137a7565b6001600160a01b0386166000908152600260205260409020555b80516001600160a01b0387166000908152600160205260409020546128f69190613765565b6001600160a01b038088166000908152600160209081526040808320949094558401519188168152919091205461292d91906137a7565b6001600160a01b038616600090815260016020526040908190209190915581015161010082015161295e91906132be565b61297181606001518261012001516132f3565b6129848160a00151826101600151613369565b612997816080015182610140015161337e565b6129aa8160c00151826101800151613415565b846001600160a01b0316866001600160a01b03166000805160206139ed8339815191528360e001516040516129e191815260200190565b60405180910390a3306001600160a01b0316866001600160a01b03166000805160206139ed833981519152836101800151846101200151856101600151612a2891906137a7565b612a3291906137a7565b60405190815260200160405180910390a36013546101408201516040519081526001600160a01b03918216918816906000805160206139ed8339815191529060200160405180910390a3505050505050565b600d54600b546000918291825b600854811015612bd657826001600060088481548110612ab357612ab361374f565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180612b1e5750816002600060088481548110612af757612af761374f565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15612b3457600d54600b54945094505050509091565b6001600060088381548110612b4b57612b4b61374f565b60009182526020808320909101546001600160a01b03168352820192909252604001902054612b7a9084613765565b92506002600060088381548110612b9357612b9361374f565b60009182526020808320909101546001600160a01b03168352820192909252604001902054612bc29083613765565b915080612bce8161378e565b915050612a91565b50600b54600d54612be7919061372d565b821015612bfe57600d54600b549350935050509091565b90939092509050565b612c0f61342a565b82612c205760e08101849052610cc5565b8115612d2157601a546103e890612c3790866137d7565b612c41919061372d565b610100820152601b546103e890612c5890866137d7565b612c62919061372d565b610120820152601c546103e890612c7990866137d7565b612c83919061372d565b610140820152601d546103e890612c9a90866137d7565b612ca4919061372d565b610160820152601e546103e890612cbb90866137d7565b612cc5919061372d565b6101808201819052610160820151610140830151610120840151610100850151612cef9089613765565b612cf99190613765565b612d039190613765565b612d0d9190613765565b612d179190613765565b60e0820152610cc5565b6015546103e890612d3290866137d7565b612d3c919061372d565b6101008201526016546103e890612d5390866137d7565b612d5d919061372d565b6101208201526017546103e890612d7490866137d7565b612d7e919061372d565b6101408201526018546103e890612d9590866137d7565b612d9f919061372d565b6101608201526019546103e890612db690866137d7565b612dc0919061372d565b6101808201819052610160820151610140830151610120840151610100850151612dea9089613765565b612df49190613765565b612dfe9190613765565b612e089190613765565b612e129190613765565b60e08201529392505050565b6000808080808080612e30888b6137d7565b965088612e4e57508594506000935083925082915081905080612ee6565b878b6101000151612e5f91906137d7565b9450878b6101200151612e7291906137d7565b9350878b6101400151612e8591906137d7565b9250878b6101600151612e9891906137d7565b9150878b6101800151612eab91906137d7565b905080828486612ebb898c613765565b612ec59190613765565b612ecf9190613765565b612ed99190613765565b612ee39190613765565b95505b949950949992975094509450565b604080516002808252606082018352600092602083019080368337019050509050600960049054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612f68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f8c91906137ba565b81600081518110612f9f57612f9f61374f565b60200260200101906001600160a01b031690816001600160a01b0316815250503081600181518110612fd357612fd361374f565b6001600160a01b039283166020918202929092010152600954600160201b90041663b6f9de958360008461dead61300c4261012c612634565b6040518663ffffffff1660e01b815260040161302b9493929190613925565b6000604051808303818588803b15801561304457600080fd5b505af1158015613058573d6000803e3d6000fd5b50505050505050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106130965761309661374f565b60200260200101906001600160a01b031690816001600160a01b031681525050600960049054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613109573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061312d91906137ba565b816001815181106131405761314061374f565b6001600160a01b03928316602091820292909201015260095461316d913091600160201b90041684611e65565b60095460405163791ac94760e01b8152600160201b9091046001600160a01b03169063791ac947906131ac90859060009086903090429060040161395a565b600060405180830381600087803b1580156131c657600080fd5b505af1158015612582573d6000803e3d6000fd5b6009546131f9903090600160201b90046001600160a01b031684611e65565b6009546001600160a01b03600160201b9091041663f305d71982308560008061322a6000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015613292573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906132b79190613996565b5050505050565b81600d60008282546132d09190613765565b9091555050601f80548291906000906132ea9084906137a7565b90915550505050565b80601f600101600082825461330891906137a7565b90915550503060009081526005602052604090205460ff161561334a5730600090815260026020526040812080548392906133449084906137a7565b90915550505b30600090815260016020526040812080548492906132ea9084906137a7565b80601f600301600082825461330891906137a7565b80601f600201600082825461339391906137a7565b90915550506013546001600160a01b031660009081526005602052604090205460ff16156133eb576013546001600160a01b0316600090815260026020526040812080548392906133e59084906137a7565b90915550505b6013546001600160a01b0316600090815260016020526040812080548492906132ea9084906137a7565b80601f600401600082825461330891906137a7565b604051806101a00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6001600160a01b0381168114611e0457600080fd5b6000602082840312156134b957600080fd5b8135610cc581613492565b600060208083528351808285015260005b818110156134f1578581018301518582016040015282016134d5565b506000604082860101526040601f19601f8301168501019250505092915050565b6000806040838503121561352557600080fd5b823561353081613492565b946020939093013593505050565b60008060006060848603121561355357600080fd5b833561355e81613492565b9250602084013561356e81613492565b929592945050506040919091013590565b60006020828403121561359157600080fd5b5035919050565b8015158114611e0457600080fd5b600080604083850312156135b957600080fd5b8235915060208301356135cb81613598565b809150509250929050565b600080600080600060a086880312156135ee57600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b60006020828403121561362357600080fd5b8135610cc581613598565b6000806040838503121561364157600080fd5b50508035926020909101359150565b6000806040838503121561366357600080fd5b823561366e81613492565b915060208301356135cb81613492565b6000806040838503121561369157600080fd5b823561369c81613492565b915060208301356135cb81613598565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6000602082840312156136f357600080fd5b5051919050565b60006020828403121561370c57600080fd5b8151610cc581613598565b634e487b7160e01b600052601160045260246000fd5b60008261374a57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b81810381811115610c5c57610c5c613717565b634e487b7160e01b600052603160045260246000fd5b6000600182016137a0576137a0613717565b5060010190565b80820180821115610c5c57610c5c613717565b6000602082840312156137cc57600080fd5b8151610cc581613492565b8082028115828204841417610c5c57610c5c613717565b600181815b8085111561382957816000190482111561380f5761380f613717565b8085161561381c57918102915b93841c93908002906137f3565b509250929050565b60008261384057506001610c5c565b8161384d57506000610c5c565b8160018114613863576002811461386d57613889565b6001915050610c5c565b60ff84111561387e5761387e613717565b50506001821b610c5c565b5060208310610133831016604e8410600b84101617156138ac575081810a610c5c565b6138b683836137ee565b80600019048211156138ca576138ca613717565b029392505050565b6000610cc560ff841683613831565b600081518084526020808501945080840160005b8381101561391a5781516001600160a01b0316875295820195908201906001016138f5565b509495945050505050565b84815260806020820152600061393e60808301866138e1565b6001600160a01b03949094166040830152506060015292915050565b85815284602082015260a06040820152600061397960a08301866138e1565b6001600160a01b0394909416606083015250608001529392505050565b6000806000606084860312156139ab57600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122051e0f8cbd4149614e5e3bd4baec2db2516561bd84e3ed60d490da270432bbe4864736f6c63430008120033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000a5e0829caced8ffdd4de3c43696c57f7d7a678ff
-----Decoded View---------------
Arg [0] : routerAddress (address): 0xa5E0829CaCEd8fFDD4De3c43696c57F7D7A678ff
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000a5e0829caced8ffdd4de3c43696c57f7d7a678ff
Deployed Bytecode Sourcemap
9305:22710:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31213:174;;;;;;;;;;-1:-1:-1;31213:174:0;;;;;:::i;:::-;;:::i;:::-;;13199:83;;;;;;;;;;-1:-1:-1;13269:5:0;;;;;;;;;;;;-1:-1:-1;;;13269:5:0;;;;13199:83;;;;;;;:::i;:::-;;;;;;;;14130:161;;;;;;;;;;-1:-1:-1;14130:161:0;;;;;:::i;:::-;;:::i;:::-;;;1440:14:1;;1433:22;1415:41;;1403:2;1388:18;14130:161:0;1275:187:1;13495:95:0;;;;;;;;;;-1:-1:-1;13575:7:0;;13495:95;;;1613:25:1;;;1601:2;1586:18;13495:95:0;1467:177:1;11662:156:0;;;;;;;;;;-1:-1:-1;11662:156:0;;;;;;;;;;;;;;;;;;;;;;1908:25:1;;;1964:2;1949:18;;1942:34;;;;1992:18;;;1985:34;;;;2050:2;2035:18;;2028:34;2093:3;2078:19;;2071:35;1895:3;1880:19;11662:156:0;1649:463:1;14299:313:0;;;;;;;;;;-1:-1:-1;14299:313:0;;;;;:::i;:::-;;:::i;11139:80::-;;;;;;;;;;;;11177:42;11139:80;;;;;-1:-1:-1;;;;;2742:32:1;;;2724:51;;2712:2;2697:18;11139:80:0;2578:203:1;16128:158:0;;;;;;;;;;;;;:::i;16296:248::-;;;;;;;;;;-1:-1:-1;16296:248:0;;;;;:::i;:::-;;:::i;29703:237::-;;;;;;;;;;-1:-1:-1;29703:237:0;;;;;:::i;:::-;;:::i;13381:83::-;;;;;;;;;;-1:-1:-1;13381:83:0;;10414:1;3113:36:1;;3101:2;3086:18;13381:83:0;2971:184:1;16959:475:0;;;;;;;;;;-1:-1:-1;16959:475:0;;;;;:::i;:::-;;:::i;14620:213::-;;;;;;;;;;-1:-1:-1;14620:213:0;;;;;:::i;:::-;;:::i;30839:98::-;;;;;;;;;;-1:-1:-1;30839:98:0;;;;;:::i;:::-;-1:-1:-1;;;;;30914:15:0;30891:4;30914:15;;;:6;:15;;;;;;;;;30839:98;15246:390;;;;;;;;;;-1:-1:-1;15246:390:0;;;;;:::i;:::-;;:::i;9424:325::-;;;;;;;;;;-1:-1:-1;9424:325:0;;;;;:::i;:::-;;:::i;31464:506::-;;;;;;;;;;-1:-1:-1;31464:506:0;;;;;:::i;:::-;;:::i;17444:111::-;;;;;;;;;;-1:-1:-1;17444:111:0;;;;;:::i;:::-;;:::i;31009:196::-;;;;;;;;;;-1:-1:-1;31009:196:0;;;;;:::i;:::-;;:::i;15650:470::-;;;;;;;;;;-1:-1:-1;15650:470:0;;;;;:::i;:::-;;:::i;10189:26::-;;;;;;;;;;-1:-1:-1;10189:26:0;;;;;;;;16618:333;;;;;;;;;;-1:-1:-1;16618:333:0;;;;;:::i;:::-;;:::i;17683:123::-;;;;;;;;;;-1:-1:-1;17683:123:0;;;;;:::i;:::-;-1:-1:-1;;;;;17771:27:0;17747:4;17771:27;;;:18;:27;;;;;;;;;17683:123;10252:34;;;;;;;;;;-1:-1:-1;10252:34:0;;;;;;;;;;;10727:54;;;;;;;;;;;;;;;;17998:366;;;;;;;;;;-1:-1:-1;17998:366:0;;;;;:::i;:::-;;:::i;10222:23::-;;;;;;;;;;-1:-1:-1;10222:23:0;;;;;;;;;;;13598:198;;;;;;;;;;-1:-1:-1;13598:198:0;;;;;:::i;:::-;;:::i;10918:45::-;;;;;;;;;;;;;;;;7671:94;;;;;;;;;;;;;:::i;11500:153::-;;;;;;;;;;-1:-1:-1;11500:153:0;;;;;;;;;;;;;;;;;;17813:171;;;;;;;;;;-1:-1:-1;17813:171:0;;;;;:::i;:::-;;:::i;30698:133::-;;;;;;;;;;-1:-1:-1;30698:133:0;;;;;:::i;:::-;;:::i;10667:53::-;;;;;;;;;;;;;;;;15118:120;;;;;;;;;;-1:-1:-1;15118:120:0;;;;;:::i;:::-;-1:-1:-1;;;;;15210:20:0;15186:4;15210:20;;;:11;:20;;;;;;;;;15118:120;7448:87;;;;;;;;;;-1:-1:-1;7494:7:0;7521:6;-1:-1:-1;;;;;7521:6:0;7448:87;;10857:53;;;;;;;;;;;;;;;;30295:101;;;;;;;;;;-1:-1:-1;30295:101:0;;;;;:::i;:::-;;:::i;13288:87::-;;;;;;;;;;-1:-1:-1;13360:7:0;;;;;;;;;;;;-1:-1:-1;;;13360:7:0;;;;13288:87;;11998:36;;;;;;;;;;-1:-1:-1;11998:36:0;;;;;;;;;;;;;;;;;;14841:269;;;;;;;;;;-1:-1:-1;14841:269:0;;;;;:::i;:::-;;:::i;10972:76::-;;;;;;;;;;-1:-1:-1;10972:76:0;;;;-1:-1:-1;;;;;10972:76:0;;;10351:19;;;;;;;;;;-1:-1:-1;10351:19:0;;;;-1:-1:-1;;;;;10351:19:0;;;13804:167;;;;;;;;;;-1:-1:-1;13804:167:0;;;;;:::i;:::-;;:::i;29462:233::-;;;;;;;;;;-1:-1:-1;29462:233:0;;;;;:::i;:::-;;:::i;18372:389::-;;;;;;;;;;-1:-1:-1;18372:389:0;;;;;:::i;:::-;;:::i;29948:201::-;;;;;;;;;;-1:-1:-1;29948:201:0;;;;;:::i;:::-;;:::i;30157:130::-;;;;;;;;;;-1:-1:-1;30157:130:0;;;;;:::i;:::-;;:::i;13979:143::-;;;;;;;;;;-1:-1:-1;13979:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;14087:18:0;;;14060:7;14087:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;13979:143;30519:171;;;;;;;;;;-1:-1:-1;30519:171:0;;;;;:::i;:::-;;:::i;10788:62::-;;;;;;;;;;;;;;;;17563:110;;;;;;;;;;-1:-1:-1;17563:110:0;;;;;:::i;:::-;;:::i;11055:77::-;;;;;;;;;;-1:-1:-1;11055:77:0;;;;-1:-1:-1;;;;;11055:77:0;;;7773:192;;;;;;;;;;-1:-1:-1;7773:192:0;;;;;:::i;:::-;;:::i;10323:21::-;;;;;;;;;;-1:-1:-1;10323:21:0;;;;-1:-1:-1;;;10323:21:0;;-1:-1:-1;;;;;10323:21:0;;;30404:107;;;;;;;;;;-1:-1:-1;30404:107:0;;;;;:::i;:::-;;:::i;31213:174::-;7494:7;7521:6;-1:-1:-1;;;;;7521:6:0;3395:10;7583:23;7575:68;;;;-1:-1:-1;;;7575:68:0;;;;;;;:::i;:::-;;;;;;;;;31333:45:::1;::::0;-1:-1:-1;;;31333:45:0;;31372:4:::1;31333:45;::::0;::::1;2724:51:1::0;-1:-1:-1;;;;;31291:29:0;::::1;::::0;::::1;::::0;31321:10:::1;::::0;31291:29;;31333:30:::1;::::0;2697:18:1;;31333:45:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31291:88;::::0;-1:-1:-1;;;;;;31291:88:0::1;::::0;;;;;;-1:-1:-1;;;;;6300:32:1;;;31291:88:0::1;::::0;::::1;6282:51:1::0;6349:18;;;6342:34;6255:18;;31291:88:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;31213:174:::0;:::o;14130:161::-;14205:4;14222:39;3395:10;14245:7;14254:6;14222:8;:39::i;:::-;-1:-1:-1;14279:4:0;14130:161;;;;;:::o;14299:313::-;14397:4;14414:36;14424:6;14432:9;14443:6;14414:9;:36::i;:::-;14461:121;14470:6;3395:10;14492:89;14530:6;14492:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14492:19:0;;;;;;:11;:19;;;;;;;;3395:10;14492:33;;;;;;;;;;:37;:89::i;:::-;14461:8;:121::i;:::-;-1:-1:-1;14600:4:0;14299:313;;;;;;:::o;16128:158::-;7494:7;7521:6;-1:-1:-1;;;;;7521:6:0;3395:10;7583:23;7575:68;;;;-1:-1:-1;;;7575:68:0;;;;;;;:::i;:::-;16181:14:::1;:21:::0;;-1:-1:-1;;16213:18:0;;;;;16247:31:::1;::::0;16262:15:::1;1613:25:1::0;;16247:31:0::1;::::0;1601:2:1;1586:18;16247:31:0::1;;;;;;;16128:158::o:0;16296:248::-;16362:7;16401;;16390;:18;;16382:73;;;;-1:-1:-1;;;16382:73:0;;6839:2:1;16382:73:0;;;6821:21:1;6878:2;6858:18;;;6851:30;6917:34;6897:18;;;6890:62;-1:-1:-1;;;6968:18:1;;;6961:40;7018:19;;16382:73:0;6637:406:1;16382:73:0;16466:19;16489:10;:8;:10::i;:::-;16466:33;-1:-1:-1;16517:19:0;16466:33;16517:7;:19;:::i;29703:237::-;7494:7;7521:6;-1:-1:-1;;;;;7521:6:0;3395:10;7583:23;7575:68;;;;-1:-1:-1;;;7575:68:0;;;;;;;:::i;:::-;29791:17:::1;::::0;-1:-1:-1;;;;;29791:30:0;;::::1;:17:::0;::::1;:30:::0;29783:61:::1;;;::::0;-1:-1:-1;;;29783:61:0;;7604:2:1;29783:61:0::1;::::0;::::1;7586:21:1::0;7643:2;7623:18;;;7616:30;-1:-1:-1;;;7662:18:1;;;7655:48;7720:18;;29783:61:0::1;7402:342:1::0;29783:61:0::1;29855:17;:29:::0;;-1:-1:-1;;;;;29855:29:0;;::::1;-1:-1:-1::0;;;;;;29855:29:0;;::::1;::::0;::::1;::::0;;:17:::1;29895:37:::0;:18:::1;:37;::::0;29703:237::o;16959:475::-;7494:7;7521:6;-1:-1:-1;;;;;7521:6:0;3395:10;7583:23;7575:68;;;;-1:-1:-1;;;7575:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17041:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;17033:56;;;::::0;-1:-1:-1;;;17033:56:0;;7951:2:1;17033:56:0::1;::::0;::::1;7933:21:1::0;7990:2;7970:18;;;7963:30;8029:25;8009:18;;;8002:53;8072:18;;17033:56:0::1;7749:347:1::0;17033:56:0::1;17105:9;17100:327;17124:9;:16:::0;17120:20;::::1;17100:327;;;17182:7;-1:-1:-1::0;;;;;17166:23:0::1;:9;17176:1;17166:12;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;17166:12:0::1;:23:::0;17162:254:::1;;17225:9;17235:16:::0;;:20:::1;::::0;17254:1:::1;::::0;17235:20:::1;:::i;:::-;17225:31;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;17210:9:::1;:12:::0;;-1:-1:-1;;;;;17225:31:0;;::::1;::::0;17220:1;;17210:12;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;17210:46:0::1;-1:-1:-1::0;;;;;17210:46:0;;::::1;;::::0;;17275:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;17314:11:::1;:20:::0;;;;:28;;-1:-1:-1;;17314:28:0::1;::::0;;17361:9:::1;:15:::0;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;17361:15:0;;;;;-1:-1:-1;;;;;;17361:15:0::1;::::0;;;;;31291:88:::1;31213:174:::0;:::o;17162:254::-:1;17142:3:::0;::::1;::::0;::::1;:::i;:::-;;;;17100:327;;14620:213:::0;3395:10;14708:4;14757:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;14757:34:0;;;;;;;;;;14708:4;;14725:78;;14748:7;;14757:45;;14792:10;;14757:45;:::i;15246:390::-;3395:10;15298:14;15347:19;;;:11;:19;;;;;;;;15346:20;15338:77;;;;-1:-1:-1;;;15338:77:0;;8970:2:1;15338:77:0;;;8952:21:1;9009:2;8989:18;;;8982:30;9048:34;9028:18;;;9021:62;-1:-1:-1;;;9099:18:1;;;9092:42;9151:19;;15338:77:0;8768:408:1;15338:77:0;15426:28;15457:32;15468:7;15477:4;15483:5;15457:10;:32::i;:::-;15538:9;;-1:-1:-1;;;;;15518:15:0;;15538:9;15518:15;;;:7;:15;;;;;;15426:63;;-1:-1:-1;15518:30:0;;:15;:19;:30::i;:::-;-1:-1:-1;;;;;15500:15:0;;;;;;:7;:15;;;;;:48;15581:9;;15569:7;;:22;;:11;:22::i;:::-;15559:7;:32;15602:11;:26;;15621:7;;15602:11;:15;;:26;;15621:7;;15602:26;:::i;:::-;;;;-1:-1:-1;;;;;15246:390:0:o;9424:325::-;7494:7;7521:6;-1:-1:-1;;;;;7521:6:0;3395:10;7583:23;7575:68;;;;-1:-1:-1;;;7575:68:0;;;;;;;:::i;:::-;9536:10:::1;;9507:25;9525:6;9507:13;13575:7:::0;;;13495:95;9507:13:::1;:17:::0;::::1;:25::i;:::-;:39;;9499:87;;;::::0;-1:-1:-1;;;9499:87:0;;9383:2:1;9499:87:0::1;::::0;::::1;9365:21:1::0;9422:2;9402:18;;;9395:30;9461:34;9441:18;;;9434:62;-1:-1:-1;;;9512:18:1;;;9505:33;9555:19;;9499:87:0::1;9181:399:1::0;9499:87:0::1;9607:7;::::0;:19:::1;::::0;9619:6;9607:11:::1;:19::i;:::-;9597:7;:29:::0;-1:-1:-1;;;;;9658:18:0;::::1;;::::0;;;:9:::1;:18;::::0;;;;;:30:::1;::::0;9681:6;9658:22:::1;:30::i;:::-;-1:-1:-1::0;;;;;9637:18:0;::::1;;::::0;;;:9:::1;:18;::::0;;;;;:51;;;;9704:37;;9637:18;;;-1:-1:-1;;;;;;;;;;;9704:37:0;::::1;::::0;9734:6;1613:25:1;;1601:2;1586:18;;1467:177;9704:37:0::1;;;;;;;;9424:325:::0;;:::o;31464:506::-;7494:7;7521:6;-1:-1:-1;;;;;7521:6:0;3395:10;7583:23;7575:68;;;;-1:-1:-1;;;7575:68:0;;;;;;;:::i;:::-;31568:6:::1;::::0;-1:-1:-1;;;;;;;;31568:6:0;;::::1;::::0;::::1;31547:28:::0;;::::1;::::0;31539:37:::1;;;::::0;::::1;;31587:18;31616:9;31587:39;;31637:16;31665:10;-1:-1:-1::0;;;;;31665:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;31656:38:0::1;;31703:4;31710:10;-1:-1:-1::0;;;;;31710:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31656:72;::::0;-1:-1:-1;;;;;;31656:72:0::1;::::0;;;;;;-1:-1:-1;;;;;10071:15:1;;;31656:72:0::1;::::0;::::1;10053:34:1::0;10123:15;;10103:18;;;10096:43;9988:18;;31656:72:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31637:91:::0;-1:-1:-1;;;;;;31743:22:0;::::1;31739:194;;31798:10;-1:-1:-1::0;;;;;31798:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;31789:41:0::1;;31839:4;31846:10;-1:-1:-1::0;;;;;31846:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31789:75;::::0;-1:-1:-1;;;;;;31789:75:0::1;::::0;;;;;;-1:-1:-1;;;;;10071:15:1;;;31789:75:0::1;::::0;::::1;10053:34:1::0;10123:15;;10103:18;;;10096:43;9988:18;;31789:75:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31782:4;:82:::0;;-1:-1:-1;;;;;;31782:82:0::1;-1:-1:-1::0;;;;;31782:82:0;;;::::1;::::0;;;::::1;::::0;;31739:194:::1;;;31906:4;:15:::0;;-1:-1:-1;;;;;;31906:15:0::1;-1:-1:-1::0;;;;;31906:15:0;::::1;;::::0;;31739:194:::1;-1:-1:-1::0;31943:6:0::1;:19:::0;;-1:-1:-1;;;;;31943:19:0;;::::1;-1:-1:-1::0;;;31943:19:0::1;-1:-1:-1::0;;;;;;31943:19:0;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;31464:506:0:o;17444:111::-;7494:7;7521:6;-1:-1:-1;;;;;7521:6:0;3395:10;7583:23;7575:68;;;;-1:-1:-1;;;7575:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17513:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;17513:34:0::1;17543:4;17513:34;::::0;;17444:111::o;31009:196::-;7494:7;7521:6;-1:-1:-1;;;;;7521:6:0;3395:10;7583:23;7575:68;;;;-1:-1:-1;;;7575:68:0;;;;;;;:::i;:::-;31109:9:::1;31084:21;:34;;31076:71;;;::::0;-1:-1:-1;;;31076:71:0;;10352:2:1;31076:71:0::1;::::0;::::1;10334:21:1::0;10391:2;10371:18;;;10364:30;10430:26;10410:18;;;10403:54;10474:18;;31076:71:0::1;10150:348:1::0;31076:71:0::1;31158:39;::::0;31166:10:::1;::::0;31158:39;::::1;;;::::0;31187:9;;31158:39:::1;::::0;;;31187:9;31166:10;31158:39;::::1;;;;;;;;;;;;;::::0;::::1;;;;15650:470:::0;15740:7;15779;;15768;:18;;15760:62;;;;-1:-1:-1;;;15760:62:0;;10705:2:1;15760:62:0;;;10687:21:1;10744:2;10724:18;;;10717:30;10783:33;10763:18;;;10756:61;10834:18;;15760:62:0;10503:355:1;15760:62:0;15838:17;15833:280;;15872:28;15903:32;15914:7;15923:4;15929:5;15903:10;:32::i;:::-;15957:9;;-1:-1:-1;15950:16:0;;-1:-1:-1;15950:16:0;15833:280;15999:28;16030:32;16041:7;16050:4;16056:5;16030:10;:32::i;:::-;16084:17;;;;-1:-1:-1;16077:24:0;;-1:-1:-1;16077:24:0;16618:333;7494:7;7521:6;-1:-1:-1;;;;;7521:6:0;3395:10;7583:23;7575:68;;;;-1:-1:-1;;;7575:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16701:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;16700:21;16692:61;;;::::0;-1:-1:-1;;;16692:61:0;;11065:2:1;16692:61:0::1;::::0;::::1;11047:21:1::0;11104:2;11084:18;;;11077:30;11143:29;11123:18;;;11116:57;11190:18;;16692:61:0::1;10863:351:1::0;16692:61:0::1;-1:-1:-1::0;;;;;16767:16:0;::::1;16786:1;16767:16:::0;;;:7:::1;:16;::::0;;;;;:20;16764:108:::1;;-1:-1:-1::0;;;;;16843:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;16823:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;16804:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;16764:108:::1;-1:-1:-1::0;;;;;16882:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;16882:27:0::1;16905:4;16882:27:::0;;::::1;::::0;;;16920:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;16920:23:0::1;::::0;;::::1;::::0;;16618:333::o;17998:366::-;7494:7;7521:6;-1:-1:-1;;;;;7521:6:0;3395:10;7583:23;7575:68;;;;-1:-1:-1;;;7575:68:0;;;;;;;:::i;:::-;18142:8:::1;:19:::0;;;18172;:33;;;18216:18;:31;;;18258:18;:31;;;18300:16;:27;;;18343:13:::1;::::0;::::1;::::0;18142:12:::1;::::0;18343:13:::1;17998:366:::0;;;;;:::o;13598:198::-;-1:-1:-1;;;;;13688:20:0;;13664:7;13688:20;;;:11;:20;;;;;;;;13684:49;;;-1:-1:-1;;;;;;13717:16:0;;;;;:7;:16;;;;;;;13598:198::o;13684:49::-;-1:-1:-1;;;;;13771:16:0;;;;;;:7;:16;;;;;;13751:37;;:19;:37::i;7671:94::-;7494:7;7521:6;-1:-1:-1;;;;;7521:6:0;3395:10;7583:23;7575:68;;;;-1:-1:-1;;;7575:68:0;;;;;;;:::i;:::-;7736:21:::1;7754:1;7736:9;:21::i;:::-;7671:94::o:0;17813:171::-;7494:7;7521:6;-1:-1:-1;;;;;7521:6:0;3395:10;7583:23;7575:68;;;;-1:-1:-1;;;7575:68:0;;;;;;;:::i;:::-;17915:62:::1;17961:5;17915:27;17927:14;17915:7;;:11;;:27;;;;:::i;:::-;:31:::0;::::1;:62::i;:::-;17898:14;:79:::0;-1:-1:-1;17813:171:0:o;30698:133::-;7494:7;7521:6;-1:-1:-1;;;;;7521:6:0;3395:10;7583:23;7575:68;;;;-1:-1:-1;;;7575:68:0;;;;;;;:::i;:::-;30802:21:::1;:12:::0;30817:6:::1;30802:21;:::i;:::-;30782:17;:41:::0;-1:-1:-1;30698:133:0:o;30295:101::-;7494:7;7521:6;-1:-1:-1;;;;;7521:6:0;3395:10;7583:23;7575:68;;;;-1:-1:-1;;;7575:68:0;;;;;;;:::i;:::-;30366:11:::1;:22:::0;;;::::1;;;;-1:-1:-1::0;;30366:22:0;;::::1;::::0;;;::::1;::::0;;30295:101::o;14841:269::-;14934:4;14951:129;3395:10;14974:7;14983:96;15022:15;14983:96;;;;;;;;;;;;;;;;;3395:10;14983:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;14983:34:0;;;;;;;;;;;;:38;:96::i;13804:167::-;13882:4;13899:42;3395:10;13923:9;13934:6;13899:9;:42::i;29462:233::-;7494:7;7521:6;-1:-1:-1;;;;;7521:6:0;3395:10;7583:23;7575:68;;;;-1:-1:-1;;;7575:68:0;;;;;;;:::i;:::-;29549:16:::1;::::0;-1:-1:-1;;;;;29549:29:0;;::::1;:16:::0;::::1;:29:::0;29541:60:::1;;;::::0;-1:-1:-1;;;29541:60:0;;7604:2:1;29541:60:0::1;::::0;::::1;7586:21:1::0;7643:2;7623:18;;;7616:30;-1:-1:-1;;;7662:18:1;;;7655:48;7720:18;;29541:60:0::1;7402:342:1::0;29541:60:0::1;29612:16;:28:::0;;-1:-1:-1;;;;;29612:28:0;;::::1;-1:-1:-1::0;;;;;;29612:28:0;;::::1;::::0;::::1;::::0;;:16:::1;29651:36:::0;:18:::1;:36;::::0;29462:233::o;18372:389::-;7494:7;7521:6;-1:-1:-1;;;;;7521:6:0;3395:10;7583:23;7575:68;;;;-1:-1:-1;;;7575:68:0;;;;;;;:::i;:::-;18519:12:::1;:23:::0;;;18553;:37;;;18601:22;:35;;;18647:22;:35;;;18693:20;:31;;;18740:13:::1;::::0;::::1;::::0;18519:16:::1;::::0;18740:13:::1;18372:389:::0;;;;;:::o;29948:201::-;7494:7;7521:6;-1:-1:-1;;;;;7521:6:0;3395:10;7583:23;7575:68;;;;-1:-1:-1;;;7575:68:0;;;;;;;:::i;:::-;30071:21:::1;:13:::0;30087:5:::1;30071:21;:::i;:::-;30056:12;:36:::0;30119:22:::1;:14:::0;30136:5:::1;30119:22;:::i;:::-;30103:13;:38:::0;-1:-1:-1;;29948:201:0:o;30157:130::-;7494:7;7521:6;-1:-1:-1;;;;;7521:6:0;3395:10;7583:23;7575:68;;;;-1:-1:-1;;;7575:68:0;;;;;;;:::i;:::-;30266:13:::1;10414:1;30266:2;:13;:::i;:::-;30257:22;::::0;:6;:22:::1;:::i;:::-;30236:18;:43:::0;-1:-1:-1;30157:130:0:o;30519:171::-;7494:7;7521:6;-1:-1:-1;;;;;7521:6:0;3395:10;7583:23;7575:68;;;;-1:-1:-1;;;7575:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;30604:15:0;::::1;;::::0;;;:6:::1;:15;::::0;;;;;:23;::::1;;:15;::::0;;::::1;:23;;::::0;30596:53:::1;;;::::0;-1:-1:-1;;;30596:53:0;;12977:2:1;30596:53:0::1;::::0;::::1;12959:21:1::0;13016:2;12996:18;;;12989:30;-1:-1:-1;;;13035:18:1;;;13028:47;13092:18;;30596:53:0::1;12775:341:1::0;30596:53:0::1;-1:-1:-1::0;;;;;30660:15:0;;;::::1;;::::0;;;:6:::1;:15;::::0;;;;:22;;-1:-1:-1;;30660:22:0::1;::::0;::::1;;::::0;;;::::1;::::0;;30519:171::o;17563:110::-;7494:7;7521:6;-1:-1:-1;;;;;7521:6:0;3395:10;7583:23;7575:68;;;;-1:-1:-1;;;7575:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17630:27:0::1;17660:5;17630:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;17630:35:0::1;::::0;;17563:110::o;7773:192::-;7494:7;7521:6;-1:-1:-1;;;;;7521:6:0;3395:10;7583:23;7575:68;;;;-1:-1:-1;;;7575:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7862:22:0;::::1;7854:73;;;::::0;-1:-1:-1;;;7854:73:0;;13323:2:1;7854:73:0::1;::::0;::::1;13305:21:1::0;13362:2;13342:18;;;13335:30;13401:34;13381:18;;;13374:62;-1:-1:-1;;;13452:18:1;;;13445:36;13498:19;;7854:73:0::1;13121:402:1::0;7854:73:0::1;7938:19;7948:8;7938:9;:19::i;:::-;7773:192:::0;:::o;30404:107::-;7494:7;7521:6;-1:-1:-1;;;;;7521:6:0;3395:10;7583:23;7575:68;;;;-1:-1:-1;;;7575:68:0;;;;;;;:::i;:::-;30478:14:::1;:25:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;30478:25:0;;::::1;::::0;;;::::1;::::0;;30404:107::o;2219:98::-;2277:7;2304:5;2308:1;2304;:5;:::i;2325:98::-;2383:7;2410:5;2414:1;2410;:5;:::i;23137:335::-;-1:-1:-1;;;;;23230:19:0;;23222:68;;;;-1:-1:-1;;;23222:68:0;;13730:2:1;23222:68:0;;;13712:21:1;13769:2;13749:18;;;13742:30;13808:34;13788:18;;;13781:62;-1:-1:-1;;;13859:18:1;;;13852:34;13903:19;;23222:68:0;13528:400:1;23222:68:0;-1:-1:-1;;;;;23309:21:0;;23301:68;;;;-1:-1:-1;;;23301:68:0;;14135:2:1;23301:68:0;;;14117:21:1;14174:2;14154:18;;;14147:30;14213:34;14193:18;;;14186:62;-1:-1:-1;;;14264:18:1;;;14257:32;14306:19;;23301:68:0;13933:398:1;23301:68:0;-1:-1:-1;;;;;23380:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;23432:32;;1613:25:1;;;23432:32:0;;1586:18:1;23432:32:0;;;;;;;23137:335;;;:::o;23480:2017::-;-1:-1:-1;;;;;23576:18:0;;23568:68;;;;-1:-1:-1;;;23568:68:0;;14538:2:1;23568:68:0;;;14520:21:1;14577:2;14557:18;;;14550:30;14616:34;14596:18;;;14589:62;-1:-1:-1;;;14667:18:1;;;14660:35;14712:19;;23568:68:0;14336:401:1;23568:68:0;-1:-1:-1;;;;;23655:16:0;;23647:64;;;;-1:-1:-1;;;23647:64:0;;14944:2:1;23647:64:0;;;14926:21:1;14983:2;14963:18;;;14956:30;15022:34;15002:18;;;14995:62;-1:-1:-1;;;15073:18:1;;;15066:33;15116:19;;23647:64:0;14742:399:1;23647:64:0;23739:1;23730:6;:10;23722:64;;;;-1:-1:-1;;;23722:64:0;;15348:2:1;23722:64:0;;;15330:21:1;15387:2;15367:18;;;15360:30;15426:34;15406:18;;;15399:62;-1:-1:-1;;;15477:18:1;;;15470:39;15526:19;;23722:64:0;15146:405:1;23722:64:0;23815:15;23825:4;23815:9;:15::i;:::-;23805:6;:25;;23797:86;;;;-1:-1:-1;;;23797:86:0;;15758:2:1;23797:86:0;;;15740:21:1;15797:2;15777:18;;;15770:30;15836:34;15816:18;;;15809:62;-1:-1:-1;;;15887:18:1;;;15880:47;15944:19;;23797:86:0;15556:413:1;23797:86:0;-1:-1:-1;;;;;23903:12:0;;;;;;:6;:12;;;;;;;;23902:13;:28;;;;-1:-1:-1;;;;;;23920:10:0;;;;;;:6;:10;;;;;;;;23919:11;23902:28;23894:54;;;;-1:-1:-1;;;23894:54:0;;16176:2:1;23894:54:0;;;16158:21:1;16215:2;16195:18;;;16188:30;-1:-1:-1;;;16234:18:1;;;16227:43;16287:18;;23894:54:0;15974:337:1;23894:54:0;-1:-1:-1;;;;;23965:24:0;;;;;;:18;:24;;;;;;;;23964:25;:52;;;;-1:-1:-1;;;;;;23994:22:0;;;;;;:18;:22;;;;;;;;23993:23;23964:52;23961:136;;;24040:14;;;;24032:53;;;;-1:-1:-1;;;24032:53:0;;16518:2:1;24032:53:0;;;16500:21:1;16557:2;16537:18;;;16530:30;16596:28;16576:18;;;16569:56;16642:18;;24032:53:0;16316:350:1;24032:53:0;7494:7;7521:6;-1:-1:-1;;;;;24113:15:0;;;7521:6;;24113:15;;;;:45;;-1:-1:-1;7494:7:0;7521:6;-1:-1:-1;;;;;24145:13:0;;;7521:6;;24145:13;;24113:45;:78;;;;-1:-1:-1;;;;;;24175:16:0;;;;24113:78;:116;;;;-1:-1:-1;;;;;;24208:21:0;;24222:6;24208:21;;24113:116;:145;;;;-1:-1:-1;24254:4:0;;-1:-1:-1;;;;;24246:12:0;;;24254:4;;24246:12;24113:145;24109:410;;;24292:12;;24282:6;:22;;24274:65;;;;-1:-1:-1;;;24274:65:0;;16873:2:1;24274:65:0;;;16855:21:1;16912:2;16892:18;;;16885:30;16951:32;16931:18;;;16924:60;17001:18;;24274:65:0;16671:354:1;24274:65:0;24353:28;24384:13;24394:2;24384:9;:13::i;:::-;24453:14;;24353:44;;-1:-1:-1;24420:29:0;24443:6;24353:44;24420:29;:::i;:::-;:47;;24412:95;;;;-1:-1:-1;;;24412:95:0;;17232:2:1;24412:95:0;;;17214:21:1;17271:2;17251:18;;;17244:30;17310:34;17290:18;;;17283:62;-1:-1:-1;;;17361:18:1;;;17354:33;17404:19;;24412:95:0;17030:399:1;24412:95:0;24259:260;24109:410;7494:7;7521:6;-1:-1:-1;;;;;24535:15:0;;;7521:6;;24535:15;;;;:45;;-1:-1:-1;7494:7:0;7521:6;-1:-1:-1;;;;;24567:13:0;;;7521:6;;24567:13;;24535:45;:78;;;;-1:-1:-1;;;;;;24597:16:0;;;;24535:78;:116;;;;-1:-1:-1;;;;;;24630:21:0;;24644:6;24630:21;;24535:116;:145;;;;-1:-1:-1;24676:4:0;;-1:-1:-1;;;;;24668:12:0;;;24676:4;;24668:12;24535:145;24531:246;;;24714:13;;24704:6;:23;;24696:69;;;;-1:-1:-1;;;24696:69:0;;17636:2:1;24696:69:0;;;17618:21:1;17675:2;17655:18;;;17648:30;17714:34;17694:18;;;17687:62;-1:-1:-1;;;17765:18:1;;;17758:31;17806:19;;24696:69:0;17434:397:1;24696:69:0;24789:28;24820:24;24838:4;24820:9;:24::i;:::-;24894:18;;24927:8;;24789:55;;-1:-1:-1;24870:42:0;;;;24927:8;;;;;24926:9;:24;;;;-1:-1:-1;24939:11:0;;;;;;;24926:24;:35;;;;;24954:7;24926:35;:51;;;;-1:-1:-1;24973:4:0;;-1:-1:-1;;;;;24965:12:0;;;24973:4;;24965:12;;24926:51;24923:398;;;25051:14;;25011:21;;25051:14;;;;;:47;;;;;25087:10;25069:7;:29;25051:47;:61;;;;-1:-1:-1;25108:4:0;;-1:-1:-1;;;;;25102:10:0;;;25108:4;;25102:10;25051:61;25047:212;;;25147:17;;25137:7;:27;25133:60;;;-1:-1:-1;25176:17:0;;25133:60;25212:31;25226:16;:7;25238:3;25226:11;:16::i;:::-;25212:13;:31::i;:::-;25275:34;25290:18;;25275:14;:34::i;:::-;24978:343;24923:398;25362:4;;25331:11;;-1:-1:-1;;;;;25362:4:0;;;25356:10;;;;25353:28;;-1:-1:-1;25377:4:0;25353:28;-1:-1:-1;;;;;25429:24:0;;;;;;:18;:24;;;;;;25394:95;;25409:4;;25415:2;;25419:6;;25429:24;;;:50;;-1:-1:-1;;;;;;25457:22:0;;;;;;:18;:22;;;;;;;;25429:50;25427:53;25482:6;25394:14;:95::i;:::-;23549:1948;;;23480:2017;;;:::o;2537:240::-;2657:7;2718:12;2710:6;;;;2702:29;;;;-1:-1:-1;;;2702:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;2753:5:0;;;2537:240::o;22423:158::-;22464:7;22485:15;22502;22521:19;:17;:19::i;:::-;22484:56;;-1:-1:-1;22484:56:0;-1:-1:-1;22558:15:0;22484:56;;22558:15;:::i;:::-;22551:22;;;;22423:158;:::o;20063:433::-;20149:36;;:::i;:::-;20210:37;20222:7;20231;20240:6;20210:11;:37::i;:::-;20198:49;;20409:52;20421:9;20432:7;20441;20450:10;:8;:10::i;:::-;20409:11;:52::i;:::-;20387:18;;;20258:203;20365:20;;;20258:203;20343:20;;;20258:203;20320:21;;;20258:203;20305:14;;;20258:203;20278:25;;;20258:203;;;20063:433;;;;;:::o;2113:98::-;2171:7;2198:5;2202:1;2198;:5;:::i;2007:98::-;2065:7;2092:5;2096:1;2092;:5;:::i;7973:173::-;8029:16;8048:6;;-1:-1:-1;;;;;8065:17:0;;;-1:-1:-1;;;;;;8065:17:0;;;;;;8098:40;;8048:6;;;;;;;8098:40;;8029:16;8098:40;8018:128;7973:173;:::o;26641:134::-;12599:8;:15;;-1:-1:-1;;12599:15:0;;;;;26711:10;;26707:61:::1;;26735:24;26752:6;26735:16;:24::i;:::-;-1:-1:-1::0;12637:8:0;:16;;-1:-1:-1;;12637:16:0;;;26641:134::o;27296:1081::-;12599:8;:15;;-1:-1:-1;;12599:15:0;;;;;27480:19;;27461:16;;27440:18;;12599:15;;27480:19;27440:37:::1;::::0;::::1;:::i;:::-;:59;;;;:::i;:::-;27439:65;::::0;27503:1:::1;27439:65;:::i;:::-;27418:86;;27515:32;27580:11;27559:8;:18;;;27550:6;:27;;;;:::i;:::-;:41;;;;:::i;:::-;27515:76:::0;-1:-1:-1;27602:14:0::1;27619:33;27515:76:::0;27619:6;:33:::1;:::i;:::-;27602:50:::0;-1:-1:-1;27690:21:0::1;27724:24;27602:50:::0;27724:16:::1;:24::i;:::-;27761:20;27784:38;27808:14:::0;27784:21:::1;:38;:::i;:::-;27884:18:::0;;27761:61;;-1:-1:-1;27833:19:0::1;::::0;27870:32:::1;::::0;:11;:32:::1;:::i;:::-;27854:49;::::0;:12;:49:::1;:::i;:::-;27960:18:::0;;27833:70;;-1:-1:-1;27914:29:0::1;::::0;27946:32:::1;::::0;27833:70;27946:32:::1;:::i;:::-;27914:64:::0;-1:-1:-1;27994:25:0;;27991:158:::1;;28076:61;28089:24;28115:21;28076:12;:61::i;:::-;28244:19:::0;;28202:21:::1;::::0;28226:15:::1;:11:::0;28240:1:::1;28226:15;:::i;:::-;:37;;;;:::i;:::-;28202:61:::0;-1:-1:-1;28277:17:0;;28274:96:::1;;28316:17;::::0;28308:50:::1;::::0;-1:-1:-1;;;;;28316:17:0;;::::1;::::0;28308:50;::::1;;;::::0;28344:13;;28316:17:::1;28308:50:::0;28316:17;28308:50;28344:13;28316:17;28308:50;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;28274:96;-1:-1:-1::0;;12637:8:0;:16;;-1:-1:-1;;12637:16:0;;;-1:-1:-1;;;;;;;27296:1081:0:o;25580:1053::-;25704:28;25735:36;25746:7;25755;25764:6;25735:10;:36::i;:::-;-1:-1:-1;;;;;25788:19:0;;;;;;:11;:19;;;;;;25704:67;;-1:-1:-1;25788:19:0;;25784:115;;;-1:-1:-1;;;;;25864:15:0;;;;;;:7;:15;;;;;;:23;;25880:7;;25864:23;:::i;:::-;-1:-1:-1;;;;;25846:15:0;;;;;;:7;:15;;;;;:41;25784:115;-1:-1:-1;;;;;25913:22:0;;;;;;:11;:22;;;;;;;;25909:130;;;26010:17;;;;-1:-1:-1;;;;;25991:18:0;;;;;;:7;:18;;;;;;:36;;26010:17;25991:36;:::i;:::-;-1:-1:-1;;;;;25970:18:0;;;;;;:7;:18;;;;;:57;25909:130;26085:9;;-1:-1:-1;;;;;26069:15:0;;26085:9;26069:15;;;:7;:15;;;;;;:25;;26085:9;26069:25;:::i;:::-;-1:-1:-1;;;;;26051:15:0;;;;;;;:7;:15;;;;;;;;:43;;;;26145:17;;;26126:18;;;;;;;;;;:36;;26145:17;26126:36;:::i;:::-;-1:-1:-1;;;;;26105:18:0;;;;;;:7;:18;;;;;;;:57;;;;26185:6;;;26193;;;;26173:27;;26185:6;26173:11;:27::i;:::-;26211:44;26227:1;:13;;;26241:1;:13;;;26211:15;:44::i;:::-;26266:41;26281:1;:12;;;26294:1;:12;;;26266:14;:41::i;:::-;26318:42;26333:1;:12;;;26347:1;:12;;;26318:14;:42::i;:::-;26371:36;26384:1;:10;;;26396:1;:10;;;26371:12;:36::i;:::-;26440:9;-1:-1:-1;;;;;26423:46:0;26432:6;-1:-1:-1;;;;;26423:46:0;-1:-1:-1;;;;;;;;;;;26451:1:0;:17;;;26423:46;;;;1613:25:1;;1601:2;1586:18;;1467:177;26423:46:0;;;;;;;;26510:4;-1:-1:-1;;;;;26485:74:0;26494:6;-1:-1:-1;;;;;26485:74:0;-1:-1:-1;;;;;;;;;;;26548:1:0;:10;;;26532:1;:13;;;26517:1;:12;;;:28;;;;:::i;:::-;:41;;;;:::i;:::-;26485:74;;1613:25:1;;;1601:2;1586:18;26485:74:0;;;;;;;26592:16;;26610:12;;;;26575:48;;1613:25:1;;;-1:-1:-1;;;;;26592:16:0;;;;26575:48;;;-1:-1:-1;;;;;;;;;;;26575:48:0;1601:2:1;1586:18;26575:48:0;;;;;;;25691:942;25580:1053;;;;;:::o;22589:540::-;22686:7;;22722;;22639;;;;;22740:279;22764:9;:16;22760:20;;22740:279;;;22830:7;22806;:21;22814:9;22824:1;22814:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;22814:12:0;22806:21;;;;;;;;;;;;;:31;;:66;;;22865:7;22841;:21;22849:9;22859:1;22849:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;22849:12:0;22841:21;;;;;;;;;;;;;:31;22806:66;22802:97;;;22882:7;;22891;;22874:25;;;;;;;22589:540;;:::o;22802:97::-;22932:7;:21;22940:9;22950:1;22940:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;22940:12:0;22932:21;;;;;;;;;;;;;22924:29;;:7;:29;:::i;:::-;22914:39;;22986:7;:21;22994:9;23004:1;22994:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;22994:12:0;22986:21;;;;;;;;;;;;;22978:29;;:7;:29;:::i;:::-;22968:39;-1:-1:-1;22782:3:0;;;;:::i;:::-;;;;22740:279;;;;23051:7;;23043;;:15;;;;:::i;:::-;23033:7;:25;23029:56;;;23068:7;;23077;;23060:25;;;;;;22589:540;;:::o;23029:56::-;23104:7;;23113;;-1:-1:-1;22589:540:0;-1:-1:-1;22589:540:0:o;20504:1104::-;20591:28;;:::i;:::-;20638:7;20634:86;;20660:17;;;:27;;;20700:8;;20634:86;20735:6;20732:850;;;20774:12;:16;20791:4;;20766:24;;:7;:24;:::i;:::-;:29;;;;:::i;:::-;20757:6;;;:38;20834:23;;20858:4;;20826:31;;:7;:31;:::i;:::-;:36;;;;:::i;:::-;20810:13;;;:52;20900:22;;20923:4;;20892:30;;:7;:30;:::i;:::-;:35;;;;:::i;:::-;20877:12;;;:50;20965:22;;20988:4;;20957:30;;:7;:30;:::i;:::-;:35;;;;:::i;:::-;20942:12;;;:50;21028:20;;21049:4;;21020:28;;:7;:28;:::i;:::-;:33;;;;:::i;:::-;21007:10;;;:46;;;21130:12;;;;21117;;;;21103:13;;;;21096:6;;;;21088:14;;:7;:14;:::i;:::-;:28;;;;:::i;:::-;:41;;;;:::i;:::-;:54;;;;:::i;:::-;:65;;;;:::i;:::-;21068:17;;;:85;20732:850;;;21211:8;:12;21224:4;;21203:20;;:7;:20;:::i;:::-;:25;;;;:::i;:::-;21194:6;;;:34;21267:19;;21287:4;;21259:27;;:7;:27;:::i;:::-;:32;;;;:::i;:::-;21243:13;;;:48;21329:18;;21348:4;;21321:26;;:7;:26;:::i;:::-;:31;;;;:::i;:::-;21306:12;;;:46;21390:18;;21409:4;;21382:26;;:7;:26;:::i;:::-;:31;;;;:::i;:::-;21367:12;;;:46;21449:16;;21466:4;;21441:24;;:7;:24;:::i;:::-;:29;;;;:::i;:::-;21428:10;;;:42;;;21547:12;;;;21534;;;;21520:13;;;;21513:6;;;;21505:14;;:7;:14;:::i;:::-;:28;;;;:::i;:::-;:41;;;;:::i;:::-;:54;;;;:::i;:::-;:65;;;;:::i;:::-;21485:17;;;:85;20504:1104;;;;;:::o;21616:799::-;21741:15;;;;;;;21896:19;21904:11;21896:7;:19;:::i;:::-;21886:29;;21932:7;21928:73;;-1:-1:-1;21961:7:0;;-1:-1:-1;21979:1:0;;-1:-1:-1;21979:1:0;;-1:-1:-1;21979:1:0;;-1:-1:-1;21979:1:0;;-1:-1:-1;21979:1:0;21954:35;;21928:73;22027:11;22020:1;:6;;;:18;;;;:::i;:::-;22013:25;;22077:11;22063:1;:13;;;:25;;;;:::i;:::-;22049:39;;22125:11;22112:1;:12;;;:24;;;;:::i;:::-;22099:37;;22173:11;22160:1;:12;;;:24;;;;:::i;:::-;22147:37;;22217:11;22206:1;:10;;;:22;;;;:::i;:::-;22195:33;-1:-1:-1;22195:33:0;22294:10;22283;22271:11;22258:12;22266:4;22258:7;:12;:::i;:::-;:24;;;;:::i;:::-;:35;;;;:::i;:::-;:46;;;;:::i;:::-;:55;;;;:::i;:::-;22239:74;;21616:799;;;;;;;;;;;;;:::o;26783:505::-;26928:16;;;26942:1;26928:16;;;;;;;;26904:21;;26928:16;;;;;;;;;;-1:-1:-1;26928:16:0;26904:40;;26965:6;;;;;;;;;-1:-1:-1;;;;;26965:6:0;-1:-1:-1;;;;;26965:11:0;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26955:4;26960:1;26955:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;26955:23:0;;;-1:-1:-1;;;;;26955:23:0;;;;;27007:4;26989;26994:1;26989:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;26989:23:0;;;:7;;;;;;;;;:23;27049:6;;-1:-1:-1;;;27049:6:0;;;:57;27114:6;27136:1;27183:4;11177:42;27244:24;:15;27264:3;27244:19;:24::i;:::-;27049:230;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26833:455;26783:505;:::o;28888:564::-;29038:16;;;29052:1;29038:16;;;;;;;;29014:21;;29038:16;;;;;;;;;;-1:-1:-1;29038:16:0;29014:40;;29083:4;29065;29070:1;29065:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;29065:23:0;;;-1:-1:-1;;;;;29065:23:0;;;;;29109:6;;;;;;;;;-1:-1:-1;;;;;29109:6:0;-1:-1:-1;;;;;29109:11:0;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29099:4;29104:1;29099:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;29099:23:0;;;:7;;;;;;;;;:23;29167:6;;29135:53;;29152:4;;-1:-1:-1;;;29167:6:0;;;29176:11;29135:8;:53::i;:::-;29227:6;;:215;;-1:-1:-1;;;29227:215:0;;-1:-1:-1;;;29227:6:0;;;-1:-1:-1;;;;;29227:6:0;;:57;;:215;;29299:11;;29325:1;;29369:4;;29396;;29416:15;;29227:6;:215;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28385:495;28565:6;;28533:53;;28550:4;;-1:-1:-1;;;28565:6:0;;-1:-1:-1;;;;;28565:6:0;28574:11;28533:8;:53::i;:::-;28629:6;;-1:-1:-1;;;;;;;;28629:6:0;;;;:22;28659:9;28692:4;28712:11;28738:1;;28824:7;7494;7521:6;-1:-1:-1;;;;;7521:6:0;;7448:87;28824:7;28629:243;;;;;;-1:-1:-1;;;;;;28629:243:0;;;-1:-1:-1;;;;;19895:15:1;;;28629:243:0;;;19877:34:1;19927:18;;;19920:34;;;;19970:18;;;19963:34;;;;20013:18;;;20006:34;20077:15;;;20056:19;;;20049:44;28846:15:0;20109:19:1;;;20102:35;19811:19;;28629:243:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;28385:495;;:::o;18769:123::-;18847:4;18837:7;;:14;;;;;;;:::i;:::-;;;;-1:-1:-1;;18862:11:0;:22;;18880:4;;18862:11;:15;;:22;;18880:4;;18862:22;:::i;:::-;;;;-1:-1:-1;;;;18769:123:0:o;18900:282::-;19011:11;18986;:22;;;:36;;;;;;;:::i;:::-;;;;-1:-1:-1;;19056:4:0;19036:26;;;;:11;:26;;;;;;;;19033:93;;;19095:4;19079:22;;;;:7;:22;;;;;:35;;19103:11;;19079:22;:35;;19103:11;;19079:35;:::i;:::-;;;;-1:-1:-1;;19033:93:0;19152:4;19136:22;;;;:7;:22;;;;;:36;;19161:11;;19136:22;:36;;19161:11;;19136:36;:::i;19468:284::-;19575:10;19551:11;:21;;;:34;;;;;;;:::i;19760:293::-;19867:10;19843:11;:21;;;:34;;;;;;;:::i;:::-;;;;-1:-1:-1;;19905:16:0;;-1:-1:-1;;;;;19905:16:0;19893:29;;;;:11;:29;;;;;;;;19890:107;;;19956:16;;-1:-1:-1;;;;;19956:16:0;19948:25;;;;:7;:25;;;;;:37;;19975:10;;19948:25;:37;;19975:10;;19948:37;:::i;:::-;;;;-1:-1:-1;;19890:107:0;20015:16;;-1:-1:-1;;;;;20015:16:0;20007:25;;;;:7;:25;;;;;:38;;20035:10;;20007:25;:38;;20035:10;;20007:38;:::i;19190:270::-;19289:8;19267:11;:19;;;:30;;;;;;;:::i;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:131:1:-;-1:-1:-1;;;;;89:31:1;;79:42;;69:70;;135:1;132;125:12;150:247;209:6;262:2;250:9;241:7;237:23;233:32;230:52;;;278:1;275;268:12;230:52;317:9;304:23;336:31;361:5;336:31;:::i;402:548::-;514:4;543:2;572;561:9;554:21;604:6;598:13;647:6;642:2;631:9;627:18;620:34;672:1;682:140;696:6;693:1;690:13;682:140;;;791:14;;;787:23;;781:30;757:17;;;776:2;753:26;746:66;711:10;;682:140;;;686:3;871:1;866:2;857:6;846:9;842:22;838:31;831:42;941:2;934;930:7;925:2;917:6;913:15;909:29;898:9;894:45;890:54;882:62;;;;402:548;;;;:::o;955:315::-;1023:6;1031;1084:2;1072:9;1063:7;1059:23;1055:32;1052:52;;;1100:1;1097;1090:12;1052:52;1139:9;1126:23;1158:31;1183:5;1158:31;:::i;:::-;1208:5;1260:2;1245:18;;;;1232:32;;-1:-1:-1;;;955:315:1:o;2117:456::-;2194:6;2202;2210;2263:2;2251:9;2242:7;2238:23;2234:32;2231:52;;;2279:1;2276;2269:12;2231:52;2318:9;2305:23;2337:31;2362:5;2337:31;:::i;:::-;2387:5;-1:-1:-1;2444:2:1;2429:18;;2416:32;2457:33;2416:32;2457:33;:::i;:::-;2117:456;;2509:7;;-1:-1:-1;;;2563:2:1;2548:18;;;;2535:32;;2117:456::o;2786:180::-;2845:6;2898:2;2886:9;2877:7;2873:23;2869:32;2866:52;;;2914:1;2911;2904:12;2866:52;-1:-1:-1;2937:23:1;;2786:180;-1:-1:-1;2786:180:1:o;3160:118::-;3246:5;3239:13;3232:21;3225:5;3222:32;3212:60;;3268:1;3265;3258:12;3283:309;3348:6;3356;3409:2;3397:9;3388:7;3384:23;3380:32;3377:52;;;3425:1;3422;3415:12;3377:52;3461:9;3448:23;3438:33;;3521:2;3510:9;3506:18;3493:32;3534:28;3556:5;3534:28;:::i;:::-;3581:5;3571:15;;;3283:309;;;;;:::o;3597:454::-;3692:6;3700;3708;3716;3724;3777:3;3765:9;3756:7;3752:23;3748:33;3745:53;;;3794:1;3791;3784:12;3745:53;-1:-1:-1;;3817:23:1;;;3887:2;3872:18;;3859:32;;-1:-1:-1;3938:2:1;3923:18;;3910:32;;3989:2;3974:18;;3961:32;;-1:-1:-1;4040:3:1;4025:19;4012:33;;-1:-1:-1;3597:454:1;-1:-1:-1;3597:454:1:o;4056:241::-;4112:6;4165:2;4153:9;4144:7;4140:23;4136:32;4133:52;;;4181:1;4178;4171:12;4133:52;4220:9;4207:23;4239:28;4261:5;4239:28;:::i;4302:248::-;4370:6;4378;4431:2;4419:9;4410:7;4406:23;4402:32;4399:52;;;4447:1;4444;4437:12;4399:52;-1:-1:-1;;4470:23:1;;;4540:2;4525:18;;;4512:32;;-1:-1:-1;4302:248:1:o;4555:388::-;4623:6;4631;4684:2;4672:9;4663:7;4659:23;4655:32;4652:52;;;4700:1;4697;4690:12;4652:52;4739:9;4726:23;4758:31;4783:5;4758:31;:::i;:::-;4808:5;-1:-1:-1;4865:2:1;4850:18;;4837:32;4878:33;4837:32;4878:33;:::i;4948:382::-;5013:6;5021;5074:2;5062:9;5053:7;5049:23;5045:32;5042:52;;;5090:1;5087;5080:12;5042:52;5129:9;5116:23;5148:31;5173:5;5148:31;:::i;:::-;5198:5;-1:-1:-1;5255:2:1;5240:18;;5227:32;5268:30;5227:32;5268:30;:::i;5558:356::-;5760:2;5742:21;;;5779:18;;;5772:30;5838:34;5833:2;5818:18;;5811:62;5905:2;5890:18;;5558:356::o;5919:184::-;5989:6;6042:2;6030:9;6021:7;6017:23;6013:32;6010:52;;;6058:1;6055;6048:12;6010:52;-1:-1:-1;6081:16:1;;5919:184;-1:-1:-1;5919:184:1:o;6387:245::-;6454:6;6507:2;6495:9;6486:7;6482:23;6478:32;6475:52;;;6523:1;6520;6513:12;6475:52;6555:9;6549:16;6574:28;6596:5;6574:28;:::i;7048:127::-;7109:10;7104:3;7100:20;7097:1;7090:31;7140:4;7137:1;7130:15;7164:4;7161:1;7154:15;7180:217;7220:1;7246;7236:132;;7290:10;7285:3;7281:20;7278:1;7271:31;7325:4;7322:1;7315:15;7353:4;7350:1;7343:15;7236:132;-1:-1:-1;7382:9:1;;7180:217::o;8101:127::-;8162:10;8157:3;8153:20;8150:1;8143:31;8193:4;8190:1;8183:15;8217:4;8214:1;8207:15;8233:128;8300:9;;;8321:11;;;8318:37;;;8335:18;;:::i;8366:127::-;8427:10;8422:3;8418:20;8415:1;8408:31;8458:4;8455:1;8448:15;8482:4;8479:1;8472:15;8498:135;8537:3;8558:17;;;8555:43;;8578:18;;:::i;:::-;-1:-1:-1;8625:1:1;8614:13;;8498:135::o;8638:125::-;8703:9;;;8724:10;;;8721:36;;;8737:18;;:::i;9585:251::-;9655:6;9708:2;9696:9;9687:7;9683:23;9679:32;9676:52;;;9724:1;9721;9714:12;9676:52;9756:9;9750:16;9775:31;9800:5;9775:31;:::i;11219:168::-;11292:9;;;11323;;11340:15;;;11334:22;;11320:37;11310:71;;11361:18;;:::i;11392:422::-;11481:1;11524:5;11481:1;11538:270;11559:7;11549:8;11546:21;11538:270;;;11618:4;11614:1;11610:6;11606:17;11600:4;11597:27;11594:53;;;11627:18;;:::i;:::-;11677:7;11667:8;11663:22;11660:55;;;11697:16;;;;11660:55;11776:22;;;;11736:15;;;;11538:270;;;11542:3;11392:422;;;;;:::o;11819:806::-;11868:5;11898:8;11888:80;;-1:-1:-1;11939:1:1;11953:5;;11888:80;11987:4;11977:76;;-1:-1:-1;12024:1:1;12038:5;;11977:76;12069:4;12087:1;12082:59;;;;12155:1;12150:130;;;;12062:218;;12082:59;12112:1;12103:10;;12126:5;;;12150:130;12187:3;12177:8;12174:17;12171:43;;;12194:18;;:::i;:::-;-1:-1:-1;;12250:1:1;12236:16;;12265:5;;12062:218;;12364:2;12354:8;12351:16;12345:3;12339:4;12336:13;12332:36;12326:2;12316:8;12313:16;12308:2;12302:4;12299:12;12295:35;12292:77;12289:159;;;-1:-1:-1;12401:19:1;;;12433:5;;12289:159;12480:34;12505:8;12499:4;12480:34;:::i;:::-;12550:6;12546:1;12542:6;12538:19;12529:7;12526:32;12523:58;;;12561:18;;:::i;:::-;12599:20;;11819:806;-1:-1:-1;;;11819:806:1:o;12630:140::-;12688:5;12717:47;12758:4;12748:8;12744:19;12738:4;12717:47;:::i;17968:461::-;18021:3;18059:5;18053:12;18086:6;18081:3;18074:19;18112:4;18141:2;18136:3;18132:12;18125:19;;18178:2;18171:5;18167:14;18199:1;18209:195;18223:6;18220:1;18217:13;18209:195;;;18288:13;;-1:-1:-1;;;;;18284:39:1;18272:52;;18344:12;;;;18379:15;;;;18320:1;18238:9;18209:195;;;-1:-1:-1;18420:3:1;;17968:461;-1:-1:-1;;;;;17968:461:1:o;18434:510::-;18705:6;18694:9;18687:25;18748:3;18743:2;18732:9;18728:18;18721:31;18668:4;18769:57;18821:3;18810:9;18806:19;18798:6;18769:57;:::i;:::-;-1:-1:-1;;;;;18862:32:1;;;;18857:2;18842:18;;18835:60;-1:-1:-1;18926:2:1;18911:18;18904:34;18761:65;18434:510;-1:-1:-1;;18434:510:1:o;18949:582::-;19248:6;19237:9;19230:25;19291:6;19286:2;19275:9;19271:18;19264:34;19334:3;19329:2;19318:9;19314:18;19307:31;19211:4;19355:57;19407:3;19396:9;19392:19;19384:6;19355:57;:::i;:::-;-1:-1:-1;;;;;19448:32:1;;;;19443:2;19428:18;;19421:60;-1:-1:-1;19512:3:1;19497:19;19490:35;19347:65;18949:582;-1:-1:-1;;;18949:582:1:o;20148:306::-;20236:6;20244;20252;20305:2;20293:9;20284:7;20280:23;20276:32;20273:52;;;20321:1;20318;20311:12;20273:52;20350:9;20344:16;20334:26;;20400:2;20389:9;20385:18;20379:25;20369:35;;20444:2;20433:9;20429:18;20423:25;20413:35;;20148:306;;;;;:::o
Swarm Source
ipfs://51e0f8cbd4149614e5e3bd4baec2db2516561bd84e3ed60d490da270432bbe48
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.