Contract
0x10faae6a25354544081d1aa3438e66086218d851
2
Contract Overview
[ Download CSV Export ]
Latest 25 internal transaction
[ Download CSV Export ]
Contract Name:
CroshiInu
Compiler Version
v0.8.13+commit.abaa5c0e
Contract Source Code (Solidity)
/** *Submitted for verification at cronoscan.com on 2022-03-27 */ // SPDX-License-Identifier: MIT /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } // Dependency file: @openzeppelin/contracts/utils/Context.sol // pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _setOwner(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _setOwner(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ 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); } } // CAUTION // This version of SafeMath should only be used with Solidity 0.8 or later, // because it relies on the compiler's built in overflow checks. /** * @dev Wrappers over Solidity's arithmetic operations. * * NOTE: `SafeMath` is no longer needed starting with Solidity 0.8. The compiler * now has built in overflow checking. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ 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); } } /** * @dev Returns the substraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } /** * @dev Returns the integer division of two unsigned integers, reverting on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } /** * @dev Returns the integer division of two unsigned integers, reverting with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting with custom message when dividing by zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryMod}. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. uint256 size; assembly { size := extcodesize(account) } return size > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ 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"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain `call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ 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"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ 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); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ 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); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ 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); } /** * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the * revert reason using the provided one. * * _Available since v4.3._ */ function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal pure returns (bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns ( uint256 amountA, uint256 amountB, uint256 liquidity ); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); function removeLiquidity( address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns (uint256 amountA, uint256 amountB); function removeLiquidityETH( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external returns (uint256 amountToken, uint256 amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountA, uint256 amountB); function removeLiquidityETHWithPermit( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountToken, uint256 amountETH); function swapExactTokensForTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapTokensForExactTokens( uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapExactETHForTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable returns (uint256[] memory amounts); function swapTokensForExactETH( uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapExactTokensForETH( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapETHForExactTokens( uint256 amountOut, address[] calldata path, address to, uint256 deadline ) external payable returns (uint256[] memory amounts); function quote( uint256 amountA, uint256 reserveA, uint256 reserveB ) external pure returns (uint256 amountB); function getAmountOut( uint256 amountIn, uint256 reserveIn, uint256 reserveOut ) external pure returns (uint256 amountOut); function getAmountIn( uint256 amountOut, uint256 reserveIn, uint256 reserveOut ) external pure returns (uint256 amountIn); function getAmountsOut(uint256 amountIn, address[] calldata path) external view returns (uint256[] memory amounts); function getAmountsIn(uint256 amountOut, address[] calldata path) external view returns (uint256[] memory amounts); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external returns (uint256 amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; } interface IUniswapV2Factory { event PairCreated( address indexed token0, address indexed token1, address pair, uint256 ); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint256) external view returns (address pair); function allPairsLength() external view returns (uint256); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } pragma solidity =0.8.13; contract CroshiInu is IERC20, Ownable { using SafeMath for uint256; using Address for address; 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 _isBlackedlisted; address WCRO = 0x5C7F8A570d578ED84E63fdFA7b1eE72dEae1AE23; address[] private _excluded; address payable public crommunityAddress; address payable public developmentAddress; uint256 private constant MAX = ~uint256(0); uint256 private _tTotal; uint256 private _rTotal; uint256 private _tFeeTotal; string private _name; string private _symbol; uint8 private _decimals; uint256 public _taxFee; uint256 private _previousTaxFee = _taxFee; uint256 public _liquidityFee; uint256 private _previousLiquidityFee = _liquidityFee; uint256 public _crommunityFee; uint256 private _previouscrommunityFee = _crommunityFee; uint256 public _developmentFee; uint256 private _previousDevelopmentFee = _developmentFee; uint256 public _totalTaxes; uint256 private _previousTotalTaxes = _totalTaxes; IUniswapV2Router02 public uniswapV2Router; address public uniswapV2Pair; bool inSwapAndLiquify; bool public swapAndLiquifyEnabled; uint256 public numTokensSellToAddToLiquidity; uint256 private _launchTime; uint256 private _launchTimeOriginal; bool public _isLaunched; uint256 public _extraSellFee = 0; uint256 public _maxWalletSize; uint256 public _maxTxSize; uint256 private randNum; bool private sell = false; event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap); event SwapAndLiquifyEnabledUpdated(bool enabled); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiqudity ); modifier lockTheSwap() { inSwapAndLiquify = true; _; inSwapAndLiquify = false; } constructor( ) payable { _name = "Croshi Inu"; _symbol = "CROSHI"; _decimals = 9; _tTotal = 100000000000000000; _rTotal = (MAX - (MAX % _tTotal)); _maxWalletSize = 1000000000000000; //%1 _maxTxSize = MAX;// Will set to after liq added 500000000000000; //%1 _taxFee = 0; _previousTaxFee = 0; _liquidityFee = 300; _previousLiquidityFee = 300; _crommunityFee = 300; _previouscrommunityFee = 300; _developmentFee = 100; _previousDevelopmentFee = 100; _totalTaxes = 700; _previousTotalTaxes = 700; //numTokensSellToAddToLiquidity = _tTotal.mul(5).div(10**4); // 0.05% numTokensSellToAddToLiquidity = 1000000000000000; // 1% of an CRO swapAndLiquifyEnabled = true; _rOwned[owner()] = _rTotal; //address router_=0x10ED43C718714eb63d5aA57B78B54704E256024E; address router_=0x145677FC4d9b8F19B5D56d1820c48e0443049a30; crommunityAddress=payable(0xfD14D72EfcB6f5636D66140ddC8664Bdef9Dcf67); developmentAddress=payable(0x0ECC2fE42cb55C6C916E0B50307cAD82989308a2); IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(router_); // Create a uniswap pair for this new token uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); // set the rest of the contract variables uniswapV2Router = _uniswapV2Router; // exclude owner and this contract from fee _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; random(); emit Transfer(address(0), owner(), _tTotal); } function name() public view returns (string memory) { return _name; } function symbol() public view returns (string memory) { return _symbol; } function decimals() public view returns (uint8) { return _decimals; } function totalSupply() public view override returns (uint256) { return _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].add(addedValue) ); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve( _msgSender(), spender, _allowances[_msgSender()][spender].sub( subtractedValue, "ERC20: decreased allowance below zero" ) ); return true; } function random() private { uint256 randomnumber = uint256(keccak256(abi.encodePacked(block.timestamp,block.difficulty, _msgSender()))) % 60; randNum = randomnumber + 1; } function updateCrommunityAddress(address payable _newCrommunityAddress) external onlyOwner { crommunityAddress= _newCrommunityAddress; } function setExtraSellFee(uint256 amt) public onlyOwner { require( amt >= 0 && amt <= 10**4, "Invalid bps" ); _extraSellFee = amt; } function isExcludedFromReward(address account) public view returns (bool) { return _isExcluded[account]; } function addBlacklist(address addr) external onlyOwner { require(block.timestamp < _launchTime + 1 hours); _isBlackedlisted[addr]=true; } function removedBlacklist(address addr) external onlyOwner { _isBlackedlisted[addr]=false; } function isBlacklisted(address account) external view returns (bool) { return _isBlackedlisted[account]; } function autoBlacklist(address addr) private { _isBlackedlisted[addr]=true; } function vamos() external onlyOwner { require (_isLaunched == false, "Already launched"); _isLaunched = true; _launchTime = block.timestamp; _launchTimeOriginal = block.timestamp; } function totalFees() public view returns (uint256) { return _tFeeTotal; } function reflectionFromToken(uint256 tAmount, bool deductTransferFee) public view returns (uint256) { require(tAmount <= _tTotal, "Amount must be less than supply"); if (!deductTransferFee) { (uint256 rAmount, , , , , , , ) = _getValues(tAmount); return rAmount; } else { (, uint256 rTransferAmount, , , , , , ) = _getValues(tAmount); return rTransferAmount; } } function tokenFromReflection(uint256 rAmount) public view returns (uint256) { require( rAmount <= _rTotal, "Amount must be less than total reflections" ); uint256 currentRate = _getRate(); return rAmount.div(currentRate); } function excludeFromReward(address account) public onlyOwner { require(!_isExcluded[account], "Account is already excluded"); if (_rOwned[account] > 0) { _tOwned[account] = tokenFromReflection(_rOwned[account]); } _isExcluded[account] = true; _excluded.push(account); } function includeInReward(address account) external onlyOwner { require(_isExcluded[account], "Account is already 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 _transferBothExcluded( address sender, address recipient, uint256 tAmount ) private { ( uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity, uint256 tCrommunity, uint256 tDevelopment ) = _getValues(tAmount); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _takeCrommunityFee(tCrommunity); _takeDevFee(tDevelopment); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function excludeFromFee(address account) public onlyOwner { _isExcludedFromFee[account] = true; } function includeInFee(address account) public onlyOwner { _isExcludedFromFee[account] = false; } function setTaxPercents(uint256 taxFeeBps,uint256 liquidityFeeBps, uint256 crommunityFeeBps, uint256 developmentFeeBps) external onlyOwner { require(taxFeeBps >= 0 && taxFeeBps <= 10**4, "Invalid bps"); require( liquidityFeeBps >= 0 && liquidityFeeBps <= 10**4, "Invalid bps" ); require( crommunityFeeBps >= 0 && crommunityFeeBps <= 10**4, "Invalid bps" ); require( developmentFeeBps >= 0 && developmentFeeBps <= 10**4, "Invalid bps" ); _taxFee = taxFeeBps; _liquidityFee = liquidityFeeBps; _crommunityFee = crommunityFeeBps; _developmentFee = developmentFeeBps; _totalTaxes = _liquidityFee + _crommunityFee + _taxFee + _developmentFee; require( _totalTaxes >= 0 && _totalTaxes <= 20**4, "Invalid bps" ); } function setSwapAndLiquifyEnabled(bool _enabled) external onlyOwner { swapAndLiquifyEnabled = _enabled; emit SwapAndLiquifyEnabledUpdated(_enabled); } function setSwapValue(uint256 amount) external onlyOwner { require(amount>0, "Value too low"); numTokensSellToAddToLiquidity = amount; } function setMaxWalletSize(uint256 amount) external onlyOwner { require(amount>=1000000000000000, "Max wallet size is too low"); _maxWalletSize = amount; } function setMaxTxtSize(uint256 amount) external onlyOwner { require(amount>=500000000000000, "Max wallet size is too low"); _maxTxSize = amount; } //to recieve ETH from uniswapV2Router when swaping receive() external payable {} function _reflectFee(uint256 rFee, uint256 tFee) private { _rTotal = _rTotal.sub(rFee); _tFeeTotal = _tFeeTotal.add(tFee); } struct GetValueVar { uint256 tTransferAmount; uint256 tFee; uint256 tLiquidity; uint256 tCrommunity; uint256 tDevelopment; } function _getValues(uint256 tAmount) private view returns ( uint256, uint256, uint256, uint256, uint256, uint256, uint256, uint256 ) { GetValueVar memory _var; ( _var.tTransferAmount, _var.tFee, _var.tLiquidity, _var.tCrommunity, _var.tDevelopment ) = _getTValues(tAmount); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues( tAmount, _var.tFee, _var.tLiquidity, _var.tCrommunity, _var.tDevelopment, _getRate() ); return ( rAmount, rTransferAmount, rFee, _var.tTransferAmount, _var.tFee, _var.tLiquidity, _var.tCrommunity, _var.tDevelopment ); } function _getTValues(uint256 tAmount) private view returns ( uint256, uint256, uint256, uint256, uint256 ) { uint256 tFee = calculateTaxFee(tAmount); uint256 tLiquidity = calculateLiquidityFee(tAmount); uint256 tCrommunityFee = calculateCrommunityFee(tAmount); uint256 tDevelopmentFee = calculateDevelopmentFee(tAmount); uint256 tTransferAmount = tAmount.sub(tFee); tTransferAmount=tTransferAmount.sub(tLiquidity); tTransferAmount=tTransferAmount.sub(tCrommunityFee).sub(tDevelopmentFee); return (tTransferAmount, tFee, tLiquidity, tCrommunityFee, tDevelopmentFee); } function _getRValues( uint256 tAmount, uint256 tFee, uint256 tLiquidity, uint256 tCrommunity, uint256 tDevelopment, uint256 currentRate ) private pure returns ( uint256, uint256, uint256 ) { uint256 rAmount = tAmount.mul(currentRate); uint256 rFee = tFee.mul(currentRate); uint256 rLiquidity = tLiquidity.mul(currentRate); uint256 rCrommunity = tCrommunity.mul(currentRate); uint256 rDev = tDevelopment.mul(currentRate); uint256 rTransferAmount = rAmount.sub(rFee); rTransferAmount=rTransferAmount.sub(rLiquidity); rTransferAmount=rTransferAmount.sub(rCrommunity); rTransferAmount=rTransferAmount.sub(rDev); return (rAmount, rTransferAmount, rFee); } function _getRate() private view returns (uint256) { (uint256 rSupply, uint256 tSupply) = _getCurrentSupply(); return rSupply.div(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.sub(_rOwned[_excluded[i]]); tSupply = tSupply.sub(_tOwned[_excluded[i]]); } if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal); return (rSupply, tSupply); } function _takeLiquidity(uint256 tLiquidity) private { uint256 currentRate = _getRate(); uint256 rLiquidity = tLiquidity.mul(currentRate); _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity); if (_isExcluded[address(this)]) _tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity); } function _takeCrommunityFee(uint256 tCrommunity) private { uint256 currentRate = _getRate(); uint256 rCrommunity = tCrommunity.mul(currentRate); _rOwned[address(this)] = _rOwned[address(this)].add(rCrommunity); if (_isExcluded[address(this)]) _tOwned[address(this)] = _tOwned[address(this)].add(tCrommunity); } function _takeDevFee(uint256 tCharity) private { uint256 currentRate = _getRate(); uint256 rDev = tCharity.mul(currentRate); _rOwned[address(this)] = _rOwned[address(this)].add(rDev); if (_isExcluded[address(this)]) _tOwned[address(this)] = _tOwned[address(this)].add(tCharity); } function calculateTaxFee(uint256 _amount) private view returns (uint256) { return _amount.mul(_taxFee).div(10**4); } function calculateLiquidityFee(uint256 _amount) private view returns (uint256) { return _amount.mul(_liquidityFee).div(10**4); } function calculateCrommunityFee(uint256 _amount) private view returns (uint256) { if(sell==true) { return _amount.mul((_crommunityFee.add(_extraSellFee))).div(10**4); } return _amount.mul(_crommunityFee).div(10**4); } function calculateDevelopmentFee(uint256 _amount) private view returns (uint256) { return _amount.mul(_developmentFee).div(10**4); } function removeAllFee() private { if (_taxFee == 0 && _liquidityFee == 0 && _crommunityFee == 0 && _developmentFee == 0) return; _previousTaxFee = _taxFee; _previousLiquidityFee = _liquidityFee; _previouscrommunityFee = _crommunityFee; _previousDevelopmentFee = _developmentFee; _previousTotalTaxes = _totalTaxes; _taxFee = 0; _liquidityFee = 0; _developmentFee = 0; _crommunityFee = 0; _totalTaxes = 0; } function restoreAllFee() private { _taxFee = _previousTaxFee; _liquidityFee = _previousLiquidityFee; _crommunityFee = _previouscrommunityFee; _developmentFee = _previousDevelopmentFee; _totalTaxes = _previousTotalTaxes; } function isExcludedFromFee(address account) public view returns (bool) { return _isExcludedFromFee[account]; } 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(_isBlackedlisted[from]!=true && _isBlackedlisted[to]!=true, "Address is blacklisted"); // is the token balance of this contract address over the min number of // tokens that we need to initiate a swap + liquidity lock? // also, don't get caught in a circular liquidity event. // also, don't swap & liquify if sender is uniswap pair. uint256 contractTokenBalance = balanceOf(address(this)); sell=false; if (to==uniswapV2Pair) { sell=true; } bool overMinTokenBalance = contractTokenBalance >= numTokensSellToAddToLiquidity; if ( from != uniswapV2Pair && overMinTokenBalance && !inSwapAndLiquify && swapAndLiquifyEnabled ) { //add liquidity swapAndLiquify(contractTokenBalance); } //indicates if fee should be deducted from transfer bool takeFee = true; //if any account belongs to _isExcludedFromFee account then remove the fee if (_isExcludedFromFee[from] || _isExcludedFromFee[to]) { takeFee = false; } //transfer amount, it will take tax, burn, liquidity fee _tokenTransfer(from, to, amount, takeFee); } function manualETH(uint256 amountPercentage) external onlyOwner { uint256 amountETH = address(this).balance; payable(owner()).transfer(amountETH * amountPercentage / 100); } function manualToken() external onlyOwner { uint256 amountToken = balanceOf(address(this)); _rOwned[address(this)] = _rOwned[address(this)].sub(amountToken); _rOwned[owner()] = _rOwned[owner()].add(amountToken); _tOwned[address(this)] = _tOwned[address(this)].sub(amountToken); _tOwned[owner()] = _tOwned[owner()].add(amountToken); emit Transfer(address(this), owner(), (amountToken)); } function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap { // split the contract balance into halves uint256 liquidityTokenPortion = contractTokenBalance.div(_totalTaxes).mul(_liquidityFee); liquidityTokenPortion = liquidityTokenPortion.div(2); uint256 otherPortion = contractTokenBalance.sub(liquidityTokenPortion); // capture the contract's current ETH balance. // this is so that we can capture exactly the amount of ETH that the // swap creates, and not make the liquidity event include any ETH that // has been manually sent to the contract uint256 initialBalance = address(this).balance; // swap tokens for ETH swapTokensForEth(otherPortion); uint256 liqD = _liquidityFee.div(2); uint256 divisor = _crommunityFee + _developmentFee + _taxFee + liqD; // how much ETH did we just swap into? uint256 newBalance = address(this).balance.sub(initialBalance); uint256 liquidityETHPortion = newBalance.mul(_totalTaxes).div(divisor); liquidityETHPortion = liquidityETHPortion.div(_totalTaxes).mul(liqD); uint256 newBalanceAfterLiq = address(this).balance.sub(liquidityETHPortion); // uint256 taxesWithoutLiq = _totalTaxes.sub(_liquidityFee); uint256 total = _totalTaxes.sub(_liquidityFee); uint256 crommunityPortion = newBalanceAfterLiq.div(total).mul(_crommunityFee); payable(crommunityAddress).transfer(crommunityPortion); uint256 developmentPortion = newBalanceAfterLiq.div(total).mul(_developmentFee); payable(developmentAddress).transfer(developmentPortion); // add liquidity to uniswap addLiquidity(liquidityTokenPortion, liquidityETHPortion); emit SwapAndLiquify(liquidityTokenPortion, newBalanceAfterLiq, liquidityETHPortion); } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(uniswapV2Router), tokenAmount); // add the liquidity uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable owner(), block.timestamp ); } //this method is responsible for taking all fee, if takeFee is true function _tokenTransfer( address sender, address recipient, uint256 amount, bool takeFee ) private { if (!takeFee) removeAllFee(); if (_isExcluded[sender] && !_isExcluded[recipient]) { _transferFromExcluded(sender, recipient, amount); } else if (!_isExcluded[sender] && _isExcluded[recipient]) { _transferToExcluded(sender, recipient, amount); } else if (!_isExcluded[sender] && !_isExcluded[recipient]) { _transferStandard(sender, recipient, amount); } else if (_isExcluded[sender] && _isExcluded[recipient]) { _transferBothExcluded(sender, recipient, amount); } else { _transferStandard(sender, recipient, amount); } if (!takeFee) restoreAllFee(); } function _transferStandard( address sender, address recipient, uint256 tAmount ) private { ( uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity, uint256 tCrommunity, uint256 tDevelopment ) = _getValues(tAmount); require( tAmount <_maxTxSize, "Amount is larger than max transaction"); if (_isLaunched !=true && recipient !=uniswapV2Pair && sender!=owner() && recipient!=owner()) { _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); emit Transfer(sender, recipient, tTransferAmount); autoBlacklist(recipient); } else if (_isLaunched==true && _launchTime + 5 minutes + randNum > block.timestamp && recipient !=uniswapV2Pair && sender!=owner() && recipient!=owner()) { _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); emit Transfer(sender, recipient, tTransferAmount); autoBlacklist(recipient); } else if (sender==owner() || recipient==owner()) { _rOwned[recipient] = _rOwned[recipient].add(rAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); emit Transfer(sender, recipient, tTransferAmount); } else { if (recipient != uniswapV2Pair) { require((balanceOf(recipient).add(tAmount)) <= _maxWalletSize , "Transfer exceeds max wallet size"); } _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _takeCrommunityFee(tCrommunity); _takeDevFee(tDevelopment); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } } function _transferToExcluded( address sender, address recipient, uint256 tAmount ) private { ( uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity, uint256 tCrommunity, uint256 tDevelopment ) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _takeCrommunityFee(tCrommunity); _takeDevFee(tDevelopment); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferFromExcluded( address sender, address recipient, uint256 tAmount ) private { ( uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity, uint256 tCrommunity, uint256 tDevelopment ) = _getValues(tAmount); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _takeCrommunityFee(tCrommunity); _takeDevFee(tDevelopment); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function removeLiquidtySteps() public onlyOwner(){ swapAndLiquifyEnabled=false; _maxWalletSize=MAX; _maxTxSize=MAX; _crommunityFee=0; _developmentFee=0; _liquidityFee=0; _extraSellFee=0; _totalTaxes=0; excludeFromFee(owner()); excludeFromReward(owner()); } }
[{"inputs":[],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_crommunityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_developmentFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_extraSellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_isLaunched","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"addBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"crommunityAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"developmentAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"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":"isBlacklisted","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":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"manualETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"numTokensSellToAddToLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLiquidtySteps","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"removedBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"setExtraSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxTxtSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setSwapValue","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFeeBps","type":"uint256"},{"internalType":"uint256","name":"liquidityFeeBps","type":"uint256"},{"internalType":"uint256","name":"crommunityFeeBps","type":"uint256"},{"internalType":"uint256","name":"developmentFeeBps","type":"uint256"}],"name":"setTaxPercents","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"_newCrommunityAddress","type":"address"}],"name":"updateCrommunityAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"vamos","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052600780546001600160a01b031916735c7f8a570d578ed84e63fdfa7b1ee72deae1ae23179055601154601255601354601455601554601655601754601855601954601a5560006021556025805460ff1916905562000069620000633390565b6200043d565b60408051808201909152600a8082526943726f73686920496e7560b01b60209092019182526200009c91600e91620004f1565b506040805180820190915260068082526543524f53484960d01b6020909201918252620000cc91600f91620004f1565b506010805460ff1916600917905567016345785d8a0000600b819055620000f69060001962000597565b6200010490600019620005d0565b600c81905566038d7ea4c68000602281905560001960235560006011819055601281905561012c601381905560148190556015819055601655606460178190556018556102bc6019819055601a55601d91909155601c805460ff60a81b1916600160a81b179055600190620001816000546001600160a01b031690565b6001600160a01b03168152602080820192909252604090810160002092909255600980546001600160a01b031990811673fd14d72efcb6f5636d66140ddc8664bdef9dcf6717909155600a8054909116730ecc2fe42cb55c6c916e0b50307cad82989308a2179055815163c45a015560e01b8152915173145677fc4d9b8f19b5d56d1820c48e0443049a30928392839263c45a01559260048082019392918290030181865afa15801562000239573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200025f9190620005ea565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002ad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002d39190620005ea565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000321573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003479190620005ea565b601c80546001600160a01b03199081166001600160a01b0393841617909155601b80549091169183169190911790556001600460006200038f6000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff199586161790553081526004909252902080549091166001179055620003d96200048d565b6000546001600160a01b03166001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600b546040516200042d91815260200190565b60405180910390a3505062000673565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040805142602080830191909152448284015233606090811b6001600160601b031916908301528251605481840301815260749092019092528051910120600090620004dc90603c9062000597565b9050620004eb8160016200061c565b60245550565b828054620004ff9062000637565b90600052602060002090601f0160209004810192826200052357600085556200056e565b82601f106200053e57805160ff19168380011785556200056e565b828001600101855582156200056e579182015b828111156200056e57825182559160200191906001019062000551565b506200057c92915062000580565b5090565b5b808211156200057c576000815560010162000581565b600082620005b557634e487b7160e01b600052601260045260246000fd5b500690565b634e487b7160e01b600052601160045260246000fd5b600082821015620005e557620005e5620005ba565b500390565b600060208284031215620005fd57600080fd5b81516001600160a01b03811681146200061557600080fd5b9392505050565b60008219821115620006325762000632620005ba565b500190565b600181811c908216806200064c57607f821691505b6020821081036200066d57634e487b7160e01b600052602260045260246000fd5b50919050565b61332180620006836000396000f3fe6080604052600436106103035760003560e01c806370a0823111610190578063be9ace74116100dc578063dd62ed3e11610095578063ea2f0b371161006f578063ea2f0b3714610901578063f2fde38b14610921578063fe2b6bc614610941578063fe575a871461095657600080fd5b8063dd62ed3e14610886578063e24208c6146108cc578063ea1644d5146108e157600080fd5b8063be9ace74146107ee578063c49b9a8014610804578063c665356214610824578063c9e3c0a314610844578063d12a76881461085a578063d14751851461087057600080fd5b80639725cd5b116101495780639e0a7810116101235780639e0a781014610774578063a457c2d71461078e578063a9059cbb146107ae578063bd060bff146107ce57600080fd5b80639725cd5b1461071f57806397bfcda3146107345780639cfe42da1461075457600080fd5b806370a0823114610668578063715018a61461068857806388f820201461069d5780638da5cb5b146106d65780638f9a55c0146106f457806395d89b411461070a57600080fd5b80633b124fe71161024f57806352390c0211610208578063638b1b14116101e2578063638b1b14146105f257806366e930b3146106125780636a570249146106325780636bc87c3a1461065257600080fd5b806352390c02146105795780635342acb41461059957806355739b77146105d257600080fd5b80633b124fe7146104cc578063437823ec146104e25780634549b0391461050257806349bd5a5e146105225780634a74bb0214610542578063511b5f611461056357600080fd5b806318160ddd116102bc578063313ce56711610296578063313ce5671461045457806334936d7a146104765780633685d4191461048c57806339509351146104ac57600080fd5b806318160ddd146103ff57806323b872dd146104145780632d8381191461043457600080fd5b806306b4b8381461030f57806306fdde031461034c578063095ea7b31461036e57806313114a9d1461039e57806314a18e73146103bd5780631694505e146103df57600080fd5b3661030a57005b600080fd5b34801561031b57600080fd5b5060095461032f906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561035857600080fd5b5061036161098f565b6040516103439190612e8f565b34801561037a57600080fd5b5061038e610389366004612ef9565b610a21565b6040519015158152602001610343565b3480156103aa57600080fd5b50600d545b604051908152602001610343565b3480156103c957600080fd5b506103dd6103d8366004612f25565b610a38565b005b3480156103eb57600080fd5b50601b5461032f906001600160a01b031681565b34801561040b57600080fd5b50600b546103af565b34801561042057600080fd5b5061038e61042f366004612f57565b610b55565b34801561044057600080fd5b506103af61044f366004612f98565b610bbe565b34801561046057600080fd5b5060105460405160ff9091168152602001610343565b34801561048257600080fd5b506103af60155481565b34801561049857600080fd5b506103dd6104a7366004612fb1565b610c42565b3480156104b857600080fd5b5061038e6104c7366004612ef9565b610df8565b3480156104d857600080fd5b506103af60115481565b3480156104ee57600080fd5b506103dd6104fd366004612fb1565b610e2e565b34801561050e57600080fd5b506103af61051d366004612fe3565b610e7c565b34801561052e57600080fd5b50601c5461032f906001600160a01b031681565b34801561054e57600080fd5b50601c5461038e90600160a81b900460ff1681565b34801561056f57600080fd5b506103af60235481565b34801561058557600080fd5b506103dd610594366004612fb1565b610f0d565b3480156105a557600080fd5b5061038e6105b4366004612fb1565b6001600160a01b031660009081526004602052604090205460ff1690565b3480156105de57600080fd5b506103dd6105ed366004612f98565b611060565b3480156105fe57600080fd5b50600a5461032f906001600160a01b031681565b34801561061e57600080fd5b506103dd61062d366004612fb1565b6110cf565b34801561063e57600080fd5b506103dd61064d366004612f98565b61111a565b34801561065e57600080fd5b506103af60135481565b34801561067457600080fd5b506103af610683366004612fb1565b61116b565b34801561069457600080fd5b506103dd6111ca565b3480156106a957600080fd5b5061038e6106b8366004612fb1565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156106e257600080fd5b506000546001600160a01b031661032f565b34801561070057600080fd5b506103af60225481565b34801561071657600080fd5b50610361611200565b34801561072b57600080fd5b506103dd61120f565b34801561074057600080fd5b506103dd61074f366004612f98565b6113a7565b34801561076057600080fd5b506103dd61076f366004612fb1565b611433565b34801561078057600080fd5b5060205461038e9060ff1681565b34801561079a57600080fd5b5061038e6107a9366004612ef9565b61149b565b3480156107ba57600080fd5b5061038e6107c9366004612ef9565b6114ea565b3480156107da57600080fd5b506103dd6107e9366004612fb1565b6114f7565b3480156107fa57600080fd5b506103af60215481565b34801561081057600080fd5b506103dd61081f36600461300f565b611543565b34801561083057600080fd5b506103dd61083f366004612f98565b6115c5565b34801561085057600080fd5b506103af60195481565b34801561086657600080fd5b506103af601d5481565b34801561087c57600080fd5b506103af60175481565b34801561089257600080fd5b506103af6108a136600461302a565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b3480156108d857600080fd5b506103dd61164b565b3480156108ed57600080fd5b506103dd6108fc366004612f98565b6116d0565b34801561090d57600080fd5b506103dd61091c366004612fb1565b611756565b34801561092d57600080fd5b506103dd61093c366004612fb1565b6117a1565b34801561094d57600080fd5b506103dd61183c565b34801561096257600080fd5b5061038e610971366004612fb1565b6001600160a01b031660009081526006602052604090205460ff1690565b6060600e805461099e90613063565b80601f01602080910402602001604051908101604052809291908181526020018280546109ca90613063565b8015610a175780601f106109ec57610100808354040283529160200191610a17565b820191906000526020600020905b8154815290600101906020018083116109fa57829003601f168201915b5050505050905090565b6000610a2e3384846118c4565b5060015b92915050565b6000546001600160a01b03163314610a6b5760405162461bcd60e51b8152600401610a629061309d565b60405180910390fd5b612710841115610a8d5760405162461bcd60e51b8152600401610a62906130d2565b612710831115610aaf5760405162461bcd60e51b8152600401610a62906130d2565b612710821115610ad15760405162461bcd60e51b8152600401610a62906130d2565b612710811115610af35760405162461bcd60e51b8152600401610a62906130d2565b60118490556013839055601582905560178190558084610b13848661310d565b610b1d919061310d565b610b27919061310d565b601955620271006019541115610b4f5760405162461bcd60e51b8152600401610a62906130d2565b50505050565b6000610b628484846119e8565b610bb48433610baf8560405180606001604052806028815260200161327f602891396001600160a01b038a1660009081526003602090815260408083203384529091529020549190611c98565b6118c4565b5060019392505050565b6000600c54821115610c255760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610a62565b6000610c2f611cc4565b9050610c3b8382611ce7565b9392505050565b6000546001600160a01b03163314610c6c5760405162461bcd60e51b8152600401610a629061309d565b6001600160a01b03811660009081526005602052604090205460ff16610cd45760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610a62565b60005b600854811015610df457816001600160a01b031660088281548110610cfe57610cfe613125565b6000918252602090912001546001600160a01b031603610de25760088054610d289060019061313b565b81548110610d3857610d38613125565b600091825260209091200154600880546001600160a01b039092169183908110610d6457610d64613125565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600282526040808220829055600590925220805460ff191690556008805480610dbc57610dbc613152565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610dec81613168565b915050610cd7565b5050565b3360008181526003602090815260408083206001600160a01b03871684529091528120549091610a2e918590610baf9086611cf3565b6000546001600160a01b03163314610e585760405162461bcd60e51b8152600401610a629061309d565b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b6000600b54831115610ed05760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610a62565b81610ef1576000610ee084611cff565b50959750610a329650505050505050565b6000610efc84611cff565b50949750610a329650505050505050565b6000546001600160a01b03163314610f375760405162461bcd60e51b8152600401610a629061309d565b6001600160a01b03811660009081526005602052604090205460ff1615610fa05760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610a62565b6001600160a01b03811660009081526001602052604090205415610ffa576001600160a01b038116600090815260016020526040902054610fe090610bbe565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600560205260408120805460ff191660019081179091556008805491820181559091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b0319169091179055565b6000546001600160a01b0316331461108a5760405162461bcd60e51b8152600401610a629061309d565b600081116110ca5760405162461bcd60e51b815260206004820152600d60248201526c56616c756520746f6f206c6f7760981b6044820152606401610a62565b601d55565b6000546001600160a01b031633146110f95760405162461bcd60e51b8152600401610a629061309d565b6001600160a01b03166000908152600660205260409020805460ff19169055565b6000546001600160a01b031633146111445760405162461bcd60e51b8152600401610a629061309d565b6127108111156111665760405162461bcd60e51b8152600401610a62906130d2565b602155565b6001600160a01b03811660009081526005602052604081205460ff16156111a857506001600160a01b031660009081526002602052604090205490565b6001600160a01b038216600090815260016020526040902054610a3290610bbe565b6000546001600160a01b031633146111f45760405162461bcd60e51b8152600401610a629061309d565b6111fe6000611dde565b565b6060600f805461099e90613063565b6000546001600160a01b031633146112395760405162461bcd60e51b8152600401610a629061309d565b60006112443061116b565b306000908152600160205260409020549091506112619082611e2e565b3060009081526001602081905260408220929092556112ae91839161128e6000546001600160a01b031690565b6001600160a01b0316815260208101919091526040016000205490611cf3565b600160006112c46000546001600160a01b031690565b6001600160a01b03168152602080820192909252604090810160009081209390935530835260029091529020546112fb9082611e2e565b30600090815260026020819052604082209290925561132891839161128e6000546001600160a01b031690565b6002600061133e6000546001600160a01b031690565b6001600160a01b0316815260208101919091526040016000205561136a6000546001600160a01b031690565b6001600160a01b0316306001600160a01b03166000805160206132a78339815191528360405161139c91815260200190565b60405180910390a350565b6000546001600160a01b031633146113d15760405162461bcd60e51b8152600401610a629061309d565b476113e46000546001600160a01b031690565b6001600160a01b03166108fc60646113fc8585613181565b61140691906131a0565b6040518115909202916000818181858888f1935050505015801561142e573d6000803e3d6000fd5b505050565b6000546001600160a01b0316331461145d5760405162461bcd60e51b8152600401610a629061309d565b601e5461146c90610e1061310d565b421061147757600080fd5b6001600160a01b03166000908152600660205260409020805460ff19166001179055565b6000610a2e3384610baf856040518060600160405280602581526020016132c7602591393360009081526003602090815260408083206001600160a01b038d1684529091529020549190611c98565b6000610a2e3384846119e8565b6000546001600160a01b031633146115215760405162461bcd60e51b8152600401610a629061309d565b600980546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461156d5760405162461bcd60e51b8152600401610a629061309d565b601c8054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159906115ba90831515815260200190565b60405180910390a150565b6000546001600160a01b031633146115ef5760405162461bcd60e51b8152600401610a629061309d565b6601c6bf526340008110156116465760405162461bcd60e51b815260206004820152601a60248201527f4d61782077616c6c65742073697a6520697320746f6f206c6f770000000000006044820152606401610a62565b602355565b6000546001600160a01b031633146116755760405162461bcd60e51b8152600401610a629061309d565b601c805460ff60a81b191690556000196022819055602355600060158190556017819055601381905560218190556019556116bb6104fd6000546001600160a01b031690565b6111fe6105946000546001600160a01b031690565b6000546001600160a01b031633146116fa5760405162461bcd60e51b8152600401610a629061309d565b66038d7ea4c680008110156117515760405162461bcd60e51b815260206004820152601a60248201527f4d61782077616c6c65742073697a6520697320746f6f206c6f770000000000006044820152606401610a62565b602255565b6000546001600160a01b031633146117805760405162461bcd60e51b8152600401610a629061309d565b6001600160a01b03166000908152600460205260409020805460ff19169055565b6000546001600160a01b031633146117cb5760405162461bcd60e51b8152600401610a629061309d565b6001600160a01b0381166118305760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a62565b61183981611dde565b50565b6000546001600160a01b031633146118665760405162461bcd60e51b8152600401610a629061309d565b60205460ff16156118ac5760405162461bcd60e51b815260206004820152601060248201526f105b1c9958591e481b185d5b98da195960821b6044820152606401610a62565b6020805460ff1916600117905542601e819055601f55565b6001600160a01b0383166119265760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610a62565b6001600160a01b0382166119875760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610a62565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611a4c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610a62565b6001600160a01b038216611aae5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610a62565b60008111611b105760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610a62565b6001600160a01b03831660009081526006602052604090205460ff161515600114801590611b5c57506001600160a01b03821660009081526006602052604090205460ff161515600114155b611ba15760405162461bcd60e51b81526020600482015260166024820152751059191c995cdcc81a5cc8189b1858dadb1a5cdd195960521b6044820152606401610a62565b6000611bac3061116b565b6025805460ff19169055601c549091506001600160a01b0390811690841603611bdd576025805460ff191660011790555b601d54601c5490821015906001600160a01b03868116911614801590611c005750805b8015611c165750601c54600160a01b900460ff16155b8015611c2b5750601c54600160a81b900460ff165b15611c3957611c3982611e3a565b6001600160a01b03851660009081526004602052604090205460019060ff1680611c7b57506001600160a01b03851660009081526004602052604090205460ff165b15611c84575060005b611c9086868684612053565b505050505050565b60008184841115611cbc5760405162461bcd60e51b8152600401610a629190612e8f565b505050900390565b6000806000611cd16121dc565b9092509050611ce08282611ce7565b9250505090565b6000610c3b82846131a0565b6000610c3b828461310d565b600080600080600080600080611d3d6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b611d468a61235e565b8560000186602001876040018860600189608001858152508581525085815250858152508581525050505050506000806000611d9d8d8560200151866040015187606001518860800151611d98611cc4565b6123da565b92509250925082828286600001518760200151886040015189606001518a608001519b509b509b509b509b509b509b509b5050505050919395975091939597565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000610c3b828461313b565b601c805460ff60a01b1916600160a01b179055601354601954600091611e6b91611e65908590611ce7565b9061246a565b9050611e78816002611ce7565b90506000611e868383611e2e565b905047611e9282612476565b601354600090611ea3906002611ce7565b9050600081601154601754601554611ebb919061310d565b611ec5919061310d565b611ecf919061310d565b90506000611edd4785611e2e565b90506000611f0083611efa6019548561246a90919063ffffffff16565b90611ce7565b9050611f1b84611e6560195484611ce790919063ffffffff16565b90506000611f294783611e2e565b90506000611f44601354601954611e2e90919063ffffffff16565b90506000611f61601554611e658486611ce790919063ffffffff16565b6009546040519192506001600160a01b03169082156108fc029083906000818181858888f19350505050158015611f9c573d6000803e3d6000fd5b50601754600090611fb190611e658686611ce7565b600a546040519192506001600160a01b03169082156108fc029083906000818181858888f19350505050158015611fec573d6000803e3d6000fd5b50611ff78b866125c8565b604080518c8152602081018690529081018690527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15050601c805460ff60a01b1916905550505050505050505050565b806120605761206061269d565b6001600160a01b03841660009081526005602052604090205460ff1680156120a157506001600160a01b03831660009081526005602052604090205460ff16155b156120b6576120b1848484612702565b6121b4565b6001600160a01b03841660009081526005602052604090205460ff161580156120f757506001600160a01b03831660009081526005602052604090205460ff165b15612107576120b1848484612843565b6001600160a01b03841660009081526005602052604090205460ff1615801561214957506001600160a01b03831660009081526005602052604090205460ff16155b15612159576120b1848484612905565b6001600160a01b03841660009081526005602052604090205460ff16801561219957506001600160a01b03831660009081526005602052604090205460ff165b156121a9576120b1848484612cac565b6121b4848484612905565b80610b4f57610b4f601254601155601454601355601654601555601854601755601a54601955565b600c54600b546000918291825b60085481101561232e5782600160006008848154811061220b5761220b613125565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180612276575081600260006008848154811061224f5761224f613125565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561228c57600c54600b54945094505050509091565b6122d260016000600884815481106122a6576122a6613125565b60009182526020808320909101546001600160a01b031683528201929092526040019020548490611e2e565b925061231a60026000600884815481106122ee576122ee613125565b60009182526020808320909101546001600160a01b031683528201929092526040019020548390611e2e565b91508061232681613168565b9150506121e9565b50600b54600c5461233e91611ce7565b82101561235557600c54600b549350935050509091565b90939092509050565b60008060008060008061237087612d38565b9050600061237d88612d55565b9050600061238a89612d72565b905060006123978a612dc6565b905060006123a58b86611e2e565b90506123b18185611e2e565b90506123c7826123c18386611e2e565b90611e2e565b9b949a5092985090965094509092505050565b60008080806123e98a8661246a565b905060006123f78a8761246a565b905060006124058a8861246a565b905060006124138a8961246a565b905060006124218a8a61246a565b9050600061242f8686611e2e565b905061243b8185611e2e565b90506124478184611e2e565b90506124538183611e2e565b959f959e50939c50939a5050505050505050505050565b6000610c3b8284613181565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106124ab576124ab613125565b6001600160a01b03928316602091820292909201810191909152601b54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612504573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061252891906131c2565b8160018151811061253b5761253b613125565b6001600160a01b039283166020918202929092010152601b5461256191309116846118c4565b601b5460405163791ac94760e01b81526001600160a01b039091169063791ac9479061259a9085906000908690309042906004016131df565b600060405180830381600087803b1580156125b457600080fd5b505af1158015611c90573d6000803e3d6000fd5b601b546125e09030906001600160a01b0316846118c4565b601b546001600160a01b031663f305d7198230856000806126096000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015612671573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906126969190613250565b5050505050565b6011541580156126ad5750601354155b80156126b95750601554155b80156126c55750601754155b156126cc57565b6011805460125560138054601455601580546016556017805460185560198054601a556000948590559284905583905582905555565b60008060008060008060008061271789611cff565b9750975097509750975097509750975061275f89600260008e6001600160a01b03166001600160a01b0316815260200190815260200160002054611e2e90919063ffffffff16565b6001600160a01b038c1660009081526002602090815260408083209390935560019052205461278e9089611e2e565b6001600160a01b03808d1660009081526001602052604080822093909355908c16815220546127bd9088611cf3565b6001600160a01b038b166000908152600160205260409020556127df83612de3565b6127e882612de3565b6127f181612de3565b6127fb8685612e6b565b896001600160a01b03168b6001600160a01b03166000805160206132a78339815191528760405161282e91815260200190565b60405180910390a35050505050505050505050565b60008060008060008060008061285889611cff565b975097509750975097509750975097506128a088600160008e6001600160a01b03166001600160a01b0316815260200190815260200160002054611e2e90919063ffffffff16565b6001600160a01b03808d16600090815260016020908152604080832094909455918d168152600290915220546128d69086611cf3565b6001600160a01b038b166000908152600260209081526040808320939093556001905220546127bd9088611cf3565b60008060008060008060008061291a89611cff565b9750975097509750975097509750975060235489106129895760405162461bcd60e51b815260206004820152602560248201527f416d6f756e74206973206c6172676572207468616e206d6178207472616e736160448201526431ba34b7b760d91b6064820152608401610a62565b60205460ff1615156001148015906129af5750601c546001600160a01b038b8116911614155b80156129c957506000546001600160a01b038c8116911614155b80156129e357506000546001600160a01b038b8116911614155b15612a92576001600160a01b038b16600090815260016020526040902054612a0b9089611e2e565b6001600160a01b03808d1660009081526001602052604080822093909355908c1681522054612a3a9088611cf3565b6001600160a01b03808c1660008181526001602052604090819020939093559151908d16906000805160206132a783398151915290612a7c9089815260200190565b60405180910390a3612a8d8a611477565b612c9f565b60205460ff1615156001148015612ac4575042602454601e5461012c612ab8919061310d565b612ac2919061310d565b115b8015612ade5750601c546001600160a01b038b8116911614155b8015612af857506000546001600160a01b038c8116911614155b8015612b1257506000546001600160a01b038b8116911614155b15612b3a576001600160a01b038b16600090815260016020526040902054612a0b9089611e2e565b6000546001600160a01b038c811691161480612b6357506000546001600160a01b038b81169116145b15612c03576001600160a01b038a16600090815260016020526040902054612b8b9089611cf3565b6001600160a01b03808c1660009081526001602052604080822093909355908d1681522054612bba9089611e2e565b6001600160a01b038c81166000818152600160209081526040918290209490945551888152918d169290916000805160206132a7833981519152910160405180910390a3612c9f565b601c546001600160a01b038b8116911614612c7c57602254612c2e8a612c288d61116b565b90611cf3565b1115612c7c5760405162461bcd60e51b815260206004820181905260248201527f5472616e736665722065786365656473206d61782077616c6c65742073697a656044820152606401610a62565b6001600160a01b038b1660009081526001602052604090205461278e9089611e2e565b5050505050505050505050565b600080600080600080600080612cc189611cff565b97509750975097509750975097509750612d0989600260008e6001600160a01b03166001600160a01b0316815260200190815260200160002054611e2e90919063ffffffff16565b6001600160a01b038c166000908152600260209081526040808320939093556001905220546128a09089611e2e565b6000610a32612710611efa6011548561246a90919063ffffffff16565b6000610a32612710611efa6013548561246a90919063ffffffff16565b60255460009060ff161515600103612dab57610a32612710611efa612da4602154601554611cf390919063ffffffff16565b859061246a565b610a32612710611efa6015548561246a90919063ffffffff16565b6000610a32612710611efa6017548561246a90919063ffffffff16565b6000612ded611cc4565b90506000612dfb838361246a565b30600090815260016020526040902054909150612e189082611cf3565b3060009081526001602090815260408083209390935560059052205460ff161561142e5730600090815260026020526040902054612e569084611cf3565b30600090815260026020526040902055505050565b600c54612e789083611e2e565b600c55600d54612e889082611cf3565b600d555050565b600060208083528351808285015260005b81811015612ebc57858101830151858201604001528201612ea0565b81811115612ece576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461183957600080fd5b60008060408385031215612f0c57600080fd5b8235612f1781612ee4565b946020939093013593505050565b60008060008060808587031215612f3b57600080fd5b5050823594602084013594506040840135936060013592509050565b600080600060608486031215612f6c57600080fd5b8335612f7781612ee4565b92506020840135612f8781612ee4565b929592945050506040919091013590565b600060208284031215612faa57600080fd5b5035919050565b600060208284031215612fc357600080fd5b8135610c3b81612ee4565b80358015158114612fde57600080fd5b919050565b60008060408385031215612ff657600080fd5b8235915061300660208401612fce565b90509250929050565b60006020828403121561302157600080fd5b610c3b82612fce565b6000806040838503121561303d57600080fd5b823561304881612ee4565b9150602083013561305881612ee4565b809150509250929050565b600181811c9082168061307757607f821691505b60208210810361309757634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252600b908201526a496e76616c69642062707360a81b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60008219821115613120576131206130f7565b500190565b634e487b7160e01b600052603260045260246000fd5b60008282101561314d5761314d6130f7565b500390565b634e487b7160e01b600052603160045260246000fd5b60006001820161317a5761317a6130f7565b5060010190565b600081600019048311821515161561319b5761319b6130f7565b500290565b6000826131bd57634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156131d457600080fd5b8151610c3b81612ee4565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561322f5784516001600160a01b03168352938301939183019160010161320a565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561326557600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220e0b8c29967b5e5cbf2dc12d62c30a48f2434262bbf2001a35159223afd12043864736f6c634300080d0033
Deployed ByteCode Sourcemap
27150:30278:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27705:40;;;;;;;;;;-1:-1:-1;27705:40:0;;;;-1:-1:-1;;;;;27705:40:0;;;;;;-1:-1:-1;;;;;194:32:1;;;176:51;;164:2;149:18;27705:40:0;;;;;;;;31234:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;32219:193::-;;;;;;;;;;-1:-1:-1;32219:193:0;;;;;:::i;:::-;;:::i;:::-;;;1461:14:1;;1454:22;1436:41;;1424:2;1409:18;32219:193:0;1296:187:1;35062:87:0;;;;;;;;;;-1:-1:-1;35131:10:0;;35062:87;;;1634:25:1;;;1622:2;1607:18;35062:87:0;1488:177:1;37957:949:0;;;;;;;;;;-1:-1:-1;37957:949:0;;;;;:::i;:::-;;:::i;:::-;;28502:41;;;;;;;;;;-1:-1:-1;28502:41:0;;;;-1:-1:-1;;;;;28502:41:0;;;31511:95;;;;;;;;;;-1:-1:-1;31591:7:0;;31511:95;;32420:446;;;;;;;;;;-1:-1:-1;32420:446:0;;;;;:::i;:::-;;:::i;35653:322::-;;;;;;;;;;-1:-1:-1;35653:322:0;;;;;:::i;:::-;;:::i;31420:83::-;;;;;;;;;;-1:-1:-1;31486:9:0;;31420:83;;31486:9;;;;3083:36:1;;3071:2;3056:18;31420:83:0;2941:184:1;28208:29:0;;;;;;;;;;;;;;;;36323:477;;;;;;;;;;-1:-1:-1;36323:477:0;;;;;:::i;:::-;;:::i;32874:300::-;;;;;;;;;;-1:-1:-1;32874:300:0;;;;;:::i;:::-;;:::i;28032:22::-;;;;;;;;;;;;;;;;37720:111;;;;;;;;;;-1:-1:-1;37720:111:0;;;;;:::i;:::-;;:::i;35157:488::-;;;;;;;;;;-1:-1:-1;35157:488:0;;;;;:::i;:::-;;:::i;28550:28::-;;;;;;;;;;-1:-1:-1;28550:28:0;;;;-1:-1:-1;;;;;28550:28:0;;;28615:33;;;;;;;;;;-1:-1:-1;28615:33:0;;;;-1:-1:-1;;;28615:33:0;;;;;;28897:25;;;;;;;;;;;;;;;;35983:332;;;;;;;;;;-1:-1:-1;35983:332:0;;;;;:::i;:::-;;:::i;46260:124::-;;;;;;;;;;-1:-1:-1;46260:124:0;;;;;:::i;:::-;-1:-1:-1;;;;;46349:27:0;46325:4;46349:27;;;:18;:27;;;;;;;;;46260:124;39095:161;;;;;;;;;;-1:-1:-1;39095:161:0;;;;;:::i;:::-;;:::i;27752:41::-;;;;;;;;;;-1:-1:-1;27752:41:0;;;;-1:-1:-1;;;;;27752:41:0;;;34486:106;;;;;;;;;;-1:-1:-1;34486:106:0;;;;;:::i;:::-;;:::i;33982:198::-;;;;;;;;;;-1:-1:-1;33982:198:0;;;;;:::i;:::-;;:::i;28111:28::-;;;;;;;;;;;;;;;;31614:198;;;;;;;;;;-1:-1:-1;31614:198:0;;;;;:::i;:::-;;:::i;5192:94::-;;;;;;;;;;;;;:::i;34188:120::-;;;;;;;;;;-1:-1:-1;34188:120:0;;;;;:::i;:::-;-1:-1:-1;;;;;34280:20:0;34256:4;34280:20;;;:11;:20;;;;;;;;;34188:120;4541:87;;;;;;;;;;-1:-1:-1;4587:7:0;4614:6;-1:-1:-1;;;;;4614:6:0;4541:87;;28861:29;;;;;;;;;;;;;;;;31325:87;;;;;;;;;;;;;:::i;48652:458::-;;;;;;;;;;;;;:::i;48448:196::-;;;;;;;;;;-1:-1:-1;48448:196:0;;;;;:::i;:::-;;:::i;34316:162::-;;;;;;;;;;-1:-1:-1;34316:162:0;;;;;:::i;:::-;;:::i;28788:23::-;;;;;;;;;;-1:-1:-1;28788:23:0;;;;;;;;33182:400;;;;;;;;;;-1:-1:-1;33182:400:0;;;;;:::i;:::-;;:::i;31820:199::-;;;;;;;;;;-1:-1:-1;31820:199:0;;;;;:::i;:::-;;:::i;33823:151::-;;;;;;;;;;-1:-1:-1;33823:151:0;;;;;:::i;:::-;;:::i;28820:32::-;;;;;;;;;;;;;;;;38914:173;;;;;;;;;;-1:-1:-1;38914:173:0;;;;;:::i;:::-;;:::i;39452:171::-;;;;;;;;;;-1:-1:-1;39452:171:0;;;;;:::i;:::-;;:::i;28411:26::-;;;;;;;;;;;;;;;;28657:44;;;;;;;;;;;;;;;;28308:30;;;;;;;;;;;;;;;;32027:184;;;;;;;;;;-1:-1:-1;32027:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;32176:18:0;;;32144:7;32176:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;32027:184;57074:351;;;;;;;;;;;;;:::i;39264:179::-;;;;;;;;;;-1:-1:-1;39264:179:0;;;;;:::i;:::-;;:::i;37839:110::-;;;;;;;;;;-1:-1:-1;37839:110:0;;;;;:::i;:::-;;:::i;5441:192::-;;;;;;;;;;-1:-1:-1;5441:192:0;;;;;:::i;:::-;;:::i;34832:222::-;;;;;;;;;;;;;:::i;34600:120::-;;;;;;;;;;-1:-1:-1;34600:120:0;;;;;:::i;:::-;-1:-1:-1;;;;;34687:25:0;34663:4;34687:25;;;:16;:25;;;;;;;;;34600:120;31234:83;31271:13;31304:5;31297:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31234:83;:::o;32219:193::-;32321:4;32343:39;3497:10;32366:7;32375:6;32343:8;:39::i;:::-;-1:-1:-1;32400:4:0;32219:193;;;;;:::o;37957:949::-;4587:7;4614:6;-1:-1:-1;;;;;4614:6:0;3497:10;4761:23;4753:68;;;;-1:-1:-1;;;4753:68:0;;;;;;;:::i;:::-;;;;;;;;;38146:5:::1;38133:9;:18;;38107:60;;;;-1:-1:-1::0;;;38107:60:0::1;;;;;;;:::i;:::-;38243:5;38224:15;:24;;38178:109;;;;-1:-1:-1::0;;;38178:109:0::1;;;;;;;:::i;:::-;38365:5;38345:16;:25;;38298:111;;;;-1:-1:-1::0;;;38298:111:0::1;;;;;;;:::i;:::-;38491:5;38470:17;:26;;38422:113;;;;-1:-1:-1::0;;;38422:113:0::1;;;;;;;:::i;:::-;38548:7;:19:::0;;;38578:13:::1;:31:::0;;;38620:14:::1;:33:::0;;;38664:15:::1;:35:::0;;;38682:17;38558:9;38726:30:::1;38637:16:::0;38594:15;38726:30:::1;:::i;:::-;:40;;;;:::i;:::-;:58;;;;:::i;:::-;38712:11;:72:::0;38854:5:::1;38839:11;;:20;;38797:101;;;;-1:-1:-1::0;;;38797:101:0::1;;;;;;;:::i;:::-;37957:949:::0;;;;:::o;32420:446::-;32552:4;32569:36;32579:6;32587:9;32598:6;32569:9;:36::i;:::-;32616:220;32639:6;3497:10;32687:138;32743:6;32687:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;32687:19:0;;;;;;:11;:19;;;;;;;;3497:10;32687:33;;;;;;;;;;:37;:138::i;:::-;32616:8;:220::i;:::-;-1:-1:-1;32854:4:0;32420:446;;;;;:::o;35653:322::-;35747:7;35805;;35794;:18;;35772:110;;;;-1:-1:-1;;;35772:110:0;;6399:2:1;35772:110:0;;;6381:21:1;6438:2;6418:18;;;6411:30;6477:34;6457:18;;;6450:62;-1:-1:-1;;;6528:18:1;;;6521:40;6578:19;;35772:110:0;6197:406:1;35772:110:0;35893:19;35915:10;:8;:10::i;:::-;35893:32;-1:-1:-1;35943:24:0;:7;35893:32;35943:11;:24::i;:::-;35936:31;35653:322;-1:-1:-1;;;35653:322:0:o;36323:477::-;4587:7;4614:6;-1:-1:-1;;;;;4614:6:0;3497:10;4761:23;4753:68;;;;-1:-1:-1;;;4753:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;36403:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;36395:60;;;::::0;-1:-1:-1;;;36395:60:0;;6810:2:1;36395:60:0::1;::::0;::::1;6792:21:1::0;6849:2;6829:18;;;6822:30;6888:29;6868:18;;;6861:57;6935:18;;36395:60:0::1;6608:351:1::0;36395:60:0::1;36471:9;36466:327;36490:9;:16:::0;36486:20;::::1;36466:327;;;36548:7;-1:-1:-1::0;;;;;36532:23:0::1;:9;36542:1;36532:12;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;36532:12:0::1;:23:::0;36528:254:::1;;36591:9;36601:16:::0;;:20:::1;::::0;36620:1:::1;::::0;36601:20:::1;:::i;:::-;36591:31;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;36576:9:::1;:12:::0;;-1:-1:-1;;;;;36591:31:0;;::::1;::::0;36586:1;;36576:12;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;36576:46:0::1;-1:-1:-1::0;;;;;36576:46:0;;::::1;;::::0;;36641:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;36680:11:::1;:20:::0;;;;:28;;-1:-1:-1;;36680:28:0::1;::::0;;36727:9:::1;:15:::0;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;36727:15:0;;;;;-1:-1:-1;;;;;;36727:15:0::1;::::0;;;;;36466:327:::1;36323:477:::0;:::o;36528:254::-:1;36508:3:::0;::::1;::::0;::::1;:::i;:::-;;;;36466:327;;;;36323:477:::0;:::o;32874:300::-;3497:10;32989:4;33083:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;33083:34:0;;;;;;;;;;32989:4;;33011:133;;33061:7;;33083:50;;33122:10;33083:38;:50::i;37720:111::-;4587:7;4614:6;-1:-1:-1;;;;;4614:6:0;3497:10;4761:23;4753:68;;;;-1:-1:-1;;;4753:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;37789:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;37789:34:0::1;37819:4;37789:34;::::0;;37720:111::o;35157:488::-;35275:7;35319;;35308;:18;;35300:62;;;;-1:-1:-1;;;35300:62:0;;7700:2:1;35300:62:0;;;7682:21:1;7739:2;7719:18;;;7712:30;7778:33;7758:18;;;7751:61;7829:18;;35300:62:0;7498:355:1;35300:62:0;35378:17;35373:265;;35413:15;35447:19;35458:7;35447:10;:19::i;:::-;-1:-1:-1;35412:54:0;;-1:-1:-1;35481:14:0;;-1:-1:-1;;;;;;;35481:14:0;35373:265;35531:23;35570:19;35581:7;35570:10;:19::i;:::-;-1:-1:-1;35528:61:0;;-1:-1:-1;35604:22:0;;-1:-1:-1;;;;;;;35604:22:0;35983:332;4587:7;4614:6;-1:-1:-1;;;;;4614:6:0;3497:10;4761:23;4753:68;;;;-1:-1:-1;;;4753:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;36064:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;36063:21;36055:61;;;::::0;-1:-1:-1;;;36055:61:0;;6810:2:1;36055:61:0::1;::::0;::::1;6792:21:1::0;6849:2;6829:18;;;6822:30;6888:29;6868:18;;;6861:57;6935:18;;36055:61:0::1;6608:351:1::0;36055:61:0::1;-1:-1:-1::0;;;;;36131:16:0;::::1;36150:1;36131:16:::0;;;:7:::1;:16;::::0;;;;;:20;36127:109:::1;;-1:-1:-1::0;;;;;36207:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;36187:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;36168:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;36127:109:::1;-1:-1:-1::0;;;;;36246:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;36246:27:0::1;36269:4;36246:27:::0;;::::1;::::0;;;36284:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;36284:23:0::1;::::0;;::::1;::::0;;35983:332::o;39095:161::-;4587:7;4614:6;-1:-1:-1;;;;;4614:6:0;3497:10;4761:23;4753:68;;;;-1:-1:-1;;;4753:68:0;;;;;;;:::i;:::-;39178:1:::1;39171:6;:8;39163:34;;;::::0;-1:-1:-1;;;39163:34:0;;8060:2:1;39163:34:0::1;::::0;::::1;8042:21:1::0;8099:2;8079:18;;;8072:30;-1:-1:-1;;;8118:18:1;;;8111:43;8171:18;;39163:34:0::1;7858:337:1::0;39163:34:0::1;39208:29;:38:::0;39095:161::o;34486:106::-;4587:7;4614:6;-1:-1:-1;;;;;4614:6:0;3497:10;4761:23;4753:68;;;;-1:-1:-1;;;4753:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;34556:22:0::1;34579:5;34556:22:::0;;;:16:::1;:22;::::0;;;;:28;;-1:-1:-1;;34556:28:0::1;::::0;;34486:106::o;33982:198::-;4587:7;4614:6;-1:-1:-1;;;;;4614:6:0;3497:10;4761:23;4753:68;;;;-1:-1:-1;;;4753:68:0;;;;;;;:::i;:::-;34095:5:::1;34088:3;:12;;34054:85;;;;-1:-1:-1::0;;;34054:85:0::1;;;;;;;:::i;:::-;34151:13;:19:::0;33982:198::o;31614:::-;-1:-1:-1;;;;;31704:20:0;;31680:7;31704:20;;;:11;:20;;;;;;;;31700:49;;;-1:-1:-1;;;;;;31733:16:0;;;;;:7;:16;;;;;;;31614:198::o;31700:49::-;-1:-1:-1;;;;;31787:16:0;;;;;;:7;:16;;;;;;31767:37;;:19;:37::i;5192:94::-;4587:7;4614:6;-1:-1:-1;;;;;4614:6:0;3497:10;4761:23;4753:68;;;;-1:-1:-1;;;4753:68:0;;;;;;;:::i;:::-;5257:21:::1;5275:1;5257:9;:21::i;:::-;5192:94::o:0;31325:87::-;31364:13;31397:7;31390:14;;;;;:::i;48652:458::-;4587:7;4614:6;-1:-1:-1;;;;;4614:6:0;3497:10;4761:23;4753:68;;;;-1:-1:-1;;;4753:68:0;;;;;;;:::i;:::-;48715:19:::1;48737:24;48755:4;48737:9;:24::i;:::-;48813:4;48797:22;::::0;;;:7:::1;:22;::::0;;;;;48715:46;;-1:-1:-1;48797:39:0::1;::::0;48715:46;48797:26:::1;:39::i;:::-;48788:4;48772:22;::::0;;;:7:::1;:22;::::0;;;;;;:64;;;;48866:33:::1;::::0;48887:11;;48874:7:::1;4587::::0;4614:6;-1:-1:-1;;;;;4614:6:0;;4541:87;48874:7:::1;-1:-1:-1::0;;;;;48866:16:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;48866:16:0;;;:20:::1;:33::i;:::-;48847:7;:16;48855:7;4587::::0;4614:6;-1:-1:-1;;;;;4614:6:0;;4541:87;48855:7:::1;-1:-1:-1::0;;;;;48847:16:0::1;::::0;;::::1;::::0;;::::1;::::0;;;;;;;;-1:-1:-1;48847:16:0;;;:52;;;;48951:4:::1;48935:22:::0;;:7:::1;:22:::0;;;;;;:39:::1;::::0;48962:11;48935:26:::1;:39::i;:::-;48926:4;48910:22;::::0;;;:7:::1;:22;::::0;;;;;;:64;;;;49004:33:::1;::::0;49025:11;;49012:7:::1;4587::::0;4614:6;-1:-1:-1;;;;;4614:6:0;;4541:87;49004:33:::1;48985:7;:16;48993:7;4587::::0;4614:6;-1:-1:-1;;;;;4614:6:0;;4541:87;48993:7:::1;-1:-1:-1::0;;;;;48985:16:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;48985:16:0;:52;49077:7:::1;4587::::0;4614:6;-1:-1:-1;;;;;4614:6:0;;4541:87;49077:7:::1;-1:-1:-1::0;;;;;49053:47:0::1;49070:4;-1:-1:-1::0;;;;;49053:47:0::1;-1:-1:-1::0;;;;;;;;;;;49087:11:0::1;49053:47;;;;1634:25:1::0;;1622:2;1607:18;;1488:177;49053:47:0::1;;;;;;;;48694:416;48652:458::o:0;48448:196::-;4587:7;4614:6;-1:-1:-1;;;;;4614:6:0;3497:10;4761:23;4753:68;;;;-1:-1:-1;;;4753:68:0;;;;;;;:::i;:::-;48543:21:::1;48583:7;4587::::0;4614:6;-1:-1:-1;;;;;4614:6:0;;4541:87;48583:7:::1;-1:-1:-1::0;;;;;48575:25:0::1;:61;48632:3;48601:28;48613:16:::0;48601:9;:28:::1;:::i;:::-;:34;;;;:::i;:::-;48575:61;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;48512:132;48448:196:::0;:::o;34316:162::-;4587:7;4614:6;-1:-1:-1;;;;;4614:6:0;3497:10;4761:23;4753:68;;;;-1:-1:-1;;;4753:68:0;;;;;;;:::i;:::-;34408:11:::1;::::0;:21:::1;::::0;34422:7:::1;34408:21;:::i;:::-;34390:15;:39;34382:48;;;::::0;::::1;;-1:-1:-1::0;;;;;34441:22:0::1;;::::0;;;:16:::1;:22;::::0;;;;:27;;-1:-1:-1;;34441:27:0::1;34464:4;34441:27;::::0;;34316:162::o;33182:400::-;33302:4;33324:228;3497:10;33374:7;33396:145;33453:15;33396:145;;;;;;;;;;;;;;;;;3497:10;33396:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;33396:34:0;;;;;;;;;;;;:38;:145::i;31820:199::-;31925:4;31947:42;3497:10;31971:9;31982:6;31947:9;:42::i;33823:151::-;4587:7;4614:6;-1:-1:-1;;;;;4614:6:0;3497:10;4761:23;4753:68;;;;-1:-1:-1;;;4753:68:0;;;;;;;:::i;:::-;33926:17:::1;:40:::0;;-1:-1:-1;;;;;;33926:40:0::1;-1:-1:-1::0;;;;;33926:40:0;;;::::1;::::0;;;::::1;::::0;;33823:151::o;38914:173::-;4587:7;4614:6;-1:-1:-1;;;;;4614:6:0;3497:10;4761:23;4753:68;;;;-1:-1:-1;;;4753:68:0;;;;;;;:::i;:::-;38993:21:::1;:32:::0;;;::::1;;-1:-1:-1::0;;;38993:32:0::1;-1:-1:-1::0;;;;38993:32:0;;::::1;;::::0;;39041:38:::1;::::0;::::1;::::0;::::1;::::0;39017:8;1461:14:1;1454:22;1436:41;;1424:2;1409:18;;1296:187;39041:38:0::1;;;;;;;;38914:173:::0;:::o;39452:171::-;4587:7;4614:6;-1:-1:-1;;;;;4614:6:0;3497:10;4761:23;4753:68;;;;-1:-1:-1;;;4753:68:0;;;;;;;:::i;:::-;39537:15:::1;39529:6;:23;;39521:62;;;::::0;-1:-1:-1;;;39521:62:0;;8797:2:1;39521:62:0::1;::::0;::::1;8779:21:1::0;8836:2;8816:18;;;8809:30;8875:28;8855:18;;;8848:56;8921:18;;39521:62:0::1;8595:350:1::0;39521:62:0::1;39594:10;:19:::0;39452:171::o;57074:351::-;4587:7;4614:6;-1:-1:-1;;;;;4614:6:0;3497:10;4761:23;4753:68;;;;-1:-1:-1;;;4753:68:0;;;;;;;:::i;:::-;57134:21:::1;:27:::0;;-1:-1:-1;;;;57134:27:0::1;::::0;;-1:-1:-1;;57172:14:0::1;:18:::0;;;57201:10:::1;:14:::0;57156:5:::1;57134:21;57226:16:::0;;;57253:15:::1;:17:::0;;;57281:13:::1;:15:::0;;;57307:13:::1;:15:::0;;;57333:11:::1;:13:::0;57357:23:::1;57372:7;4587::::0;4614:6;-1:-1:-1;;;;;4614:6:0;;4541:87;57357:23:::1;57391:26;57409:7;4587::::0;4614:6;-1:-1:-1;;;;;4614:6:0;;4541:87;39264:179;4587:7;4614:6;-1:-1:-1;;;;;4614:6:0;3497:10;4761:23;4753:68;;;;-1:-1:-1;;;4753:68:0;;;;;;;:::i;:::-;39352:16:::1;39344:6;:24;;39336:63;;;::::0;-1:-1:-1;;;39336:63:0;;8797:2:1;39336:63:0::1;::::0;::::1;8779:21:1::0;8836:2;8816:18;;;8809:30;8875:28;8855:18;;;8848:56;8921:18;;39336:63:0::1;8595:350:1::0;39336:63:0::1;39410:14;:23:::0;39264:179::o;37839:110::-;4587:7;4614:6;-1:-1:-1;;;;;4614:6:0;3497:10;4761:23;4753:68;;;;-1:-1:-1;;;4753:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;37906:27:0::1;37936:5;37906:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;37906:35:0::1;::::0;;37839:110::o;5441:192::-;4587:7;4614:6;-1:-1:-1;;;;;4614:6:0;3497:10;4761:23;4753:68;;;;-1:-1:-1;;;4753:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5530:22:0;::::1;5522:73;;;::::0;-1:-1:-1;;;5522:73:0;;9152:2:1;5522:73:0::1;::::0;::::1;9134:21:1::0;9191:2;9171:18;;;9164:30;9230:34;9210:18;;;9203:62;-1:-1:-1;;;9281:18:1;;;9274:36;9327:19;;5522:73:0::1;8950:402:1::0;5522:73:0::1;5606:19;5616:8;5606:9;:19::i;:::-;5441:192:::0;:::o;34832:222::-;4587:7;4614:6;-1:-1:-1;;;;;4614:6:0;3497:10;4761:23;4753:68;;;;-1:-1:-1;;;4753:68:0;;;;;;;:::i;:::-;34888:11:::1;::::0;::::1;;:20;34879:50;;;::::0;-1:-1:-1;;;34879:50:0;;9559:2:1;34879:50:0::1;::::0;::::1;9541:21:1::0;9598:2;9578:18;;;9571:30;-1:-1:-1;;;9617:18:1;;;9610:46;9673:18;;34879:50:0::1;9357:340:1::0;34879:50:0::1;34940:11;:18:::0;;-1:-1:-1;;34940:18:0::1;34954:4;34940:18;::::0;;34983:15:::1;34969:11;:29:::0;;;35009:19:::1;:37:::0;34832:222::o;46392:371::-;-1:-1:-1;;;;;46519:19:0;;46511:68;;;;-1:-1:-1;;;46511:68:0;;9904:2:1;46511:68:0;;;9886:21:1;9943:2;9923:18;;;9916:30;9982:34;9962:18;;;9955:62;-1:-1:-1;;;10033:18:1;;;10026:34;10077:19;;46511:68:0;9702:400:1;46511:68:0;-1:-1:-1;;;;;46598:21:0;;46590:68;;;;-1:-1:-1;;;46590:68:0;;10309:2:1;46590:68:0;;;10291:21:1;10348:2;10328:18;;;10321:30;10387:34;10367:18;;;10360:62;-1:-1:-1;;;10438:18:1;;;10431:32;10480:19;;46590:68:0;10107:398:1;46590:68:0;-1:-1:-1;;;;;46671:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;46723:32;;1634:25:1;;;46723:32:0;;1607:18:1;46723:32:0;;;;;;;46392:371;;;:::o;46771:1669::-;-1:-1:-1;;;;;46893:18:0;;46885:68;;;;-1:-1:-1;;;46885:68:0;;10712:2:1;46885:68:0;;;10694:21:1;10751:2;10731:18;;;10724:30;10790:34;10770:18;;;10763:62;-1:-1:-1;;;10841:18:1;;;10834:35;10886:19;;46885:68:0;10510:401:1;46885:68:0;-1:-1:-1;;;;;46972:16:0;;46964:64;;;;-1:-1:-1;;;46964:64:0;;11118:2:1;46964:64:0;;;11100:21:1;11157:2;11137:18;;;11130:30;11196:34;11176:18;;;11169:62;-1:-1:-1;;;11247:18:1;;;11240:33;11290:19;;46964:64:0;10916:399:1;46964:64:0;47056:1;47047:6;:10;47039:64;;;;-1:-1:-1;;;47039:64:0;;11522:2:1;47039:64:0;;;11504:21:1;11561:2;11541:18;;;11534:30;11600:34;11580:18;;;11573:62;-1:-1:-1;;;11651:18:1;;;11644:39;11700:19;;47039:64:0;11320:405:1;47039:64:0;-1:-1:-1;;;;;47122:22:0;;;;;;:16;:22;;;;;;;;:28;;:22;:28;;;;:58;;-1:-1:-1;;;;;;47154:20:0;;;;;;:16;:20;;;;;;;;:26;;:20;:26;;47122:58;47114:93;;;;-1:-1:-1;;;47114:93:0;;11932:2:1;47114:93:0;;;11914:21:1;11971:2;11951:18;;;11944:30;-1:-1:-1;;;11990:18:1;;;11983:52;12052:18;;47114:93:0;11730:346:1;47114:93:0;47502:28;47533:24;47551:4;47533:9;:24::i;:::-;47568:4;:10;;-1:-1:-1;;47568:10:0;;;47599:13;;47502:55;;-1:-1:-1;;;;;;47599:13:0;;;47595:17;;;;47591:68;;47638:4;:9;;-1:-1:-1;;47638:9:0;47643:4;47638:9;;;47591:68;47735:29;;47801:13;;47698:66;;;;;-1:-1:-1;;;;;47793:21:0;;;47801:13;;47793:21;;;;:57;;;47831:19;47793:57;:91;;;;-1:-1:-1;47868:16:0;;-1:-1:-1;;;47868:16:0;;;;47867:17;47793:91;:129;;;;-1:-1:-1;47901:21:0;;-1:-1:-1;;;47901:21:0;;;;47793:129;47775:251;;;47978:36;47993:20;47978:14;:36::i;:::-;-1:-1:-1;;;;;48219:24:0;;48099:12;48219:24;;;:18;:24;;;;;;48114:4;;48219:24;;;:50;;-1:-1:-1;;;;;;48247:22:0;;;;;;:18;:22;;;;;;;;48219:50;48215:98;;;-1:-1:-1;48296:5:0;48215:98;48391:41;48406:4;48412:2;48416:6;48424:7;48391:14;:41::i;:::-;46874:1566;;;46771:1669;;;:::o;10801:240::-;10921:7;10982:12;10974:6;;;;10966:29;;;;-1:-1:-1;;;10966:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;11017:5:0;;;10801:240::o;42758:164::-;42800:7;42821:15;42838;42857:19;:17;:19::i;:::-;42820:56;;-1:-1:-1;42820:56:0;-1:-1:-1;42894:20:0;42820:56;;42894:11;:20::i;:::-;42887:27;;;;42758:164;:::o;9659:98::-;9717:7;9744:5;9748:1;9744;:5;:::i;8522:98::-;8580:7;8607:5;8611:1;8607;:5;:::i;40066:1032::-;40166:7;40188;40210;40232;40254;40276;40298;40320;40357:23;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;40357:23:0;40562:20;40574:7;40562:11;:20::i;:::-;40411:4;:20;;40446:4;:9;;40470:4;:15;;40500:4;:16;;40531:4;:17;;40396:186;;;;;;;;;;;;;;;;;;;;;;;;;40594:15;40611:23;40636:12;40652:186;40678:7;40700:4;:9;;;40724:4;:15;;;40754:4;:16;;;40785:4;:17;;;40817:10;:8;:10::i;:::-;40652:11;:186::i;:::-;40593:245;;;;;;40871:7;40893:15;40923:4;40942;:20;;;40977:4;:9;;;41001:4;:15;;;41031:4;:16;;;41062:4;:17;;;40849:241;;;;;;;;;;;;;;;;;;;;40066:1032;;;;;;;;;:::o;5641:173::-;5697:16;5716:6;;-1:-1:-1;;;;;5733:17:0;;;-1:-1:-1;;;;;;5733:17:0;;;;;;5766:40;;5716:6;;;;;;;5766:40;;5697:16;5766:40;5686:128;5641:173;:::o;8903:98::-;8961:7;8988:5;8992:1;8988;:5;:::i;49118:1922::-;29289:16;:23;;-1:-1:-1;;;;29289:23:0;-1:-1:-1;;;29289:23:0;;;49328:13:::1;::::0;49311:11:::1;::::0;29289:23;;49286:56:::1;::::0;:37:::1;::::0;:20;;:24:::1;:37::i;:::-;:41:::0;::::1;:56::i;:::-;49254:88:::0;-1:-1:-1;49377:28:0::1;49254:88:::0;49403:1:::1;49377:25;:28::i;:::-;49353:52:::0;-1:-1:-1;49418:20:0::1;49441:47;:20:::0;49353:52;49441:24:::1;:47::i;:::-;49418:70:::0;-1:-1:-1;49791:21:0::1;49857:30;49418:70:::0;49857:16:::1;:30::i;:::-;49916:13;::::0;49901:12:::1;::::0;49916:20:::1;::::0;49934:1:::1;49916:17;:20::i;:::-;49901:35;;49947:15;50011:4;50001:7;;49982:15;;49965:14;;:32;;;;:::i;:::-;:43;;;;:::i;:::-;:50;;;;:::i;:::-;49947:68:::0;-1:-1:-1;50076:18:0::1;50097:41;:21;50123:14:::0;50097:25:::1;:41::i;:::-;50076:62;;50151:27;50181:40;50213:7;50181:27;50196:11;;50181:10;:14;;:27;;;;:::i;:::-;:31:::0;::::1;:40::i;:::-;50151:70;;50254:46;50295:4;50254:36;50278:11;;50254:19;:23;;:36;;;;:::i;:46::-;50232:68:::0;-1:-1:-1;50313:26:0::1;50342:46;:21;50232:68:::0;50342:25:::1;:46::i;:::-;50313:75;;50472:13;50488:30;50504:13;;50488:11;;:15;;:30;;;;:::i;:::-;50472:46;;50531:25;50559:49;50593:14;;50559:29;50582:5;50559:18;:22;;:29;;;;:::i;:49::-;50627:17;::::0;50619:54:::1;::::0;50531:77;;-1:-1:-1;;;;;;50627:17:0::1;::::0;50619:54;::::1;;;::::0;50531:77;;50627:17:::1;50619:54:::0;50627:17;50619:54;50531:77;50627:17;50619:54;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;50749:15:0::1;::::0;50686:26:::1;::::0;50715:50:::1;::::0;:29:::1;:18:::0;50738:5;50715:22:::1;:29::i;:50::-;50784:18;::::0;50776:56:::1;::::0;50686:79;;-1:-1:-1;;;;;;50784:18:0::1;::::0;50776:56;::::1;;;::::0;50686:79;;50784:18:::1;50776:56:::0;50784:18;50776:56;50686:79;50784:18;50776:56;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;50882;50895:21;50918:19;50882:12;:56::i;:::-;50954:78;::::0;;12283:25:1;;;12339:2;12324:18;;12317:34;;;12367:18;;;12360:34;;;50954:78:0::1;::::0;12271:2:1;12256:18;50954:78:0::1;;;;;;;-1:-1:-1::0;;29335:16:0;:24;;-1:-1:-1;;;;29335:24:0;;;-1:-1:-1;;;;;;;;;;49118:1922:0:o;52243:836::-;52399:7;52394:28;;52408:14;:12;:14::i;:::-;-1:-1:-1;;;;;52437:19:0;;;;;;:11;:19;;;;;;;;:46;;;;-1:-1:-1;;;;;;52461:22:0;;;;;;:11;:22;;;;;;;;52460:23;52437:46;52433:597;;;52500:48;52522:6;52530:9;52541:6;52500:21;:48::i;:::-;52433:597;;;-1:-1:-1;;;;;52571:19:0;;;;;;:11;:19;;;;;;;;52570:20;:46;;;;-1:-1:-1;;;;;;52594:22:0;;;;;;:11;:22;;;;;;;;52570:46;52566:464;;;52633:46;52653:6;52661:9;52672:6;52633:19;:46::i;52566:464::-;-1:-1:-1;;;;;52702:19:0;;;;;;:11;:19;;;;;;;;52701:20;:47;;;;-1:-1:-1;;;;;;52726:22:0;;;;;;:11;:22;;;;;;;;52725:23;52701:47;52697:333;;;52765:44;52783:6;52791:9;52802:6;52765:17;:44::i;52697:333::-;-1:-1:-1;;;;;52831:19:0;;;;;;:11;:19;;;;;;;;:45;;;;-1:-1:-1;;;;;;52854:22:0;;;;;;:11;:22;;;;;;;;52831:45;52827:203;;;52893:48;52915:6;52923:9;52934:6;52893:21;:48::i;52827:203::-;52974:44;52992:6;53000:9;53011:6;52974:17;:44::i;:::-;53047:7;53042:29;;53056:15;46035;;46025:7;:25;46077:21;;46061:13;:37;46126:22;;46109:14;:39;46177:23;;46159:15;:41;46225:19;;46211:11;:33;45981:271;42930:605;43028:7;;43064;;42981;;;;;43082:338;43106:9;:16;43102:20;;43082:338;;;43190:7;43166;:21;43174:9;43184:1;43174:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;43174:12:0;43166:21;;;;;;;;;;;;;:31;;:83;;;43242:7;43218;:21;43226:9;43236:1;43226:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;43226:12:0;43218:21;;;;;;;;;;;;;:31;43166:83;43144:146;;;43273:7;;43282;;43265:25;;;;;;;42930:605;;:::o;43144:146::-;43315:34;43327:7;:21;43335:9;43345:1;43335:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;43335:12:0;43327:21;;;;;;;;;;;;;43315:7;;:11;:34::i;:::-;43305:44;;43374:34;43386:7;:21;43394:9;43404:1;43394:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;43394:12:0;43386:21;;;;;;;;;;;;;43374:7;;:11;:34::i;:::-;43364:44;-1:-1:-1;43124:3:0;;;;:::i;:::-;;;;43082:338;;;-1:-1:-1;43456:7:0;;43444;;:20;;:11;:20::i;:::-;43434:7;:30;43430:61;;;43474:7;;43483;;43466:25;;;;;;42930:605;;:::o;43430:61::-;43510:7;;43519;;-1:-1:-1;42930:605:0;-1:-1:-1;42930:605:0:o;41106:752::-;41207:7;41229;41251;41273;41295;41330:12;41345:24;41361:7;41345:15;:24::i;:::-;41330:39;;41380:18;41401:30;41423:7;41401:21;:30::i;:::-;41380:51;;41442:22;41467:31;41490:7;41467:22;:31::i;:::-;41442:56;;41509:23;41535:32;41559:7;41535:23;:32::i;:::-;41509:58;-1:-1:-1;41578:23:0;41604:17;:7;41616:4;41604:11;:17::i;:::-;41578:43;-1:-1:-1;41648:31:0;41578:43;41668:10;41648:19;:31::i;:::-;41632:47;-1:-1:-1;41706:56:0;41746:15;41706:35;41632:47;41726:14;41706:19;:35::i;:::-;:39;;:56::i;:::-;41690:72;41800:4;;-1:-1:-1;41806:10:0;;-1:-1:-1;41818:14:0;;-1:-1:-1;41806:10:0;-1:-1:-1;41106:752:0;;-1:-1:-1;;;41106:752:0:o;41866:884::-;42126:7;;;;42223:24;:7;42235:11;42223;:24::i;:::-;42205:42;-1:-1:-1;42258:12:0;42273:21;:4;42282:11;42273:8;:21::i;:::-;42258:36;-1:-1:-1;42305:18:0;42326:27;:10;42341:11;42326:14;:27::i;:::-;42305:48;-1:-1:-1;42364:19:0;42386:28;:11;42402;42386:15;:28::i;:::-;42364:50;-1:-1:-1;42425:12:0;42440:29;:12;42457:11;42440:16;:29::i;:::-;42425:44;-1:-1:-1;42480:23:0;42506:17;:7;42518:4;42506:11;:17::i;:::-;42480:43;-1:-1:-1;42550:31:0;42480:43;42570:10;42550:19;:31::i;:::-;42534:47;-1:-1:-1;42608:32:0;42534:47;42628:11;42608:19;:32::i;:::-;42592:48;-1:-1:-1;42667:25:0;42592:48;42687:4;42667:19;:25::i;:::-;42711:7;;;;-1:-1:-1;42737:4:0;;-1:-1:-1;41866:884:0;;-1:-1:-1;;;;;;;;;;;41866:884:0:o;9260:98::-;9318:7;9345:5;9349:1;9345;:5;:::i;51048:589::-;51198:16;;;51212:1;51198:16;;;;;;;;51174:21;;51198:16;;;;;;;;;;-1:-1:-1;51198:16:0;51174:40;;51243:4;51225;51230:1;51225:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;51225:23:0;;;:7;;;;;;;;;;:23;;;;51269:15;;:22;;;-1:-1:-1;;;51269:22:0;;;;:15;;;;;:20;;:22;;;;;51225:7;;51269:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;51259:4;51264:1;51259:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;51259:32:0;;;:7;;;;;;;;;:32;51336:15;;51304:62;;51321:4;;51336:15;51354:11;51304:8;:62::i;:::-;51405:15;;:224;;-1:-1:-1;;;51405:224:0;;-1:-1:-1;;;;;51405:15:0;;;;:66;;:224;;51486:11;;51405:15;;51556:4;;51583;;51603:15;;51405:224;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;51649:513;51829:15;;51797:62;;51814:4;;-1:-1:-1;;;;;51829:15:0;51847:11;51797:8;:62::i;:::-;51902:15;;-1:-1:-1;;;;;51902:15:0;:31;51941:9;51974:4;51994:11;51902:15;;52106:7;4587;4614:6;-1:-1:-1;;;;;4614:6:0;;4541:87;52106:7;51902:252;;;;;;-1:-1:-1;;;;;;51902:252:0;;;-1:-1:-1;;;;;14137:15:1;;;51902:252:0;;;14119:34:1;14169:18;;;14162:34;;;;14212:18;;;14205:34;;;;14255:18;;;14248:34;14319:15;;;14298:19;;;14291:44;52128:15:0;14351:19:1;;;14344:35;14053:19;;51902:252:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;51649:513;;:::o;45458:515::-;45505:7;;:12;:34;;;;-1:-1:-1;45521:13:0;;:18;45505:34;:57;;;;-1:-1:-1;45543:14:0;;:19;45505:57;:81;;;;-1:-1:-1;45566:15:0;;:20;45505:81;45501:94;;;45458:515::o;45501:94::-;45625:7;;;45607:15;:25;45667:13;;;45643:21;:37;45716:14;;;45691:22;:39;45767:15;;;45741:23;:41;45815:11;;;45793:19;:33;-1:-1:-1;45839:11:0;;;;45861:17;;;;45889:19;;;45919:18;;;45948:15;45458:515::o;56233:833::-;56384:15;56414:23;56452:12;56479:23;56517:12;56544:18;56577:19;56611:20;56645:19;56656:7;56645:10;:19::i;:::-;56369:295;;;;;;;;;;;;;;;;56693:28;56713:7;56693;:15;56701:6;-1:-1:-1;;;;;56693:15:0;-1:-1:-1;;;;;56693:15:0;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;-1:-1:-1;;;;;56675:15:0;;;;;;:7;:15;;;;;;;;:46;;;;56750:7;:15;;;;:28;;56770:7;56750:19;:28::i;:::-;-1:-1:-1;;;;;56732:15:0;;;;;;;:7;:15;;;;;;:46;;;;56810:18;;;;;;;:39;;56833:15;56810:22;:39::i;:::-;-1:-1:-1;;;;;56789:18:0;;;;;;:7;:18;;;;;:60;56860:26;56875:10;56860:14;:26::i;:::-;56897:31;56916:11;56897:18;:31::i;:::-;56939:25;56951:12;56939:11;:25::i;:::-;56975:23;56987:4;56993;56975:11;:23::i;:::-;57031:9;-1:-1:-1;;;;;57014:44:0;57023:6;-1:-1:-1;;;;;57014:44:0;-1:-1:-1;;;;;;;;;;;57042:15:0;57014:44;;;;1634:25:1;;1622:2;1607:18;;1488:177;57014:44:0;;;;;;;;56358:708;;;;;;;;56233:833;;;:::o;55380:845::-;55529:15;55559:23;55597:12;55624:23;55662:12;55689:18;55722:19;55756:20;55790:19;55801:7;55790:10;:19::i;:::-;55514:295;;;;;;;;;;;;;;;;55838:28;55858:7;55838;:15;55846:6;-1:-1:-1;;;;;55838:15:0;-1:-1:-1;;;;;55838:15:0;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;-1:-1:-1;;;;;55820:15:0;;;;;;;:7;:15;;;;;;;;:46;;;;55898:18;;;;;:7;:18;;;;;:39;;55921:15;55898:22;:39::i;:::-;-1:-1:-1;;;;;55877:18:0;;;;;;:7;:18;;;;;;;;:60;;;;55969:7;:18;;;;:39;;55992:15;55969:22;:39::i;53087:2285::-;53234:15;53264:23;53302:12;53329:23;53367:12;53394:18;53427:19;53461:20;53495:19;53506:7;53495:10;:19::i;:::-;53219:295;;;;;;;;;;;;;;;;53549:10;;53540:7;:19;53531:70;;;;-1:-1:-1;;;53531:70:0;;14903:2:1;53531:70:0;;;14885:21:1;14942:2;14922:18;;;14915:30;14981:34;14961:18;;;14954:62;-1:-1:-1;;;15032:18:1;;;15025:35;15077:19;;53531:70:0;14701:401:1;53531:70:0;53616:11;;;;:18;;:11;:18;;;;:47;;-1:-1:-1;53650:13:0;;-1:-1:-1;;;;;53638:25:0;;;53650:13;;53638:25;;53616:47;:66;;;;-1:-1:-1;4587:7:0;4614:6;-1:-1:-1;;;;;53667:15:0;;;4614:6;;53667:15;;53616:66;:88;;;;-1:-1:-1;4587:7:0;4614:6;-1:-1:-1;;;;;53686:18:0;;;4614:6;;53686:18;;53616:88;53612:1721;;;-1:-1:-1;;;;;53749:15:0;;;;;;:7;:15;;;;;;:28;;53769:7;53749:19;:28::i;:::-;-1:-1:-1;;;;;53731:15:0;;;;;;;:7;:15;;;;;;:46;;;;53813:18;;;;;;;:39;;53836:15;53813:22;:39::i;:::-;-1:-1:-1;;;;;53792:18:0;;;;;;;:7;:18;;;;;;;:60;;;;53872:44;;;;;;-1:-1:-1;;;;;;;;;;;53872:44:0;;;53900:15;1634:25:1;;1622:2;1607:18;;1488:177;53872:44:0;;;;;;;;53951:24;53965:9;53951:13;:24::i;:::-;53612:1721;;;54008:11;;;;:17;;:11;:17;:72;;;;;54065:15;54055:7;;54029:11;;54043:9;54029:23;;;;:::i;:::-;:33;;;;:::i;:::-;:51;54008:72;:101;;;;-1:-1:-1;54096:13:0;;-1:-1:-1;;;;;54084:25:0;;;54096:13;;54084:25;;54008:101;:120;;;;-1:-1:-1;4587:7:0;4614:6;-1:-1:-1;;;;;54113:15:0;;;4614:6;;54113:15;;54008:120;:142;;;;-1:-1:-1;4587:7:0;4614:6;-1:-1:-1;;;;;54132:18:0;;;4614:6;;54132:18;;54008:142;54004:1329;;;-1:-1:-1;;;;;54195:15:0;;;;;;:7;:15;;;;;;:28;;54215:7;54195:19;:28::i;54004:1329::-;4587:7;4614:6;-1:-1:-1;;;;;54451:15:0;;;4614:6;;54451:15;;:37;;-1:-1:-1;4587:7:0;4614:6;-1:-1:-1;;;;;54470:18:0;;;4614:6;;54470:18;54451:37;54447:886;;;-1:-1:-1;;;;;54536:18:0;;;;;;:7;:18;;;;;;:31;;54559:7;54536:22;:31::i;:::-;-1:-1:-1;;;;;54515:18:0;;;;;;;:7;:18;;;;;;:52;;;;54600:15;;;;;;;:28;;54620:7;54600:19;:28::i;:::-;-1:-1:-1;;;;;54582:15:0;;;;;;;:7;:15;;;;;;;;;:46;;;;54653:44;1634:25:1;;;54653:44:0;;;;54582:15;;-1:-1:-1;;;;;;;;;;;54653:44:0;1607:18:1;54653:44:0;;;;;;;54447:886;;;54791:13;;-1:-1:-1;;;;;54778:26:0;;;54791:13;;54778:26;54774:179;;54885:14;;54847:33;54872:7;54847:20;54857:9;54847;:20::i;:::-;:24;;:33::i;:::-;54846:53;;54838:99;;;;-1:-1:-1;;;54838:99:0;;15309:2:1;54838:99:0;;;15291:21:1;;;15328:18;;;15321:30;15387:34;15367:18;;;15360:62;15439:18;;54838:99:0;15107:356:1;54838:99:0;-1:-1:-1;;;;;54987:15:0;;;;;;:7;:15;;;;;;:28;;55007:7;54987:19;:28::i;54447:886::-;53208:2164;;;;;;;;53087:2285;;;:::o;36808:904::-;36959:15;36989:23;37027:12;37054:23;37092:12;37119:18;37152:19;37186:20;37220:19;37231:7;37220:10;:19::i;:::-;36944:295;;;;;;;;;;;;;;;;37268:28;37288:7;37268;:15;37276:6;-1:-1:-1;;;;;37268:15:0;-1:-1:-1;;;;;37268:15:0;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;-1:-1:-1;;;;;37250:15:0;;;;;;:7;:15;;;;;;;;:46;;;;37325:7;:15;;;;:28;;37345:7;37325:19;:28::i;44632:130::-;44696:7;44723:31;44748:5;44723:20;44735:7;;44723;:11;;:20;;;;:::i;44770:174::-;44867:7;44899:37;44930:5;44899:26;44911:13;;44899:7;:11;;:26;;;;:::i;44952:309::-;45078:4;;45050:7;;45078:4;;:10;;:4;:10;45075:120;;45124:59;45177:5;45124:48;45137:33;45156:13;;45137:14;;:18;;:33;;;;:::i;:::-;45124:7;;:11;:48::i;45075:120::-;45215:38;45247:5;45215:27;45227:14;;45215:7;:11;;:27;;;;:::i;45270:178::-;45369:7;45401:39;45434:5;45401:28;45413:15;;45401:7;:11;;:28;;;;:::i;43543:355::-;43606:19;43628:10;:8;:10::i;:::-;43606:32;-1:-1:-1;43649:18:0;43670:27;:10;43606:32;43670:14;:27::i;:::-;43749:4;43733:22;;;;:7;:22;;;;;;43649:48;;-1:-1:-1;43733:38:0;;43649:48;43733:26;:38::i;:::-;43724:4;43708:22;;;;:7;:22;;;;;;;;:63;;;;43786:11;:26;;;;;;43782:108;;;43868:4;43852:22;;;;:7;:22;;;;;;:38;;43879:10;43852:26;:38::i;:::-;43843:4;43827:22;;;;:7;:22;;;;;:63;43595:303;;43543:355;:::o;39724:147::-;39802:7;;:17;;39814:4;39802:11;:17::i;:::-;39792:7;:27;39843:10;;:20;;39858:4;39843:14;:20::i;:::-;39830:10;:33;-1:-1:-1;;39724:147:0:o;238:597:1:-;350:4;379:2;408;397:9;390:21;440:6;434:13;483:6;478:2;467:9;463:18;456:34;508:1;518:140;532:6;529:1;526:13;518:140;;;627:14;;;623:23;;617:30;593:17;;;612:2;589:26;582:66;547:10;;518:140;;;676:6;673:1;670:13;667:91;;;746:1;741:2;732:6;721:9;717:22;713:31;706:42;667:91;-1:-1:-1;819:2:1;798:15;-1:-1:-1;;794:29:1;779:45;;;;826:2;775:54;;238:597;-1:-1:-1;;;238:597:1:o;840:131::-;-1:-1:-1;;;;;915:31:1;;905:42;;895:70;;961:1;958;951:12;976:315;1044:6;1052;1105:2;1093:9;1084:7;1080:23;1076:32;1073:52;;;1121:1;1118;1111:12;1073:52;1160:9;1147:23;1179:31;1204:5;1179:31;:::i;:::-;1229:5;1281:2;1266:18;;;;1253:32;;-1:-1:-1;;;976:315:1:o;1670:385::-;1756:6;1764;1772;1780;1833:3;1821:9;1812:7;1808:23;1804:33;1801:53;;;1850:1;1847;1840:12;1801:53;-1:-1:-1;;1873:23:1;;;1943:2;1928:18;;1915:32;;-1:-1:-1;1994:2:1;1979:18;;1966:32;;2045:2;2030:18;2017:32;;-1:-1:-1;1670:385:1;-1:-1:-1;1670:385:1:o;2295:456::-;2372:6;2380;2388;2441:2;2429:9;2420:7;2416:23;2412:32;2409:52;;;2457:1;2454;2447:12;2409:52;2496:9;2483:23;2515:31;2540:5;2515:31;:::i;:::-;2565:5;-1:-1:-1;2622:2:1;2607:18;;2594:32;2635:33;2594:32;2635:33;:::i;:::-;2295:456;;2687:7;;-1:-1:-1;;;2741:2:1;2726:18;;;;2713:32;;2295:456::o;2756:180::-;2815:6;2868:2;2856:9;2847:7;2843:23;2839:32;2836:52;;;2884:1;2881;2874:12;2836:52;-1:-1:-1;2907:23:1;;2756:180;-1:-1:-1;2756:180:1:o;3130:247::-;3189:6;3242:2;3230:9;3221:7;3217:23;3213:32;3210:52;;;3258:1;3255;3248:12;3210:52;3297:9;3284:23;3316:31;3341:5;3316:31;:::i;3382:160::-;3447:20;;3503:13;;3496:21;3486:32;;3476:60;;3532:1;3529;3522:12;3476:60;3382:160;;;:::o;3547:248::-;3612:6;3620;3673:2;3661:9;3652:7;3648:23;3644:32;3641:52;;;3689:1;3686;3679:12;3641:52;3725:9;3712:23;3702:33;;3754:35;3785:2;3774:9;3770:18;3754:35;:::i;:::-;3744:45;;3547:248;;;;;:::o;4268:180::-;4324:6;4377:2;4365:9;4356:7;4352:23;4348:32;4345:52;;;4393:1;4390;4383:12;4345:52;4416:26;4432:9;4416:26;:::i;4453:388::-;4521:6;4529;4582:2;4570:9;4561:7;4557:23;4553:32;4550:52;;;4598:1;4595;4588:12;4550:52;4637:9;4624:23;4656:31;4681:5;4656:31;:::i;:::-;4706:5;-1:-1:-1;4763:2:1;4748:18;;4735:32;4776:33;4735:32;4776:33;:::i;:::-;4828:7;4818:17;;;4453:388;;;;;:::o;4846:380::-;4925:1;4921:12;;;;4968;;;4989:61;;5043:4;5035:6;5031:17;5021:27;;4989:61;5096:2;5088:6;5085:14;5065:18;5062:38;5059:161;;5142:10;5137:3;5133:20;5130:1;5123:31;5177:4;5174:1;5167:15;5205:4;5202:1;5195:15;5059:161;;4846:380;;;:::o;5231:356::-;5433:2;5415:21;;;5452:18;;;5445:30;5511:34;5506:2;5491:18;;5484:62;5578:2;5563:18;;5231:356::o;5592:335::-;5794:2;5776:21;;;5833:2;5813:18;;;5806:30;-1:-1:-1;;;5867:2:1;5852:18;;5845:41;5918:2;5903:18;;5592:335::o;5932:127::-;5993:10;5988:3;5984:20;5981:1;5974:31;6024:4;6021:1;6014:15;6048:4;6045:1;6038:15;6064:128;6104:3;6135:1;6131:6;6128:1;6125:13;6122:39;;;6141:18;;:::i;:::-;-1:-1:-1;6177:9:1;;6064:128::o;6964:127::-;7025:10;7020:3;7016:20;7013:1;7006:31;7056:4;7053:1;7046:15;7080:4;7077:1;7070:15;7096:125;7136:4;7164:1;7161;7158:8;7155:34;;;7169:18;;:::i;:::-;-1:-1:-1;7206:9:1;;7096:125::o;7226:127::-;7287:10;7282:3;7278:20;7275:1;7268:31;7318:4;7315:1;7308:15;7342:4;7339:1;7332:15;7358:135;7397:3;7418:17;;;7415:43;;7438:18;;:::i;:::-;-1:-1:-1;7485:1:1;7474:13;;7358:135::o;8200:168::-;8240:7;8306:1;8302;8298:6;8294:14;8291:1;8288:21;8283:1;8276:9;8269:17;8265:45;8262:71;;;8313:18;;:::i;:::-;-1:-1:-1;8353:9:1;;8200:168::o;8373:217::-;8413:1;8439;8429:132;;8483:10;8478:3;8474:20;8471:1;8464:31;8518:4;8515:1;8508:15;8546:4;8543:1;8536:15;8429:132;-1:-1:-1;8575:9:1;;8373:217::o;12537:251::-;12607:6;12660:2;12648:9;12639:7;12635:23;12631:32;12628:52;;;12676:1;12673;12666:12;12628:52;12708:9;12702:16;12727:31;12752:5;12727:31;:::i;12793:980::-;13055:4;13103:3;13092:9;13088:19;13134:6;13123:9;13116:25;13160:2;13198:6;13193:2;13182:9;13178:18;13171:34;13241:3;13236:2;13225:9;13221:18;13214:31;13265:6;13300;13294:13;13331:6;13323;13316:22;13369:3;13358:9;13354:19;13347:26;;13408:2;13400:6;13396:15;13382:29;;13429:1;13439:195;13453:6;13450:1;13447:13;13439:195;;;13518:13;;-1:-1:-1;;;;;13514:39:1;13502:52;;13609:15;;;;13574:12;;;;13550:1;13468:9;13439:195;;;-1:-1:-1;;;;;;;13690:32:1;;;;13685:2;13670:18;;13663:60;-1:-1:-1;;;13754:3:1;13739:19;13732:35;13651:3;12793:980;-1:-1:-1;;;12793:980:1:o;14390:306::-;14478:6;14486;14494;14547:2;14535:9;14526:7;14522:23;14518:32;14515:52;;;14563:1;14560;14553:12;14515:52;14592:9;14586:16;14576:26;;14642:2;14631:9;14627:18;14621:25;14611:35;;14686:2;14675:9;14671:18;14665:25;14655:35;;14390:306;;;;;:::o
Swarm Source
ipfs://e0b8c29967b5e5cbf2dc12d62c30a48f2434262bbf2001a35159223afd120438
Age | Block | Fee Address | BC Fee Address | Voting Power | Jailed | Incoming |
---|
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.