Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
1,000,000,000,000,000 SAITAMAMOON
Holders
112
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
1,524,625,517,068.5817744 SAITAMAMOONValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
SaitamaMoon
Compiler Version
v0.6.12+commit.27d51765
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-11-14 */ // SPDX-License-Identifier: Unlicensed // https://t.me/saitamamooneth // https://saitamamoon.io/ // https://discord.gg/KzEYs4RT //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&***(@@@@@@@@@@@@@@@(/**&@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@(**@@@@@@@@@@@@@@@@@***********#@@@@@@#*(@@@@@& @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@&*****************@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ..& @@@@@@@@@@@@@@@@@@@@@@@@@***************@ &.. #@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ //@@@@@@@@@@@@@@@@@@@@@@@@@@@%*@ . @@@@@@@@@@@@@@@@@@@@@@@@**********@ / @@*@@@@@@@@@@@@@@@@@@@@@@@@@@ //@@@@@@@@@@@@@@@@@@@@@@@@/#@@@@ ( &@@@@@@@@@@@@@@@@@@@@@******( & **@@@*@@@@@@@@@@@@@@@@@@@@@@@ //@@@@@@@@@@@@@@@@@@@@@@*@@@@@@@ . &@@@@@&*. ,/&@@@@#( . (*****@@%*@@@@@@@@@@@@@@@@@@@@ //@@@@@@@@@@@@@@@@@@@,,@@@@@@@@@& . .. @********@@*@@@@@@@@@@@@@@@@@@ //@@@@@@@@@@@@@@@@@*@@@@@@@@@@@@@ .& . @. #**********%@*@@@@@@@@@@@@@@@@ //@@@@@@@@@@@@@@@#&@@@@@@@@@@@@@( , , &##**********@@*@@@@@@@@@@@@@@ //@@@@@@@@@@@@@@*@@@@@@@@@@@@@@@@@ & @ %###**********..@@/@@@@@@@@@@@@ //@@@@@@@@@@@@*@@@@@@@@@@@@@@@@@. .*************...@*@@@@@@@@@@@ //@@@@@@@@@@@*@@@@@@@@@@@@@@@@@@@@#. ..&**************,*...@#@@@@@@@@@@ //@@@@@@@@@@*@@@@@@@@@@@@@@@@@@@@@, /(*******************@@#@@@@@@@@ //@@@@@@@@@*@@@@@@@@@@@@@@@@@@, %/****************(@(@@@@@@@ //@@@@@@@@*@@@@@@@@@@@@@@@@* , . . . %(*****(#######*#@@@@@@@@ //@@@@@@@*@@@@@@@@@@@@@@@@@@@@@ . .@@#@* (@(@& ( @*******############@/@@@@@@ //@@@@@@&@@@@@@@@@@@@@@@@@@@ .. @&@@@ @@@&@ . @***##############@*@@@@@ //@@@@@@*@@@@@@@@@@@@@@@@ ( / (/(#############*@@@@@@ //@@@@@@@@@@@@@@@@@@@@@@ . , @############/*@*@@@@ //@@@@@*@@@@@@@@@@@@@@@ ..../ .@. .&. ,.... /*(#######****@*@@@@ //@@@@@*@@@@@@@@@@@@@@@.@@@@ , . &###.**************%&@@@@ //@@@@@*@@@@@@@@@@@@@@@@@@@ & .% #######************&@@@@ //@@@@@*@@@@@@@@@@@@@@@@@@ & // #..% #######**********%&@@@@ //@@@@@*@@@@@@@@@@@@@@@@& / ,@@@@@@@ @ @######*********%/@@@@ //@@@@@#@@@@@@@@@@@@@@@..*, @ #@@@@@@@@@ @ *,..@####*********@*@@@@ //@@@@@@(@@@@@@@@@@@@@@@@@* & @@@@@ .@ &########*********@*@@@@ //@@@@@@*@@@@@@@@@@@@@@@@@/ @,. / ./@ &##########/*****@(@@@@@ //@@@@@@@*@@@@@@@@@@@@@@@@@ ../.@/...@...(@.%.. &################@/@@@@@ //@@@@@@@%@@@@@@@@@@@@@@@@@ * ..............(.... ,. %#****##########@*@@@@@@ //@@@@@@@@*@@@@@@@@@@@@@@@@ .@ #, & # &*.............#/ .* * /( %. @****##########@*@@@@@@@ //@@@@@@@@@*@@@@@@@@@@@@@@@@@&# . # . .... * ., @#**@(**##########@*@@@@@@@@ //@@@@@@@@@@*@%@@@@@@@@@@@@@@@. /#******#########@*@@@@@@@@@ //@@@@@@@@@@@(@*******@@@@@@@ .@ , * @. *******######&@*@@@@@@@@@@ //@@@@@@@@@@@@@*@******######### . @##*********###@&#@@@@@@@@@@@ //@@@@@@@@@@@@@@/&#*****######@* **# . %** &***********@@*@@@@@@@@@@@@@ //@@@@@@@@@@@@@@@@*@/****(####. . . (*********@@*@@@@@@@@@@@@@@@ //@@@@@@@@@@@@@@@@@@*@@*****. .@ ,% .# #. @ @. .#****@@*@@@@@@@@@@@@@@@@@ //@@@@@@@@@@@@@@@@@@@@*@@****@.*. .... /( ## ..* /..@***/@@*@@@@@@@@@@@@@@@@@@@ //@@@@@@@@@@@@@@@@@@@@@@%@& ....%. .%... .@@@@@@@@@@@@@@@@@@@@@@@@ //@@@@@@@@@@@@@@@@@@@@ ** #....*. .... ......@ %. #@@@@@@@@@@@@@@@@@@@ //@@@@@@@@@@@@@@@@@@@@ *. .( .&(.................(& & / @@@@@@@@@@@@@@@@@@@ //@@@@@@@@@@@@@@@@@@@@ .@ * .#.................../ % , @. ,@@@@@@@@@@@@@@@@@@@ //@@@@@@@@@@@@@@@@@@@@@@@@@. . / ......................... % & *@@@@@@@@@@@@@@@@@@@@@@@@ //@@@@@@@@@@@@@@@@@@@@@@@@@@&@...@ @ . .@@@@@@@@@@@@@@@@@@@@@@@@@. @ @...@&@@@@@@@@@@@@@@@@@@@@@@@@@ //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@,*@@@. ...@@@@@@@@((*********/(@@@@@@@@.. .@@@*,@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ // .oOOOo. Oo oO // o o o O O o o // O. O o o O O // `OOoo. oOo O Oo O // `O .oOoO' O o .oOoO' `oOOoOO. .oOoO' O o .oOo. .oOo. 'OoOo. // o O o o O O o O o o O o o O O o O o o O // O. .O o O O o o O o O O o O o O o O o O O o // `oooO' `OoO'o o' `oO `OoO'o O o o `OoO'o O o `OoO' `OoO' o O ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// pragma solidity ^0.6.12; interface IERC20 { 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 ); } /** * @dev Wrappers over Solidity's arithmetic operations with added overflow * checks. * * Arithmetic operations in Solidity wrap on overflow. This can easily result * in bugs, because programmers usually assume that an overflow raises an * error, which is the standard behavior in high level programming languages. * `SafeMath` restores this intuition by reverting the transaction when an * operation overflows. * * Using this library instead of the unchecked operations eliminates an entire * class of bugs, so it's recommended to use it always. */ library SafeMath { /** * @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) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @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 sub(a, b, "SafeMath: subtraction overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @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) { // 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 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts 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) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. Reverts 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) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts 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 mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message 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, string memory errorMessage ) internal pure returns (uint256) { 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) { // According to EIP-1052, 0x0 is the value returned for not-yet created accounts // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned // for accounts without code, i.e. `keccak256('')` bytes32 codehash; bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; // solhint-disable-next-line no-inline-assembly assembly { codehash := extcodehash(account) } return (codehash != accountHash && codehash != 0x0); } /** * @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" ); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (bool success, ) = recipient.call{value: amount}(""); require( success, "Address: unable to send value, recipient may have reverted" ); } /** * @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" ); return _functionCallWithValue(target, data, value, errorMessage); } function _functionCallWithValue( address target, bytes memory data, uint256 weiValue, string memory errorMessage ) private returns (bytes memory) { require(isContract(target), "Address: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.call{value: weiValue}( data ); 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 // solhint-disable-next-line no-inline-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } abstract contract Context { function _msgSender() internal view virtual returns (address payable) { return msg.sender; } function _msgData() internal view virtual returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } contract Ownable is Context { address private _owner; address private _previousOwner; uint256 private _lockTime; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() internal { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view 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 { emit OwnershipTransferred(_owner, address(0)); _owner = 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" ); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } function geUnlockTime() public view returns (uint256) { return _lockTime; } //Locks the contract for owner for the amount of time provided function lock(uint256 time) public virtual onlyOwner { _previousOwner = _owner; _owner = address(0); _lockTime = now + time; emit OwnershipTransferred(_owner, address(0)); } //Unlocks the contract for owner when _lockTime is exceeds function unlock() public virtual { require( _previousOwner == msg.sender, "You don't have permission to unlock" ); require(now > _lockTime, "Contract is locked until 7 days"); emit OwnershipTransferred(_owner, _previousOwner); _owner = _previousOwner; } } 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; } contract SaitamaMoon is Context, IERC20, Ownable { using SafeMath for uint256; using Address for address; mapping(address => bool) bots; mapping(address => uint256) private rOwned; mapping(address => uint256) private tOwned; mapping(address => mapping(address => uint256)) private allowances; mapping(address => bool) private isExcludedFromFees; mapping(address => bool) private isExcludedFromReflections; address[] private _excluded; uint256 private constant MAX = ~uint256(0); uint256 private tTotal = 1000000000 * 10**6 * 10**9; uint256 private rTotal = (MAX - (MAX % tTotal)); uint256 private tFeeTotal; uint256 public numHolders = 0; uint256 public burnedTotal = 0; uint256 public reflectionTax = 0; // set to 2 after launch uint256 private previousReflectionTax = reflectionTax; uint256 public marketingTax = 0; //set to 6 after launch uint256 private previousMarketingTax = marketingTax; uint256 public burnTax = 0; //set to 2 after launch uint256 private previousBurnTax = burnTax; IUniswapV2Router02 public uniswapV2Router; address public uniswapV2Pair; address payable private marketingFeeBeneficiary; bool inSwap; bool public swapEnabled = false; uint256 public maxTransactionAmount = 5000000 * 10**6 * 10**9; uint256 private numTokensToSellForMarketing = 500000 * 10**6 * 10**9; event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap); event SwapEnabledUpdated(bool enabled); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiqudity ); event BurnedTokens(uint256 tokensBurned); modifier lockTheSwap() { inSwap = true; _; inSwap = false; } constructor() public { rOwned[_msgSender()] = rTotal; //exclude owner and this contract from fee marketingFeeBeneficiary = payable(owner()); isExcludedFromFees[owner()] = true; isExcludedFromFees[address(this)] = true; excludeFromReward(0x000000000000000000000000000000000000dEaD); emit Transfer(address(0), _msgSender(), tTotal); } function setRouterAddress(address _router) external onlyOwner { uniswapV2Router = IUniswapV2Router02(_router); } function setPairAddress(address _pair) external onlyOwner { uniswapV2Pair = _pair; } function updateMarketingFeeBeneficiary(address _newBeneficiary) external { require(msg.sender == marketingFeeBeneficiary, "Forbidden"); marketingFeeBeneficiary = payable(_newBeneficiary); } function updateTokensRequiredForEthSwap(uint256 _tokensRequired) external { require(msg.sender == marketingFeeBeneficiary, "Forbidden"); numTokensToSellForMarketing = _tokensRequired; } function updateBots(address[] memory _addresses, bool _add) external onlyOwner { if (_add) { for (uint256 i = 0; i < _addresses.length; i++) { bots[_addresses[i]] = true; } } else { for (uint256 i = 0; i < _addresses.length; i++) { bots[_addresses[i]] = false; } } } function name() public view returns (string memory) { return "Saitama Moon"; } function symbol() public view returns (string memory) { return "SAITAMAMOON"; } function decimals() public view returns (uint8) { return 9; } function totalSupply() public view override returns (uint256) { return tTotal; } function balanceOf(address account) public view override returns (uint256) { if (isExcludedFromReflections[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 burn(uint256 _amount) external onlyOwner { require(_amount <= burnedTotal); burnedTotal = burnedTotal.sub(_amount); tOwned[0x000000000000000000000000000000000000dEaD] = tOwned[ 0x000000000000000000000000000000000000dEaD ].add(_amount); emit Transfer( address(this), 0x000000000000000000000000000000000000dEaD, _amount ); } 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 isExcludedFromReward(address account) public view returns (bool) { return isExcludedFromReflections[account]; } function totalFees() public view returns (uint256) { return tFeeTotal; } function deliver(uint256 tAmount) public { address sender = _msgSender(); require( !isExcludedFromReflections[sender], "Excluded addresses cannot call this function" ); (uint256 rAmount, , , , , , ) = _getValues(tAmount); rOwned[sender] = rOwned[sender].sub(rAmount); rTotal = rTotal.sub(rAmount); tFeeTotal = tFeeTotal.add(tAmount); } 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( !isExcludedFromReflections[account], "Account is already excluded" ); if (rOwned[account] > 0) { tOwned[account] = tokenFromReflection(rOwned[account]); } isExcludedFromReflections[account] = true; _excluded.push(account); } function includeInReward(address account) external onlyOwner { require( isExcludedFromReflections[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; isExcludedFromReflections[account] = false; _excluded.pop(); break; } } } function excludeFromFee(address account) public onlyOwner { isExcludedFromFees[account] = true; } function includeInFee(address account) public onlyOwner { isExcludedFromFees[account] = false; } function setReflectionFeePercent(uint256 taxFee) external onlyOwner { reflectionTax = taxFee; } function setMarketingFeePercent(uint256 liquidityFee) external onlyOwner { marketingTax = liquidityFee; } function setBurnFeePercent(uint256 _burnTax) external onlyOwner { burnTax = _burnTax; } function setMaxTransactionPercent(uint256 _maxTxPercent) external onlyOwner { maxTransactionAmount = tTotal.mul(_maxTxPercent).div(10**2); } function setSwapEnabled(bool _enabled) public onlyOwner { swapEnabled = _enabled; emit SwapEnabledUpdated(_enabled); } //to recieve ETH from uniswapV2Router when swaping receive() external payable {} function reflectionFee(uint256 rFee, uint256 tFee) private { rTotal = rTotal.sub(rFee); tFeeTotal = tFeeTotal.add(tFee); } function _getValues(uint256 tAmount) private view returns ( uint256, uint256, uint256, uint256, uint256, uint256, uint256 ) { ( uint256 tTransferAmount, uint256 tFee, uint256 tMarketing, uint256 tBurn ) = getTaxedValues(tAmount); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues( tAmount, tFee, tMarketing, tBurn, _getRate() ); return ( rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tMarketing, tBurn ); } function getTaxedValues(uint256 _untaxedAmount) private view returns ( uint256, uint256, uint256, uint256 ) { uint256 rFee = calculateReflectionFee(_untaxedAmount); uint256 marketingFee = calculateMarketingFee(_untaxedAmount); uint256 burnFee = calculateBurnFee(_untaxedAmount); uint256 taxedAmount = _untaxedAmount .sub(rFee) .sub(marketingTax) .sub(burnFee); return (taxedAmount, rFee, marketingFee, burnFee); } function _getRValues( uint256 tAmount, uint256 tFee, uint256 tMarketing, uint256 tBurn, uint256 currentRate ) private pure returns ( uint256, uint256, uint256 ) { uint256 rAmount = tAmount.mul(currentRate); uint256 rReflection = tFee.mul(currentRate); uint256 rMarketing = tMarketing.mul(currentRate); uint256 rBurn = tBurn.mul(currentRate); uint256 rTransferAmount = rAmount.sub(rReflection).sub(rMarketing).sub( rBurn ); return (rAmount, rTransferAmount, rReflection); } 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 takeMarketingFee(uint256 tLiquidity) private { uint256 currentRate = _getRate(); uint256 rLiquidity = tLiquidity.mul(currentRate); rOwned[address(this)] = rOwned[address(this)].add(rLiquidity); if (isExcludedFromReflections[address(this)]) tOwned[address(this)] = tOwned[address(this)].add(tLiquidity); } function takeBurnFee(uint256 _fee) private { burnedTotal = burnedTotal.add(_fee); emit BurnedTokens(_fee); } function calculateReflectionFee(uint256 _amount) private view returns (uint256) { return _amount.mul(reflectionTax).div(10**2); } function calculateMarketingFee(uint256 _amount) private view returns (uint256) { return _amount.mul(marketingTax).div(10**2); } function calculateBurnFee(uint256 _amount) private view returns (uint256) { return _amount.mul(burnTax).div(10**2); } function removeAllFee() private { if (reflectionTax == 0 && marketingTax == 0 && burnTax == 0) return; previousReflectionTax = reflectionTax; previousMarketingTax = marketingTax; previousBurnTax = burnTax; reflectionTax = 0; marketingTax = 0; burnTax = 0; } function restoreAllFee() private { reflectionTax = previousReflectionTax; marketingTax = previousMarketingTax; burnTax = previousBurnTax; } function isExcludedFromFee(address account) public view returns (bool) { return isExcludedFromFees[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 { if (balanceOf(to) == 0 && amount > 0) { numHolders += 1; } require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(!(bots[from] || bots[to]), "Saitama: Blacklisted from trades"); require(amount > 0, "Transfer amount must be greater than zero"); if (from != owner() && to != owner()) require( amount <= maxTransactionAmount, "Transfer amount exceeds the maxTxAmount." ); if ( (balanceOf(address(this)) >= numTokensToSellForMarketing) && !inSwap && from != uniswapV2Pair && swapEnabled ) { swapTokensForEth(numTokensToSellForMarketing); } //transfer amount, it will take tax, burn, liquidity fee _tokenTransfer( from, to, amount, !(isExcludedFromFees[from] || isExcludedFromFees[to]) ); if (balanceOf(from) == 0 && amount > 0) { numHolders -= 1; } } function manualSwapTokensForEth(uint256 _tokenAmount) external lockTheSwap { require(msg.sender == marketingFeeBeneficiary, "Forbidden"); // 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, marketingFeeBeneficiary, block.timestamp ); } function swapTokensForEth(uint256 tokenAmount) private lockTheSwap { // 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, marketingFeeBeneficiary, block.timestamp ); } function recoverETH() external onlyOwner { payable(owner()).transfer(address(this).balance); } //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 ( isExcludedFromReflections[sender] && !isExcludedFromReflections[recipient] ) { _transferFromExcluded(sender, recipient, amount); } else if ( !isExcludedFromReflections[sender] && isExcludedFromReflections[recipient] ) { _transferToExcluded(sender, recipient, amount); } else if ( !isExcludedFromReflections[sender] && !isExcludedFromReflections[recipient] ) { _transferStandard(sender, recipient, amount); } else if ( isExcludedFromReflections[sender] && isExcludedFromReflections[recipient] ) { _transferBothExcluded(sender, recipient, amount); } else { _transferStandard(sender, recipient, amount); } if (!takeFee) { restoreAllFee(); } } function _transferBothExcluded( address sender, address recipient, uint256 tAmount ) private { ( uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity, uint256 tBurn ) = _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); takeMarketingFee(tLiquidity); takeBurnFee(tBurn); reflectionFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferStandard( address sender, address recipient, uint256 tAmount ) private { ( uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity, uint256 tBurn ) = _getValues(tAmount); rOwned[sender] = rOwned[sender].sub(rAmount); rOwned[recipient] = rOwned[recipient].add(rTransferAmount); takeMarketingFee(tLiquidity); takeBurnFee(tBurn); reflectionFee(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 tBurn ) = _getValues(tAmount); rOwned[sender] = rOwned[sender].sub(rAmount); tOwned[recipient] = tOwned[recipient].add(tTransferAmount); rOwned[recipient] = rOwned[recipient].add(rTransferAmount); takeMarketingFee(tLiquidity); takeBurnFee(tBurn); reflectionFee(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 burnFee ) = _getValues(tAmount); tOwned[sender] = tOwned[sender].sub(tAmount); rOwned[sender] = rOwned[sender].sub(rAmount); rOwned[recipient] = rOwned[recipient].add(rTransferAmount); takeBurnFee(burnFee); takeMarketingFee(tLiquidity); reflectionFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensBurned","type":"uint256"}],"name":"BurnedTokens","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":"SwapEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"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":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"burnTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnedTotal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"deliver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"geUnlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenAmount","type":"uint256"}],"name":"manualSwapTokensForEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"numHolders","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"recoverETH","outputs":[],"stateMutability":"nonpayable","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":"reflectionTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_burnTax","type":"uint256"}],"name":"setBurnFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"liquidityFee","type":"uint256"}],"name":"setMarketingFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxTxPercent","type":"uint256"}],"name":"setMaxTransactionPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"}],"name":"setPairAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"}],"name":"setReflectionFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_router","type":"address"}],"name":"setRouterAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","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":[],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_addresses","type":"address[]"},{"internalType":"bool","name":"_add","type":"bool"}],"name":"updateBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newBeneficiary","type":"address"}],"name":"updateMarketingFeeBeneficiary","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokensRequired","type":"uint256"}],"name":"updateTokensRequiredForEthSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
608060405269d3c21bcecceda1000000600a55600a54600019816200002057fe5b0660001903600b556000600d556000600e556000600f55600f54601055600060115560115460125560006013556013546014556000601760156101000a81548160ff02191690831515021790555069010f0cf064dd59200000601855681b1ae4d6e2ef5000006019553480156200009657600080fd5b506000620000a96200033b60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600b54600460006200015e6200033b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550620001ac6200034360201b60201c565b601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160076000620002026200034360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620002be61dead6200036c60201b60201c565b620002ce6200033b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600a546040518082815260200191505060405180910390a362000c4c565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6200037c6200033b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146200043d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615620004fe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115620005db5762000597600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546200069960201b60201c565b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506009819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600b54821115620006f8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a81526020018062006bd6602a913960400191505060405180910390fd5b60006200070a6200072e60201b60201c565b90506200072681846200076860201b62003bb31790919060201c565b915050919050565b600080600062000743620007ba60201b60201c565b915091506200076181836200076860201b62003bb31790919060201c565b9250505090565b6000620007b283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062000a6b60201b60201c565b905092915050565b6000806000600b5490506000600a54905060005b60098054905081101562000a2557826004600060098481548110620007ef57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541180620008d857508160056000600984815481106200087057fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b15620008f157600b54600a549450945050505062000a67565b6200098260046000600984815481106200090757fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548462000b3660201b62003bfd1790919060201c565b925062000a1560056000600984815481106200099a57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548362000b3660201b62003bfd1790919060201c565b91508080600101915050620007ce565b5062000a44600a54600b546200076860201b62003bb31790919060201c565b82101562000a5e57600b54600a5493509350505062000a67565b81819350935050505b9091565b6000808311829062000b1b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101562000adf57808201518184015260208101905062000ac2565b50505050905090810190601f16801562000b0d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858162000b2857fe5b049050809150509392505050565b600062000b8083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525062000b8860201b60201c565b905092915050565b600083831115829062000c39576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101562000bfd57808201518184015260208101905062000be0565b50505050905090810190601f16801562000c2b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b615f7a8062000c5c6000396000f3fe6080604052600436106102b25760003560e01c80634e123e5b11610175578063a69df4b5116100dc578063cea2695811610095578063e01af92c1161006f578063e01af92c1461100a578063ea2f0b3714611047578063eec3602114611098578063f2fde38b146110d3576102b9565b8063cea2695814610f0f578063dd46706414610f4a578063dd62ed3e14610f85576102b9565b8063a69df4b514610d35578063a9059cbb14610d4c578063aeb9670414610dbd578063b6c5232414610e8e578063c8c8ebe414610eb9578063cc642cc214610ee4576102b9565b806388f820201161012e57806388f8202014610b005780638da5cb5b14610b6757806395d89b4114610ba8578063a10fd7be14610c38578063a22d483214610c73578063a457c2d714610cc4576102b9565b80634e123e5b1461096457806352390c021461099f5780635342acb4146109f05780636ddd171314610a5757806370a0823114610a84578063715018a614610ae9576102b9565b80632d8381191161021957806341cb87fc116101d257806341cb87fc146107b057806342966c6814610801578063437823ec1461083c5780634549b0391461088d578063457c194c146108e857806349bd5a5e14610923576102b9565b80632d8381191461060b578063313ce5671461065a5780633685d4191461068857806339509351146106d95780633ae2f3541461074a5780633bd5d17314610775576102b9565b80631d2cb02d1161026b5780631d2cb02d1461046d5780631d4eaead146104985780631f7ede2b146104c357806322fcc530146104fe57806323b872dd146105295780632b7e0a2f146105ba576102b9565b80630614117a146102be57806306fdde03146102d5578063095ea7b31461036557806313114a9d146103d65780631694505e1461040157806318160ddd14610442576102b9565b366102b957005b600080fd5b3480156102ca57600080fd5b506102d3611124565b005b3480156102e157600080fd5b506102ea61123c565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561032a57808201518184015260208101905061030f565b50505050905090810190601f1680156103575780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561037157600080fd5b506103be6004803603604081101561038857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611279565b60405180821515815260200191505060405180910390f35b3480156103e257600080fd5b506103eb611297565b6040518082815260200191505060405180910390f35b34801561040d57600080fd5b506104166112a1565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561044e57600080fd5b506104576112c7565b6040518082815260200191505060405180910390f35b34801561047957600080fd5b506104826112d1565b6040518082815260200191505060405180910390f35b3480156104a457600080fd5b506104ad6112d7565b6040518082815260200191505060405180910390f35b3480156104cf57600080fd5b506104fc600480360360208110156104e657600080fd5b81019080803590602001909291905050506112dd565b005b34801561050a57600080fd5b506105136113af565b6040518082815260200191505060405180910390f35b34801561053557600080fd5b506105a26004803603606081101561054c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506113b5565b60405180821515815260200191505060405180910390f35b3480156105c657600080fd5b50610609600480360360208110156105dd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061148e565b005b34801561061757600080fd5b506106446004803603602081101561062e57600080fd5b8101908080359060200190929190505050611595565b6040518082815260200191505060405180910390f35b34801561066657600080fd5b5061066f611619565b604051808260ff16815260200191505060405180910390f35b34801561069457600080fd5b506106d7600480360360208110156106ab57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611622565b005b3480156106e557600080fd5b50610732600480360360408110156106fc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506119ac565b60405180821515815260200191505060405180910390f35b34801561075657600080fd5b5061075f611a5f565b6040518082815260200191505060405180910390f35b34801561078157600080fd5b506107ae6004803603602081101561079857600080fd5b8101908080359060200190929190505050611a65565b005b3480156107bc57600080fd5b506107ff600480360360208110156107d357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611bf7565b005b34801561080d57600080fd5b5061083a6004803603602081101561082457600080fd5b8101908080359060200190929190505050611d03565b005b34801561084857600080fd5b5061088b6004803603602081101561085f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611ef8565b005b34801561089957600080fd5b506108d2600480360360408110156108b057600080fd5b810190808035906020019092919080351515906020019092919050505061201b565b6040518082815260200191505060405180910390f35b3480156108f457600080fd5b506109216004803603602081101561090b57600080fd5b81019080803590602001909291905050506120d4565b005b34801561092f57600080fd5b506109386121a6565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561097057600080fd5b5061099d6004803603602081101561098757600080fd5b81019080803590602001909291905050506121cc565b005b3480156109ab57600080fd5b506109ee600480360360208110156109c257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612299565b005b3480156109fc57600080fd5b50610a3f60048036036020811015610a1357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506125b3565b60405180821515815260200191505060405180910390f35b348015610a6357600080fd5b50610a6c612609565b60405180821515815260200191505060405180910390f35b348015610a9057600080fd5b50610ad360048036036020811015610aa757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061261c565b6040518082815260200191505060405180910390f35b348015610af557600080fd5b50610afe612707565b005b348015610b0c57600080fd5b50610b4f60048036036020811015610b2357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061288d565b60405180821515815260200191505060405180910390f35b348015610b7357600080fd5b50610b7c6128e3565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610bb457600080fd5b50610bbd61290c565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610bfd578082015181840152602081019050610be2565b50505050905090810190601f168015610c2a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610c4457600080fd5b50610c7160048036036020811015610c5b57600080fd5b8101908080359060200190929190505050612949565b005b348015610c7f57600080fd5b50610cc260048036036020811015610c9657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612d18565b005b348015610cd057600080fd5b50610d1d60048036036040811015610ce757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612e24565b60405180821515815260200191505060405180910390f35b348015610d4157600080fd5b50610d4a612ef1565b005b348015610d5857600080fd5b50610da560048036036040811015610d6f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061310e565b60405180821515815260200191505060405180910390f35b348015610dc957600080fd5b50610e8c60048036036040811015610de057600080fd5b8101908080359060200190640100000000811115610dfd57600080fd5b820183602082011115610e0f57600080fd5b80359060200191846020830284011164010000000083111715610e3157600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050919291929080351515906020019092919050505061312c565b005b348015610e9a57600080fd5b50610ea361330e565b6040518082815260200191505060405180910390f35b348015610ec557600080fd5b50610ece613318565b6040518082815260200191505060405180910390f35b348015610ef057600080fd5b50610ef961331e565b6040518082815260200191505060405180910390f35b348015610f1b57600080fd5b50610f4860048036036020811015610f3257600080fd5b8101908080359060200190929190505050613324565b005b348015610f5657600080fd5b50610f8360048036036020811015610f6d57600080fd5b81019080803590602001909291905050506133f6565b005b348015610f9157600080fd5b50610ff460048036036040811015610fa857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506135e7565b6040518082815260200191505060405180910390f35b34801561101657600080fd5b506110456004803603602081101561102d57600080fd5b8101908080351515906020019092919050505061366e565b005b34801561105357600080fd5b506110966004803603602081101561106a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061378c565b005b3480156110a457600080fd5b506110d1600480360360208110156110bb57600080fd5b81019080803590602001909291905050506138af565b005b3480156110df57600080fd5b50611122600480360360208110156110f657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506139a8565b005b61112c613c47565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6111f46128e3565b73ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015611239573d6000803e3d6000fd5b50565b60606040518060400160405280600c81526020017f53616974616d61204d6f6f6e0000000000000000000000000000000000000000815250905090565b600061128d611286613c47565b8484613c4f565b6001905092915050565b6000600c54905090565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600a54905090565b60115481565b60135481565b6112e5613c47565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113a5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600f8190555050565b600e5481565b60006113c2848484613e46565b611483846113ce613c47565b61147e85604051806060016040528060288152602001615e3760289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611434613c47565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546143509092919063ffffffff16565b613c4f565b600190509392505050565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611551576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f466f7262696464656e000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b80601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600b548211156115f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180615d7c602a913960400191505060405180910390fd5b60006115fc614410565b90506116118184613bb390919063ffffffff16565b915050919050565b60006009905090565b61162a613c47565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166117a9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b60005b6009805490508110156119a8578173ffffffffffffffffffffffffffffffffffffffff16600982815481106117dd57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561199b5760096001600980549050038154811061183957fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009828154811061187157fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600980548061196157fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590556119a8565b80806001019150506117ac565b5050565b6000611a556119b9613c47565b84611a5085600660006119ca613c47565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461443b90919063ffffffff16565b613c4f565b6001905092915050565b600f5481565b6000611a6f613c47565b9050600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611b14576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180615ed1602c913960400191505060405180910390fd5b6000611b1f836144c3565b5050505050509050611b7981600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613bfd90919063ffffffff16565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611bd181600b54613bfd90919063ffffffff16565b600b81905550611bec83600c5461443b90919063ffffffff16565b600c81905550505050565b611bff613c47565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cbf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611d0b613c47565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611dcb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600e54811115611dda57600080fd5b611def81600e54613bfd90919063ffffffff16565b600e81905550611e49816005600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461443b90919063ffffffff16565b6005600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061dead73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a350565b611f00613c47565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611fc0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600a54831115612095576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f416d6f756e74206d757374206265206c657373207468616e20737570706c790081525060200191505060405180910390fd5b816120b65760006120a5846144c3565b5050505050509050809150506120ce565b60006120c1846144c3565b5050505050915050809150505b92915050565b6120dc613c47565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461219c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8060118190555050565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461228f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f466f7262696464656e000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b8060198190555050565b6122a1613c47565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612361576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612421576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156124f5576124b1600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611595565b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506009819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b601760159054906101000a900460ff1681565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156126b757600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050612702565b6126ff600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611595565b90505b919050565b61270f613c47565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146127cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600b81526020017f53414954414d414d4f4f4e000000000000000000000000000000000000000000815250905090565b6001601760146101000a81548160ff021916908315150217905550601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612a27576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f466f7262696464656e000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6060600267ffffffffffffffff81118015612a4157600080fd5b50604051908082528060200260200182016040528015612a705781602001602082028036833780820191505090505b5090503081600081518110612a8157fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015612b2357600080fd5b505afa158015612b37573d6000803e3d6000fd5b505050506040513d6020811015612b4d57600080fd5b810190808051906020019092919050505081600181518110612b6b57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612bd230601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684613c4f565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac94783600084601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015612cb8578082015181840152602081019050612c9d565b505050509050019650505050505050600060405180830381600087803b158015612ce157600080fd5b505af1158015612cf5573d6000803e3d6000fd5b50505050506000601760146101000a81548160ff02191690831515021790555050565b612d20613c47565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612de0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000612ee7612e31613c47565b84612ee285604051806060016040528060258152602001615f206025913960066000612e5b613c47565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546143509092919063ffffffff16565b613c4f565b6001905092915050565b3373ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612f97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180615efd6023913960400191505060405180910390fd5b600254421161300e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f436f6e7472616374206973206c6f636b656420756e74696c203720646179730081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600061312261311b613c47565b8484613e46565b6001905092915050565b613134613c47565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146131f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80156132845760005b825181101561327e5760016003600085848151811061321857fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806001019150506131fd565b5061330a565b60005b8251811015613308576000600360008584815181106132a257fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080600101915050613287565b505b5050565b6000600254905090565b60185481565b600d5481565b61332c613c47565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146133ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8060138190555050565b6133fe613c47565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146134be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550804201600281905550600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b613676613c47565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613736576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80601760156101000a81548160ff0219169083151502179055507f436b6cf978c7b6998fcce43dfe4d37e3a0dc2bb780144a2eb55d7138201e8a128160405180821515815260200191505060405180910390a150565b613794613c47565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613854576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6138b7613c47565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613977576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b61399f606461399183600a5461452b90919063ffffffff16565b613bb390919063ffffffff16565b60188190555050565b6139b0613c47565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613a70576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415613af6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180615da66026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000613bf583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506145b1565b905092915050565b6000613c3f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250614350565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613cd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180615ead6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613d5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180615dcc6022913960400191505060405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b6000613e518361261c565b148015613e5e5750600081115b15613e75576001600d600082825401925050819055505b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613efb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180615e886025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613f81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180615d596023913960400191505060405180910390fd5b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806140225750600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15614095576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f53616974616d613a20426c61636b6c69737465642066726f6d2074726164657381525060200191505060405180910390fd5b600081116140ee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180615e5f6029913960400191505060405180910390fd5b6140f66128e3565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561416457506141346128e3565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156141c5576018548111156141c4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180615dee6028913960400191505060405180910390fd5b5b6019546141d13061261c565b101580156141ec5750601760149054906101000a900460ff16155b80156142465750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561425e5750601760159054906101000a900460ff165b1561426f5761426e601954614677565b5b61431c838383600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806143165750600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15614983565b60006143278461261c565b1480156143345750600081115b1561434b576001600d600082825403925050819055505b505050565b60008383111582906143fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156143c25780820151818401526020810190506143a7565b50505050905090810190601f1680156143ef5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080600061441d614c94565b915091506144348183613bb390919063ffffffff16565b9250505090565b6000808284019050838110156144b9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60008060008060008060008060008060006144dd8c614f25565b935093509350935060008060006144fe8f8787876144f9614410565b614fa6565b925092509250828282898989899d509d509d509d509d509d509d5050505050505050919395979092949650565b60008083141561453e57600090506145ab565b600082840290508284828161454f57fe5b04146145a6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180615e166021913960400191505060405180910390fd5b809150505b92915050565b6000808311829061465d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015614622578082015181840152602081019050614607565b50505050905090810190601f16801561464f5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161466957fe5b049050809150509392505050565b6001601760146101000a81548160ff0219169083151502179055506060600267ffffffffffffffff811180156146ac57600080fd5b506040519080825280602002602001820160405280156146db5781602001602082028036833780820191505090505b50905030816000815181106146ec57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561478e57600080fd5b505afa1580156147a2573d6000803e3d6000fd5b505050506040513d60208110156147b857600080fd5b8101908080519060200190929190505050816001815181106147d657fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061483d30601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684613c4f565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac94783600084601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015614923578082015181840152602081019050614908565b505050509050019650505050505050600060405180830381600087803b15801561494c57600080fd5b505af1158015614960573d6000803e3d6000fd5b50505050506000601760146101000a81548160ff02191690831515021790555050565b806149915761499061505a565b5b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015614a345750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15614a4957614a448484846150bc565b614c80565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015614aec5750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15614b0157614afc84848461532a565b614c7f565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015614ba55750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15614bba57614bb5848484615598565b614c7e565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015614c5c5750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15614c7157614c6c848484615771565b614c7d565b614c7c848484615598565b5b5b5b5b80614c8e57614c8d615a74565b5b50505050565b6000806000600b5490506000600a54905060005b600980549050811015614ee857826004600060098481548110614cc757fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541180614dae5750816005600060098481548110614d4657fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b15614dc557600b54600a5494509450505050614f21565b614e4e6004600060098481548110614dd957fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484613bfd90919063ffffffff16565b9250614ed96005600060098481548110614e6457fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483613bfd90919063ffffffff16565b91508080600101915050614ca8565b50614f00600a54600b54613bb390919063ffffffff16565b821015614f1857600b54600a54935093505050614f21565b81819350935050505b9091565b6000806000806000614f3686615a91565b90506000614f4387615ac2565b90506000614f5088615af3565b90506000614f8d82614f7f601154614f71888e613bfd90919063ffffffff16565b613bfd90919063ffffffff16565b613bfd90919063ffffffff16565b9050808484849750975097509750505050509193509193565b600080600080614fbf858a61452b90919063ffffffff16565b90506000614fd6868a61452b90919063ffffffff16565b90506000614fed878a61452b90919063ffffffff16565b90506000615004888a61452b90919063ffffffff16565b9050600061503f8261503185615023888a613bfd90919063ffffffff16565b613bfd90919063ffffffff16565b613bfd90919063ffffffff16565b90508481859750975097505050505050955095509592505050565b6000600f5414801561506e57506000601154145b801561507c57506000601354145b15615086576150ba565b600f546010819055506011546012819055506013546014819055506000600f81905550600060118190555060006013819055505b565b60008060008060008060006150d0886144c3565b965096509650965096509650965061513088600560008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613bfd90919063ffffffff16565b600560008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506151c587600460008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613bfd90919063ffffffff16565b600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061525a86600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461443b90919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506152a681615b24565b6152af82615b79565b6152b98584615d1e565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a350505050505050505050565b600080600080600080600061533e886144c3565b965096509650965096509650965061539e87600460008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613bfd90919063ffffffff16565b600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061543384600560008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461443b90919063ffffffff16565b600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506154c886600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461443b90919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061551482615b79565b61551d81615b24565b6155278584615d1e565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a350505050505050505050565b60008060008060008060006155ac886144c3565b965096509650965096509650965061560c87600460008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613bfd90919063ffffffff16565b600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506156a186600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461443b90919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506156ed82615b79565b6156f681615b24565b6157008584615d1e565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a350505050505050505050565b6000806000806000806000615785886144c3565b96509650965096509650965096506157e588600560008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613bfd90919063ffffffff16565b600560008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061587a87600460008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613bfd90919063ffffffff16565b600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061590f84600560008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461443b90919063ffffffff16565b600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506159a486600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461443b90919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506159f082615b79565b6159f981615b24565b615a038584615d1e565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a350505050505050505050565b601054600f81905550601254601181905550601454601381905550565b6000615abb6064615aad600f548561452b90919063ffffffff16565b613bb390919063ffffffff16565b9050919050565b6000615aec6064615ade6011548561452b90919063ffffffff16565b613bb390919063ffffffff16565b9050919050565b6000615b1d6064615b0f6013548561452b90919063ffffffff16565b613bb390919063ffffffff16565b9050919050565b615b3981600e5461443b90919063ffffffff16565b600e819055507f827adaebc9c47b3ef636b7836e0c06ccf1a746b9ceaf723363ab531fc55fa155816040518082815260200191505060405180910390a150565b6000615b83614410565b90506000615b9a828461452b90919063ffffffff16565b9050615bee81600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461443b90919063ffffffff16565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615615d1957615cd583600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461443b90919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b615d3382600b54613bfd90919063ffffffff16565b600b81905550615d4e81600c5461443b90919063ffffffff16565b600c81905550505056fe45524332303a207472616e7366657220746f20746865207a65726f2061646472657373416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573735472616e7366657220616d6f756e74206578636565647320746865206d61785478416d6f756e742e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63655472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573734578636c75646564206164647265737365732063616e6e6f742063616c6c20746869732066756e6374696f6e596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6f636b45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220bd1501f509d8f6705cb3911c12db1ae29b10b16ba3820468cea0c211fe3c0ffb64736f6c634300060c0033416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e73
Deployed Bytecode
0x6080604052600436106102b25760003560e01c80634e123e5b11610175578063a69df4b5116100dc578063cea2695811610095578063e01af92c1161006f578063e01af92c1461100a578063ea2f0b3714611047578063eec3602114611098578063f2fde38b146110d3576102b9565b8063cea2695814610f0f578063dd46706414610f4a578063dd62ed3e14610f85576102b9565b8063a69df4b514610d35578063a9059cbb14610d4c578063aeb9670414610dbd578063b6c5232414610e8e578063c8c8ebe414610eb9578063cc642cc214610ee4576102b9565b806388f820201161012e57806388f8202014610b005780638da5cb5b14610b6757806395d89b4114610ba8578063a10fd7be14610c38578063a22d483214610c73578063a457c2d714610cc4576102b9565b80634e123e5b1461096457806352390c021461099f5780635342acb4146109f05780636ddd171314610a5757806370a0823114610a84578063715018a614610ae9576102b9565b80632d8381191161021957806341cb87fc116101d257806341cb87fc146107b057806342966c6814610801578063437823ec1461083c5780634549b0391461088d578063457c194c146108e857806349bd5a5e14610923576102b9565b80632d8381191461060b578063313ce5671461065a5780633685d4191461068857806339509351146106d95780633ae2f3541461074a5780633bd5d17314610775576102b9565b80631d2cb02d1161026b5780631d2cb02d1461046d5780631d4eaead146104985780631f7ede2b146104c357806322fcc530146104fe57806323b872dd146105295780632b7e0a2f146105ba576102b9565b80630614117a146102be57806306fdde03146102d5578063095ea7b31461036557806313114a9d146103d65780631694505e1461040157806318160ddd14610442576102b9565b366102b957005b600080fd5b3480156102ca57600080fd5b506102d3611124565b005b3480156102e157600080fd5b506102ea61123c565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561032a57808201518184015260208101905061030f565b50505050905090810190601f1680156103575780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561037157600080fd5b506103be6004803603604081101561038857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611279565b60405180821515815260200191505060405180910390f35b3480156103e257600080fd5b506103eb611297565b6040518082815260200191505060405180910390f35b34801561040d57600080fd5b506104166112a1565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561044e57600080fd5b506104576112c7565b6040518082815260200191505060405180910390f35b34801561047957600080fd5b506104826112d1565b6040518082815260200191505060405180910390f35b3480156104a457600080fd5b506104ad6112d7565b6040518082815260200191505060405180910390f35b3480156104cf57600080fd5b506104fc600480360360208110156104e657600080fd5b81019080803590602001909291905050506112dd565b005b34801561050a57600080fd5b506105136113af565b6040518082815260200191505060405180910390f35b34801561053557600080fd5b506105a26004803603606081101561054c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506113b5565b60405180821515815260200191505060405180910390f35b3480156105c657600080fd5b50610609600480360360208110156105dd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061148e565b005b34801561061757600080fd5b506106446004803603602081101561062e57600080fd5b8101908080359060200190929190505050611595565b6040518082815260200191505060405180910390f35b34801561066657600080fd5b5061066f611619565b604051808260ff16815260200191505060405180910390f35b34801561069457600080fd5b506106d7600480360360208110156106ab57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611622565b005b3480156106e557600080fd5b50610732600480360360408110156106fc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506119ac565b60405180821515815260200191505060405180910390f35b34801561075657600080fd5b5061075f611a5f565b6040518082815260200191505060405180910390f35b34801561078157600080fd5b506107ae6004803603602081101561079857600080fd5b8101908080359060200190929190505050611a65565b005b3480156107bc57600080fd5b506107ff600480360360208110156107d357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611bf7565b005b34801561080d57600080fd5b5061083a6004803603602081101561082457600080fd5b8101908080359060200190929190505050611d03565b005b34801561084857600080fd5b5061088b6004803603602081101561085f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611ef8565b005b34801561089957600080fd5b506108d2600480360360408110156108b057600080fd5b810190808035906020019092919080351515906020019092919050505061201b565b6040518082815260200191505060405180910390f35b3480156108f457600080fd5b506109216004803603602081101561090b57600080fd5b81019080803590602001909291905050506120d4565b005b34801561092f57600080fd5b506109386121a6565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561097057600080fd5b5061099d6004803603602081101561098757600080fd5b81019080803590602001909291905050506121cc565b005b3480156109ab57600080fd5b506109ee600480360360208110156109c257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612299565b005b3480156109fc57600080fd5b50610a3f60048036036020811015610a1357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506125b3565b60405180821515815260200191505060405180910390f35b348015610a6357600080fd5b50610a6c612609565b60405180821515815260200191505060405180910390f35b348015610a9057600080fd5b50610ad360048036036020811015610aa757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061261c565b6040518082815260200191505060405180910390f35b348015610af557600080fd5b50610afe612707565b005b348015610b0c57600080fd5b50610b4f60048036036020811015610b2357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061288d565b60405180821515815260200191505060405180910390f35b348015610b7357600080fd5b50610b7c6128e3565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610bb457600080fd5b50610bbd61290c565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610bfd578082015181840152602081019050610be2565b50505050905090810190601f168015610c2a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610c4457600080fd5b50610c7160048036036020811015610c5b57600080fd5b8101908080359060200190929190505050612949565b005b348015610c7f57600080fd5b50610cc260048036036020811015610c9657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612d18565b005b348015610cd057600080fd5b50610d1d60048036036040811015610ce757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612e24565b60405180821515815260200191505060405180910390f35b348015610d4157600080fd5b50610d4a612ef1565b005b348015610d5857600080fd5b50610da560048036036040811015610d6f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061310e565b60405180821515815260200191505060405180910390f35b348015610dc957600080fd5b50610e8c60048036036040811015610de057600080fd5b8101908080359060200190640100000000811115610dfd57600080fd5b820183602082011115610e0f57600080fd5b80359060200191846020830284011164010000000083111715610e3157600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050919291929080351515906020019092919050505061312c565b005b348015610e9a57600080fd5b50610ea361330e565b6040518082815260200191505060405180910390f35b348015610ec557600080fd5b50610ece613318565b6040518082815260200191505060405180910390f35b348015610ef057600080fd5b50610ef961331e565b6040518082815260200191505060405180910390f35b348015610f1b57600080fd5b50610f4860048036036020811015610f3257600080fd5b8101908080359060200190929190505050613324565b005b348015610f5657600080fd5b50610f8360048036036020811015610f6d57600080fd5b81019080803590602001909291905050506133f6565b005b348015610f9157600080fd5b50610ff460048036036040811015610fa857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506135e7565b6040518082815260200191505060405180910390f35b34801561101657600080fd5b506110456004803603602081101561102d57600080fd5b8101908080351515906020019092919050505061366e565b005b34801561105357600080fd5b506110966004803603602081101561106a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061378c565b005b3480156110a457600080fd5b506110d1600480360360208110156110bb57600080fd5b81019080803590602001909291905050506138af565b005b3480156110df57600080fd5b50611122600480360360208110156110f657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506139a8565b005b61112c613c47565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6111f46128e3565b73ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015611239573d6000803e3d6000fd5b50565b60606040518060400160405280600c81526020017f53616974616d61204d6f6f6e0000000000000000000000000000000000000000815250905090565b600061128d611286613c47565b8484613c4f565b6001905092915050565b6000600c54905090565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600a54905090565b60115481565b60135481565b6112e5613c47565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113a5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600f8190555050565b600e5481565b60006113c2848484613e46565b611483846113ce613c47565b61147e85604051806060016040528060288152602001615e3760289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611434613c47565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546143509092919063ffffffff16565b613c4f565b600190509392505050565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611551576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f466f7262696464656e000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b80601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600b548211156115f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180615d7c602a913960400191505060405180910390fd5b60006115fc614410565b90506116118184613bb390919063ffffffff16565b915050919050565b60006009905090565b61162a613c47565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166117a9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b60005b6009805490508110156119a8578173ffffffffffffffffffffffffffffffffffffffff16600982815481106117dd57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561199b5760096001600980549050038154811061183957fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009828154811061187157fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600980548061196157fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590556119a8565b80806001019150506117ac565b5050565b6000611a556119b9613c47565b84611a5085600660006119ca613c47565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461443b90919063ffffffff16565b613c4f565b6001905092915050565b600f5481565b6000611a6f613c47565b9050600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611b14576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180615ed1602c913960400191505060405180910390fd5b6000611b1f836144c3565b5050505050509050611b7981600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613bfd90919063ffffffff16565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611bd181600b54613bfd90919063ffffffff16565b600b81905550611bec83600c5461443b90919063ffffffff16565b600c81905550505050565b611bff613c47565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cbf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611d0b613c47565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611dcb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600e54811115611dda57600080fd5b611def81600e54613bfd90919063ffffffff16565b600e81905550611e49816005600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461443b90919063ffffffff16565b6005600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061dead73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a350565b611f00613c47565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611fc0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600a54831115612095576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f416d6f756e74206d757374206265206c657373207468616e20737570706c790081525060200191505060405180910390fd5b816120b65760006120a5846144c3565b5050505050509050809150506120ce565b60006120c1846144c3565b5050505050915050809150505b92915050565b6120dc613c47565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461219c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8060118190555050565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461228f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f466f7262696464656e000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b8060198190555050565b6122a1613c47565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612361576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612421576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156124f5576124b1600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611595565b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506009819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b601760159054906101000a900460ff1681565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156126b757600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050612702565b6126ff600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611595565b90505b919050565b61270f613c47565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146127cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600b81526020017f53414954414d414d4f4f4e000000000000000000000000000000000000000000815250905090565b6001601760146101000a81548160ff021916908315150217905550601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612a27576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f466f7262696464656e000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6060600267ffffffffffffffff81118015612a4157600080fd5b50604051908082528060200260200182016040528015612a705781602001602082028036833780820191505090505b5090503081600081518110612a8157fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015612b2357600080fd5b505afa158015612b37573d6000803e3d6000fd5b505050506040513d6020811015612b4d57600080fd5b810190808051906020019092919050505081600181518110612b6b57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612bd230601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684613c4f565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac94783600084601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015612cb8578082015181840152602081019050612c9d565b505050509050019650505050505050600060405180830381600087803b158015612ce157600080fd5b505af1158015612cf5573d6000803e3d6000fd5b50505050506000601760146101000a81548160ff02191690831515021790555050565b612d20613c47565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612de0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000612ee7612e31613c47565b84612ee285604051806060016040528060258152602001615f206025913960066000612e5b613c47565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546143509092919063ffffffff16565b613c4f565b6001905092915050565b3373ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612f97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180615efd6023913960400191505060405180910390fd5b600254421161300e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f436f6e7472616374206973206c6f636b656420756e74696c203720646179730081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600061312261311b613c47565b8484613e46565b6001905092915050565b613134613c47565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146131f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80156132845760005b825181101561327e5760016003600085848151811061321857fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806001019150506131fd565b5061330a565b60005b8251811015613308576000600360008584815181106132a257fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080600101915050613287565b505b5050565b6000600254905090565b60185481565b600d5481565b61332c613c47565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146133ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8060138190555050565b6133fe613c47565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146134be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550804201600281905550600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b613676613c47565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613736576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80601760156101000a81548160ff0219169083151502179055507f436b6cf978c7b6998fcce43dfe4d37e3a0dc2bb780144a2eb55d7138201e8a128160405180821515815260200191505060405180910390a150565b613794613c47565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613854576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6138b7613c47565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613977576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b61399f606461399183600a5461452b90919063ffffffff16565b613bb390919063ffffffff16565b60188190555050565b6139b0613c47565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613a70576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415613af6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180615da66026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000613bf583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506145b1565b905092915050565b6000613c3f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250614350565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613cd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180615ead6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613d5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180615dcc6022913960400191505060405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b6000613e518361261c565b148015613e5e5750600081115b15613e75576001600d600082825401925050819055505b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613efb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180615e886025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613f81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180615d596023913960400191505060405180910390fd5b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806140225750600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15614095576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f53616974616d613a20426c61636b6c69737465642066726f6d2074726164657381525060200191505060405180910390fd5b600081116140ee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180615e5f6029913960400191505060405180910390fd5b6140f66128e3565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561416457506141346128e3565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156141c5576018548111156141c4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180615dee6028913960400191505060405180910390fd5b5b6019546141d13061261c565b101580156141ec5750601760149054906101000a900460ff16155b80156142465750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561425e5750601760159054906101000a900460ff165b1561426f5761426e601954614677565b5b61431c838383600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806143165750600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15614983565b60006143278461261c565b1480156143345750600081115b1561434b576001600d600082825403925050819055505b505050565b60008383111582906143fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156143c25780820151818401526020810190506143a7565b50505050905090810190601f1680156143ef5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080600061441d614c94565b915091506144348183613bb390919063ffffffff16565b9250505090565b6000808284019050838110156144b9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60008060008060008060008060008060006144dd8c614f25565b935093509350935060008060006144fe8f8787876144f9614410565b614fa6565b925092509250828282898989899d509d509d509d509d509d509d5050505050505050919395979092949650565b60008083141561453e57600090506145ab565b600082840290508284828161454f57fe5b04146145a6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180615e166021913960400191505060405180910390fd5b809150505b92915050565b6000808311829061465d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015614622578082015181840152602081019050614607565b50505050905090810190601f16801561464f5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161466957fe5b049050809150509392505050565b6001601760146101000a81548160ff0219169083151502179055506060600267ffffffffffffffff811180156146ac57600080fd5b506040519080825280602002602001820160405280156146db5781602001602082028036833780820191505090505b50905030816000815181106146ec57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561478e57600080fd5b505afa1580156147a2573d6000803e3d6000fd5b505050506040513d60208110156147b857600080fd5b8101908080519060200190929190505050816001815181106147d657fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061483d30601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684613c4f565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac94783600084601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015614923578082015181840152602081019050614908565b505050509050019650505050505050600060405180830381600087803b15801561494c57600080fd5b505af1158015614960573d6000803e3d6000fd5b50505050506000601760146101000a81548160ff02191690831515021790555050565b806149915761499061505a565b5b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015614a345750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15614a4957614a448484846150bc565b614c80565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015614aec5750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15614b0157614afc84848461532a565b614c7f565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015614ba55750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15614bba57614bb5848484615598565b614c7e565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015614c5c5750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15614c7157614c6c848484615771565b614c7d565b614c7c848484615598565b5b5b5b5b80614c8e57614c8d615a74565b5b50505050565b6000806000600b5490506000600a54905060005b600980549050811015614ee857826004600060098481548110614cc757fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541180614dae5750816005600060098481548110614d4657fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b15614dc557600b54600a5494509450505050614f21565b614e4e6004600060098481548110614dd957fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484613bfd90919063ffffffff16565b9250614ed96005600060098481548110614e6457fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483613bfd90919063ffffffff16565b91508080600101915050614ca8565b50614f00600a54600b54613bb390919063ffffffff16565b821015614f1857600b54600a54935093505050614f21565b81819350935050505b9091565b6000806000806000614f3686615a91565b90506000614f4387615ac2565b90506000614f5088615af3565b90506000614f8d82614f7f601154614f71888e613bfd90919063ffffffff16565b613bfd90919063ffffffff16565b613bfd90919063ffffffff16565b9050808484849750975097509750505050509193509193565b600080600080614fbf858a61452b90919063ffffffff16565b90506000614fd6868a61452b90919063ffffffff16565b90506000614fed878a61452b90919063ffffffff16565b90506000615004888a61452b90919063ffffffff16565b9050600061503f8261503185615023888a613bfd90919063ffffffff16565b613bfd90919063ffffffff16565b613bfd90919063ffffffff16565b90508481859750975097505050505050955095509592505050565b6000600f5414801561506e57506000601154145b801561507c57506000601354145b15615086576150ba565b600f546010819055506011546012819055506013546014819055506000600f81905550600060118190555060006013819055505b565b60008060008060008060006150d0886144c3565b965096509650965096509650965061513088600560008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613bfd90919063ffffffff16565b600560008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506151c587600460008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613bfd90919063ffffffff16565b600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061525a86600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461443b90919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506152a681615b24565b6152af82615b79565b6152b98584615d1e565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a350505050505050505050565b600080600080600080600061533e886144c3565b965096509650965096509650965061539e87600460008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613bfd90919063ffffffff16565b600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061543384600560008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461443b90919063ffffffff16565b600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506154c886600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461443b90919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061551482615b79565b61551d81615b24565b6155278584615d1e565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a350505050505050505050565b60008060008060008060006155ac886144c3565b965096509650965096509650965061560c87600460008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613bfd90919063ffffffff16565b600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506156a186600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461443b90919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506156ed82615b79565b6156f681615b24565b6157008584615d1e565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a350505050505050505050565b6000806000806000806000615785886144c3565b96509650965096509650965096506157e588600560008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613bfd90919063ffffffff16565b600560008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061587a87600460008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613bfd90919063ffffffff16565b600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061590f84600560008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461443b90919063ffffffff16565b600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506159a486600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461443b90919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506159f082615b79565b6159f981615b24565b615a038584615d1e565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a350505050505050505050565b601054600f81905550601254601181905550601454601381905550565b6000615abb6064615aad600f548561452b90919063ffffffff16565b613bb390919063ffffffff16565b9050919050565b6000615aec6064615ade6011548561452b90919063ffffffff16565b613bb390919063ffffffff16565b9050919050565b6000615b1d6064615b0f6013548561452b90919063ffffffff16565b613bb390919063ffffffff16565b9050919050565b615b3981600e5461443b90919063ffffffff16565b600e819055507f827adaebc9c47b3ef636b7836e0c06ccf1a746b9ceaf723363ab531fc55fa155816040518082815260200191505060405180910390a150565b6000615b83614410565b90506000615b9a828461452b90919063ffffffff16565b9050615bee81600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461443b90919063ffffffff16565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615615d1957615cd583600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461443b90919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b615d3382600b54613bfd90919063ffffffff16565b600b81905550615d4e81600c5461443b90919063ffffffff16565b600c81905550505056fe45524332303a207472616e7366657220746f20746865207a65726f2061646472657373416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573735472616e7366657220616d6f756e74206578636565647320746865206d61785478416d6f756e742e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63655472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573734578636c75646564206164647265737365732063616e6e6f742063616c6c20746869732066756e6374696f6e596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6f636b45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220bd1501f509d8f6705cb3911c12db1ae29b10b16ba3820468cea0c211fe3c0ffb64736f6c634300060c0033
Deployed Bytecode Sourcemap
30313:21732:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;47683:108;;;;;;;;;;;;;:::i;:::-;;33673:92;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34701:193;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;36661:86;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;31433:41;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;33957:94;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;31202:31;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;31325:26;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;39199:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;31037:30;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;34902:445;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;32822:212;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;37682:321;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;33874:75;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;38413:541;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;35805:299;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;31076:32;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;36755:429;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;32582:126;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;35355:442;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;38962:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;37192:482;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;39316:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;31481:28;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;33042:208;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;38011:394;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;44560:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;31590:31;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;34059:236;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;23268:148;;;;;;;;;;;;;:::i;:::-;;36519:134;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;22626:79;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;33773:93;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;46365:691;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;32716:98;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;36112:399;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;24311:329;;;;;;;;;;;;;:::i;:::-;;34303:199;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;33258:407;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23860:89;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;31630:61;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;31001:29;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;39443:101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;24025:214;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;34510:183;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;39737:141;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;39081:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;39552:177;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23571:281;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;47683:108;22848:12;:10;:12::i;:::-;22838:22;;:6;;;;;;;;;;:22;;;22830:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;47743:7:::1;:5;:7::i;:::-;47735:25;;:48;47761:21;47735:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;47683:108::o:0;33673:92::-;33710:13;33736:21;;;;;;;;;;;;;;;;;;;33673:92;:::o;34701:193::-;34803:4;34825:39;34834:12;:10;:12::i;:::-;34848:7;34857:6;34825:8;:39::i;:::-;34882:4;34875:11;;34701:193;;;;:::o;36661:86::-;36703:7;36730:9;;36723:16;;36661:86;:::o;31433:41::-;;;;;;;;;;;;;:::o;33957:94::-;34010:7;34037:6;;34030:13;;33957:94;:::o;31202:31::-;;;;:::o;31325:26::-;;;;:::o;39199:109::-;22848:12;:10;:12::i;:::-;22838:22;;:6;;;;;;;;;;:22;;;22830:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39294:6:::1;39278:13;:22;;;;39199:109:::0;:::o;31037:30::-;;;;:::o;34902:445::-;35034:4;35051:36;35061:6;35069:9;35080:6;35051:9;:36::i;:::-;35098:219;35121:6;35142:12;:10;:12::i;:::-;35169:137;35224:6;35169:137;;;;;;;;;;;;;;;;;:10;:18;35180:6;35169:18;;;;;;;;;;;;;;;:32;35188:12;:10;:12::i;:::-;35169:32;;;;;;;;;;;;;;;;:36;;:137;;;;;:::i;:::-;35098:8;:219::i;:::-;35335:4;35328:11;;34902:445;;;;;:::o;32822:212::-;32928:23;;;;;;;;;;;32914:37;;:10;:37;;;32906:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33010:15;32976:23;;:50;;;;;;;;;;;;;;;;;;32822:212;:::o;37682:321::-;37776:7;37834:6;;37823:7;:17;;37801:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37921:19;37943:10;:8;:10::i;:::-;37921:32;;37971:24;37983:11;37971:7;:11;;:24;;;;:::i;:::-;37964:31;;;37682:321;;;:::o;33874:75::-;33915:5;33940:1;33933:8;;33874:75;:::o;38413:541::-;22848:12;:10;:12::i;:::-;22838:22;;:6;;;;;;;;;;:22;;;22830:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38507:25:::1;:34;38533:7;38507:34;;;;;;;;;;;;;;;;;;;;;;;;;38485:111;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;38612:9;38607:340;38631:9;:16;;;;38627:1;:20;38607:340;;;38689:7;38673:23;;:9;38683:1;38673:12;;;;;;;;;;;;;;;;;;;;;;;;;:23;;;38669:267;;;38732:9;38761:1;38742:9;:16;;;;:20;38732:31;;;;;;;;;;;;;;;;;;;;;;;;;38717:9;38727:1;38717:12;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;38800:1;38782:6;:15;38789:7;38782:15;;;;;;;;;;;;;;;:19;;;;38857:5;38820:25;:34;38846:7;38820:34;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;38881:9;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38915:5;;38669:267;38649:3;;;;;;;38607:340;;;;38413:541:::0;:::o;35805:299::-;35920:4;35942:132;35965:12;:10;:12::i;:::-;35992:7;36014:49;36052:10;36014;:24;36025:12;:10;:12::i;:::-;36014:24;;;;;;;;;;;;;;;:33;36039:7;36014:33;;;;;;;;;;;;;;;;:37;;:49;;;;:::i;:::-;35942:8;:132::i;:::-;36092:4;36085:11;;35805:299;;;;:::o;31076:32::-;;;;:::o;36755:429::-;36807:14;36824:12;:10;:12::i;:::-;36807:29;;36870:25;:33;36896:6;36870:33;;;;;;;;;;;;;;;;;;;;;;;;;36869:34;36847:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36987:15;37018:19;37029:7;37018:10;:19::i;:::-;36986:51;;;;;;;;37065:27;37084:7;37065:6;:14;37072:6;37065:14;;;;;;;;;;;;;;;;:18;;:27;;;;:::i;:::-;37048:6;:14;37055:6;37048:14;;;;;;;;;;;;;;;:44;;;;37112:19;37123:7;37112:6;;:10;;:19;;;;:::i;:::-;37103:6;:28;;;;37154:22;37168:7;37154:9;;:13;;:22;;;;:::i;:::-;37142:9;:34;;;;36755:429;;;:::o;32582:126::-;22848:12;:10;:12::i;:::-;22838:22;;:6;;;;;;;;;;:22;;;22830:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32692:7:::1;32655:15;;:45;;;;;;;;;;;;;;;;;;32582:126:::0;:::o;35355:442::-;22848:12;:10;:12::i;:::-;22838:22;;:6;;;;;;;;;;:22;;;22830:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35435:11:::1;;35424:7;:22;;35416:31;;;::::0;::::1;;35472:24;35488:7;35472:11;;:15;;:24;;;;:::i;:::-;35458:11;:38;;;;35560:87;35639:7;35560:6;:74;35581:42;35560:74;;;;;;;;;;;;;;;;:78;;:87;;;;:::i;:::-;35507:6;:50;35514:42;35507:50;;;;;;;;;;;;;;;:140;;;;35714:42;35663:126;;35694:4;35663:126;;;35771:7;35663:126;;;;;;;;;;;;;;;;;;35355:442:::0;:::o;38962:111::-;22848:12;:10;:12::i;:::-;22838:22;;:6;;;;;;;;;;:22;;;22830:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39061:4:::1;39031:18;:27;39050:7;39031:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;38962:111:::0;:::o;37192:482::-;37310:7;37354:6;;37343:7;:17;;37335:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37412:17;37407:260;;37447:15;37478:19;37489:7;37478:10;:19::i;:::-;37446:51;;;;;;;;37519:7;37512:14;;;;;37407:260;37562:23;37599:19;37610:7;37599:10;:19::i;:::-;37559:59;;;;;;;;37640:15;37633:22;;;37192:482;;;;;:::o;39316:119::-;22848:12;:10;:12::i;:::-;22838:22;;:6;;;;;;;;;;:22;;;22830:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39415:12:::1;39400;:27;;;;39316:119:::0;:::o;31481:28::-;;;;;;;;;;;;;:::o;33042:208::-;33149:23;;;;;;;;;;;33135:37;;:10;:37;;;33127:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33227:15;33197:27;:45;;;;33042:208;:::o;38011:394::-;22848:12;:10;:12::i;:::-;22838:22;;:6;;;;;;;;;;:22;;;22830:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38106:25:::1;:34;38132:7;38106:34;;;;;;;;;;;;;;;;;;;;;;;;;38105:35;38083:112;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;38228:1;38210:6;:15;38217:7;38210:15;;;;;;;;;;;;;;;;:19;38206:106;;;38264:36;38284:6;:15;38291:7;38284:15;;;;;;;;;;;;;;;;38264:19;:36::i;:::-;38246:6;:15;38253:7;38246:15;;;;;;;;;;;;;;;:54;;;;38206:106;38359:4;38322:25;:34;38348:7;38322:34;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;38374:9;38389:7;38374:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38011:394:::0;:::o;44560:124::-;44625:4;44649:18;:27;44668:7;44649:27;;;;;;;;;;;;;;;;;;;;;;;;;44642:34;;44560:124;;;:::o;31590:31::-;;;;;;;;;;;;;:::o;34059:236::-;34125:7;34149:25;:34;34175:7;34149:34;;;;;;;;;;;;;;;;;;;;;;;;;34145:89;;;34207:6;:15;34214:7;34207:15;;;;;;;;;;;;;;;;34200:22;;;;34145:89;34251:36;34271:6;:15;34278:7;34271:15;;;;;;;;;;;;;;;;34251:19;:36::i;:::-;34244:43;;34059:236;;;;:::o;23268:148::-;22848:12;:10;:12::i;:::-;22838:22;;:6;;;;;;;;;;:22;;;22830:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23375:1:::1;23338:40;;23359:6;::::0;::::1;;;;;;;;23338:40;;;;;;;;;;;;23406:1;23389:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;23268:148::o:0;36519:134::-;36587:4;36611:25;:34;36637:7;36611:34;;;;;;;;;;;;;;;;;;;;;;;;;36604:41;;36519:134;;;:::o;22626:79::-;22664:7;22691:6;;;;;;;;;;;22684:13;;22626:79;:::o;33773:93::-;33812:13;33838:20;;;;;;;;;;;;;;;;;;;33773:93;:::o;46365:691::-;32113:4;32104:6;;:13;;;;;;;;;;;;;;;;;;46473:23:::1;;;;;;;;;;;46459:37;;:10;:37;;;46451:59;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;46581:21;46619:1;46605:16;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;46581:40;;46650:4;46632;46637:1;46632:7;;;;;;;;;;;;;:23;;;;;;;;;::::0;::::1;46676:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;46666:4;46671:1;46666:7;;;;;;;;;;;;;:32;;;;;;;;;::::0;::::1;46711:63;46728:4;46743:15;;;;;;;;;;;46761:12;46711:8;:63::i;:::-;46813:15;;;;;;;;;;;:66;;;46894:12;46921:1;46965:4;46984:23;;;;;;;;;;;47022:15;46813:235;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;32128:1;32149:5:::0;32140:6;;:14;;;;;;;;;;;;;;;;;;46365:691;:::o;32716:98::-;22848:12;:10;:12::i;:::-;22838:22;;:6;;;;;;;;;;:22;;;22830:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32801:5:::1;32785:13;;:21;;;;;;;;;;;;;;;;;;32716:98:::0;:::o;36112:399::-;36232:4;36254:227;36277:12;:10;:12::i;:::-;36304:7;36326:144;36382:15;36326:144;;;;;;;;;;;;;;;;;:10;:24;36337:12;:10;:12::i;:::-;36326:24;;;;;;;;;;;;;;;:33;36351:7;36326:33;;;;;;;;;;;;;;;;:37;;:144;;;;;:::i;:::-;36254:8;:227::i;:::-;36499:4;36492:11;;36112:399;;;;:::o;24311:329::-;24395:10;24377:28;;:14;;;;;;;;;;;:28;;;24355:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24493:9;;24487:3;:15;24479:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24583:14;;;;;;;;;;;24554:44;;24575:6;;;;;;;;;;24554:44;;;;;;;;;;;;24618:14;;;;;;;;;;;24609:6;;:23;;;;;;;;;;;;;;;;;;24311:329::o;34303:199::-;34408:4;34430:42;34440:12;:10;:12::i;:::-;34454:9;34465:6;34430:9;:42::i;:::-;34490:4;34483:11;;34303:199;;;;:::o;33258:407::-;22848:12;:10;:12::i;:::-;22838:22;;:6;;;;;;;;;;:22;;;22830:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33375:4:::1;33371:287;;;33401:9;33396:109;33420:10;:17;33416:1;:21;33396:109;;;33485:4;33463;:19;33468:10;33479:1;33468:13;;;;;;;;;;;;;;33463:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;33439:3;;;;;;;33396:109;;;;33371:287;;;33542:9;33537:110;33561:10;:17;33557:1;:21;33537:110;;;33626:5;33604:4;:19;33609:10;33620:1;33609:13;;;;;;;;;;;;;;33604:19;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;33580:3;;;;;;;33537:110;;;;33371:287;33258:407:::0;;:::o;23860:89::-;23905:7;23932:9;;23925:16;;23860:89;:::o;31630:61::-;;;;:::o;31001:29::-;;;;:::o;39443:101::-;22848:12;:10;:12::i;:::-;22838:22;;:6;;;;;;;;;;:22;;;22830:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39528:8:::1;39518:7;:18;;;;39443:101:::0;:::o;24025:214::-;22848:12;:10;:12::i;:::-;22838:22;;:6;;;;;;;;;;:22;;;22830:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24106:6:::1;::::0;::::1;;;;;;;;24089:14;;:23;;;;;;;;;;;;;;;;;;24140:1;24123:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;24171:4;24165:3;:10;24153:9;:22;;;;24228:1;24191:40;;24212:6;::::0;::::1;;;;;;;;24191:40;;;;;;;;;;;;24025:214:::0;:::o;34510:183::-;34627:7;34659:10;:17;34670:5;34659:17;;;;;;;;;;;;;;;:26;34677:7;34659:26;;;;;;;;;;;;;;;;34652:33;;34510:183;;;;:::o;39737:141::-;22848:12;:10;:12::i;:::-;22838:22;;:6;;;;;;;;;;:22;;;22830:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39818:8:::1;39804:11;;:22;;;;;;;;;;;;;;;;;;39842:28;39861:8;39842:28;;;;;;;;;;;;;;;;;;;;39737:141:::0;:::o;39081:110::-;22848:12;:10;:12::i;:::-;22838:22;;:6;;;;;;;;;;:22;;;22830:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39178:5:::1;39148:18;:27;39167:7;39148:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;39081:110:::0;:::o;39552:177::-;22848:12;:10;:12::i;:::-;22838:22;;:6;;;;;;;;;;:22;;;22830:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39685:36:::1;39715:5;39685:25;39696:13;39685:6;;:10;;:25;;;;:::i;:::-;:29;;:36;;;;:::i;:::-;39662:20;:59;;;;39552:177:::0;:::o;23571:281::-;22848:12;:10;:12::i;:::-;22838:22;;:6;;;;;;;;;;:22;;;22830:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23694:1:::1;23674:22;;:8;:22;;;;23652:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23807:8;23778:38;;23799:6;::::0;::::1;;;;;;;;23778:38;;;;;;;;;;;;23836:8;23827:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;23571:281:::0;:::o;12831:132::-;12889:7;12916:39;12920:1;12923;12916:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;12909:46;;12831:132;;;;:::o;10960:136::-;11018:7;11045:43;11049:1;11052;11045:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;11038:50;;10960:136;;;;:::o;21678:106::-;21731:15;21766:10;21759:17;;21678:106;:::o;44692:370::-;44836:1;44819:19;;:5;:19;;;;44811:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;44917:1;44898:21;;:7;:21;;;;44890:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45000:6;44971:10;:17;44982:5;44971:17;;;;;;;;;;;;;;;:26;44989:7;44971:26;;;;;;;;;;;;;;;:35;;;;45038:7;45022:32;;45031:5;45022:32;;;45047:6;45022:32;;;;;;;;;;;;;;;;;;44692:370;;;:::o;45070:1287::-;45205:1;45188:13;45198:2;45188:9;:13::i;:::-;:18;:32;;;;;45219:1;45210:6;:10;45188:32;45184:80;;;45251:1;45237:10;;:15;;;;;;;;;;;45184:80;45298:1;45282:18;;:4;:18;;;;45274:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45375:1;45361:16;;:2;:16;;;;45353:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45438:4;:10;45443:4;45438:10;;;;;;;;;;;;;;;;;;;;;;;;;:22;;;;45452:4;:8;45457:2;45452:8;;;;;;;;;;;;;;;;;;;;;;;;;45438:22;45436:25;45428:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45526:1;45517:6;:10;45509:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45596:7;:5;:7::i;:::-;45588:15;;:4;:15;;;;:32;;;;;45613:7;:5;:7::i;:::-;45607:13;;:2;:13;;;;45588:32;45584:183;;;45671:20;;45661:6;:30;;45635:132;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45584:183;45827:27;;45799:24;45817:4;45799:9;:24::i;:::-;:55;;45798:81;;;;;45873:6;;;;;;;;;;;45872:7;45798:81;:119;;;;;45904:13;;;;;;;;;;;45896:21;;:4;:21;;;;45798:119;:147;;;;;45934:11;;;;;;;;;;;45798:147;45780:249;;;45972:45;45989:27;;45972:16;:45::i;:::-;45780:249;46107:150;46136:4;46155:2;46172:6;46195:18;:24;46214:4;46195:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;46223:18;:22;46242:2;46223:22;;;;;;;;;;;;;;;;;;;;;;;;;46195:50;46193:53;46107:14;:150::i;:::-;46291:1;46272:15;46282:4;46272:9;:15::i;:::-;:20;:34;;;;;46305:1;46296:6;:10;46272:34;46268:82;;;46337:1;46323:10;;:15;;;;;;;;;;;46268:82;45070:1287;;;:::o;11399:226::-;11519:7;11552:1;11547;:6;;11555:12;11539:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11579:9;11595:1;11591;:5;11579:17;;11616:1;11609:8;;;11399:226;;;;;:::o;42269:164::-;42311:7;42332:15;42349;42368:19;:17;:19::i;:::-;42331:56;;;;42405:20;42417:7;42405;:11;;:20;;;;:::i;:::-;42398:27;;;;42269:164;:::o;10496:181::-;10554:7;10574:9;10590:1;10586;:5;10574:17;;10615:1;10610;:6;;10602:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10668:1;10661:8;;;10496:181;;;;:::o;40132:835::-;40232:7;40254;40276;40298;40320;40342;40364;40414:23;40452:12;40479:18;40512:13;40539:23;40554:7;40539:14;:23::i;:::-;40399:163;;;;;;;;40574:15;40591:23;40616:12;40632:133;40658:7;40680:4;40699:10;40724:5;40744:10;:8;:10::i;:::-;40632:11;:133::i;:::-;40573:192;;;;;;40798:7;40820:15;40850:4;40869:15;40899:4;40918:10;40943:5;40776:183;;;;;;;;;;;;;;;;;;;;;40132:835;;;;;;;;;:::o;11884:471::-;11942:7;12192:1;12187;:6;12183:47;;;12217:1;12210:8;;;;12183:47;12242:9;12258:1;12254;:5;12242:17;;12287:1;12282;12278;:5;;;;;;:10;12270:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12346:1;12339:8;;;11884:471;;;;;:::o;13459:312::-;13579:7;13611:1;13607;:5;13614:12;13599:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13638:9;13654:1;13650;:5;;;;;;13638:17;;13762:1;13755:8;;;13459:312;;;;;:::o;47064:611::-;32113:4;32104:6;;:13;;;;;;;;;;;;;;;;;;47202:21:::1;47240:1;47226:16;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;47202:40;;47271:4;47253;47258:1;47253:7;;;;;;;;;;;;;:23;;;;;;;;;::::0;::::1;47297:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;47287:4;47292:1;47287:7;;;;;;;;;;;;;:32;;;;;;;;;::::0;::::1;47332:62;47349:4;47364:15;;;;;;;;;;;47382:11;47332:8;:62::i;:::-;47433:15;;;;;;;;;;;:66;;;47514:11;47540:1;47584:4;47603:23;;;;;;;;;;;47641:15;47433:234;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;32128:1;32149:5:::0;32140:6;;:14;;;;;;;;;;;;;;;;;;47064:611;:::o;47872:1148::-;48028:7;48023:55;;48052:14;:12;:14::i;:::-;48023:55;48108:25;:33;48134:6;48108:33;;;;;;;;;;;;;;;;;;;;;;;;;:87;;;;;48159:25;:36;48185:9;48159:36;;;;;;;;;;;;;;;;;;;;;;;;;48158:37;48108:87;48090:857;;;48222:48;48244:6;48252:9;48263:6;48222:21;:48::i;:::-;48090:857;;;48307:25;:33;48333:6;48307:33;;;;;;;;;;;;;;;;;;;;;;;;;48306:34;:87;;;;;48357:25;:36;48383:9;48357:36;;;;;;;;;;;;;;;;;;;;;;;;;48306:87;48288:659;;;48420:46;48440:6;48448:9;48459:6;48420:19;:46::i;:::-;48288:659;;;48503:25;:33;48529:6;48503:33;;;;;;;;;;;;;;;;;;;;;;;;;48502:34;:88;;;;;48554:25;:36;48580:9;48554:36;;;;;;;;;;;;;;;;;;;;;;;;;48553:37;48502:88;48484:463;;;48617:44;48635:6;48643:9;48654:6;48617:17;:44::i;:::-;48484:463;;;48697:25;:33;48723:6;48697:33;;;;;;;;;;;;;;;;;;;;;;;;;:86;;;;;48747:25;:36;48773:9;48747:36;;;;;;;;;;;;;;;;;;;;;;;;;48697:86;48679:268;;;48810:48;48832:6;48840:9;48851:6;48810:21;:48::i;:::-;48679:268;;;48891:44;48909:6;48917:9;48928:6;48891:17;:44::i;:::-;48679:268;48484:463;48288:659;48090:857;48962:7;48957:56;;48986:15;:13;:15::i;:::-;48957:56;47872:1148;;;;:::o;42441:576::-;42492:7;42501;42521:15;42539:6;;42521:24;;42556:15;42574:6;;42556:24;;42596:9;42591:315;42615:9;:16;;;;42611:1;:20;42591:315;;;42698:7;42675:6;:20;42682:9;42692:1;42682:12;;;;;;;;;;;;;;;;;;;;;;;;;42675:20;;;;;;;;;;;;;;;;:30;:64;;;;42732:7;42709:6;:20;42716:9;42726:1;42716:12;;;;;;;;;;;;;;;;;;;;;;;;;42709:20;;;;;;;;;;;;;;;;:30;42675:64;42653:125;;;42763:6;;42771;;42755:23;;;;;;;;;42653:125;42803:33;42815:6;:20;42822:9;42832:1;42822:12;;;;;;;;;;;;;;;;;;;;;;;;;42815:20;;;;;;;;;;;;;;;;42803:7;:11;;:33;;;;:::i;:::-;42793:43;;42861:33;42873:6;:20;42880:9;42890:1;42880:12;;;;;;;;;;;;;;;;;;;;;;;;;42873:20;;;;;;;;;;;;;;;;42861:7;:11;;:33;;;;:::i;:::-;42851:43;;42633:3;;;;;;;42591:315;;;;42930:18;42941:6;;42930;;:10;;:18;;;;:::i;:::-;42920:7;:28;42916:57;;;42958:6;;42966;;42950:23;;;;;;;;42916:57;42992:7;43001;42984:25;;;;;;42441:576;;;:::o;40975:595::-;41086:7;41108;41130;41152;41187:12;41202:38;41225:14;41202:22;:38::i;:::-;41187:53;;41251:20;41274:37;41296:14;41274:21;:37::i;:::-;41251:60;;41322:15;41340:32;41357:14;41340:16;:32::i;:::-;41322:50;;41383:19;41405:97;41494:7;41405:70;41462:12;;41405:38;41438:4;41405:14;:32;;:38;;;;:::i;:::-;:56;;:70;;;;:::i;:::-;:88;;:97;;;;:::i;:::-;41383:119;;41521:11;41534:4;41540:12;41554:7;41513:49;;;;;;;;;;;;40975:595;;;;;:::o;41578:683::-;41801:7;41823;41845;41880:15;41898:24;41910:11;41898:7;:11;;:24;;;;:::i;:::-;41880:42;;41933:19;41955:21;41964:11;41955:4;:8;;:21;;;;:::i;:::-;41933:43;;41987:18;42008:27;42023:11;42008:10;:14;;:27;;;;:::i;:::-;41987:48;;42046:13;42062:22;42072:11;42062:5;:9;;:22;;;;:::i;:::-;42046:38;;42095:23;42121:75;42180:5;42121:40;42150:10;42121:24;42133:11;42121:7;:11;;:24;;;;:::i;:::-;:28;;:40;;;;:::i;:::-;:44;;:75;;;;:::i;:::-;42095:101;;42215:7;42224:15;42241:11;42207:46;;;;;;;;;;;41578:683;;;;;;;;;:::o;44044:329::-;44108:1;44091:13;;:18;:39;;;;;44129:1;44113:12;;:17;44091:39;:55;;;;;44145:1;44134:7;;:12;44091:55;44087:68;;;44148:7;;44087:68;44191:13;;44167:21;:37;;;;44238:12;;44215:20;:35;;;;44279:7;;44261:15;:25;;;;44315:1;44299:13;:17;;;;44342:1;44327:12;:16;;;;44364:1;44354:7;:11;;;;44044:329;:::o;51297:745::-;51448:15;51478:23;51516:12;51543:23;51581:12;51608:18;51641:15;51670:19;51681:7;51670:10;:19::i;:::-;51433:256;;;;;;;;;;;;;;51717:27;51736:7;51717:6;:14;51724:6;51717:14;;;;;;;;;;;;;;;;:18;;:27;;;;:::i;:::-;51700:6;:14;51707:6;51700:14;;;;;;;;;;;;;;;:44;;;;51772:27;51791:7;51772:6;:14;51779:6;51772:14;;;;;;;;;;;;;;;;:18;;:27;;;;:::i;:::-;51755:6;:14;51762:6;51755:14;;;;;;;;;;;;;;;:44;;;;51830:38;51852:15;51830:6;:17;51837:9;51830:17;;;;;;;;;;;;;;;;:21;;:38;;;;:::i;:::-;51810:6;:17;51817:9;51810:17;;;;;;;;;;;;;;;:58;;;;51879:20;51891:7;51879:11;:20::i;:::-;51910:28;51927:10;51910:16;:28::i;:::-;51949:25;51963:4;51969;51949:13;:25::i;:::-;52007:9;51990:44;;51999:6;51990:44;;;52018:15;51990:44;;;;;;;;;;;;;;;;;;51297:745;;;;;;;;;;:::o;50536:753::-;50685:15;50715:23;50753:12;50780:23;50818:12;50845:18;50878:13;50905:19;50916:7;50905:10;:19::i;:::-;50670:254;;;;;;;;;;;;;;50952:27;50971:7;50952:6;:14;50959:6;50952:14;;;;;;;;;;;;;;;;:18;;:27;;;;:::i;:::-;50935:6;:14;50942:6;50935:14;;;;;;;;;;;;;;;:44;;;;51010:38;51032:15;51010:6;:17;51017:9;51010:17;;;;;;;;;;;;;;;;:21;;:38;;;;:::i;:::-;50990:6;:17;50997:9;50990:17;;;;;;;;;;;;;;;:58;;;;51079:38;51101:15;51079:6;:17;51086:9;51079:17;;;;;;;;;;;;;;;;:21;;:38;;;;:::i;:::-;51059:6;:17;51066:9;51059:17;;;;;;;;;;;;;;;:58;;;;51128:28;51145:10;51128:16;:28::i;:::-;51167:18;51179:5;51167:11;:18::i;:::-;51196:25;51210:4;51216;51196:13;:25::i;:::-;51254:9;51237:44;;51246:6;51237:44;;;51265:15;51237:44;;;;;;;;;;;;;;;;;;50536:753;;;;;;;;;;:::o;49846:682::-;49993:15;50023:23;50061:12;50088:23;50126:12;50153:18;50186:13;50213:19;50224:7;50213:10;:19::i;:::-;49978:254;;;;;;;;;;;;;;50260:27;50279:7;50260:6;:14;50267:6;50260:14;;;;;;;;;;;;;;;;:18;;:27;;;;:::i;:::-;50243:6;:14;50250:6;50243:14;;;;;;;;;;;;;;;:44;;;;50318:38;50340:15;50318:6;:17;50325:9;50318:17;;;;;;;;;;;;;;;;:21;;:38;;;;:::i;:::-;50298:6;:17;50305:9;50298:17;;;;;;;;;;;;;;;:58;;;;50367:28;50384:10;50367:16;:28::i;:::-;50406:18;50418:5;50406:11;:18::i;:::-;50435:25;50449:4;50455;50435:13;:25::i;:::-;50493:9;50476:44;;50485:6;50476:44;;;50504:15;50476:44;;;;;;;;;;;;;;;;;;49846:682;;;;;;;;;;:::o;49028:810::-;49179:15;49209:23;49247:12;49274:23;49312:12;49339:18;49372:13;49399:19;49410:7;49399:10;:19::i;:::-;49164:254;;;;;;;;;;;;;;49446:27;49465:7;49446:6;:14;49453:6;49446:14;;;;;;;;;;;;;;;;:18;;:27;;;;:::i;:::-;49429:6;:14;49436:6;49429:14;;;;;;;;;;;;;;;:44;;;;49501:27;49520:7;49501:6;:14;49508:6;49501:14;;;;;;;;;;;;;;;;:18;;:27;;;;:::i;:::-;49484:6;:14;49491:6;49484:14;;;;;;;;;;;;;;;:44;;;;49559:38;49581:15;49559:6;:17;49566:9;49559:17;;;;;;;;;;;;;;;;:21;;:38;;;;:::i;:::-;49539:6;:17;49546:9;49539:17;;;;;;;;;;;;;;;:58;;;;49628:38;49650:15;49628:6;:17;49635:9;49628:17;;;;;;;;;;;;;;;;:21;;:38;;;;:::i;:::-;49608:6;:17;49615:9;49608:17;;;;;;;;;;;;;;;:58;;;;49677:28;49694:10;49677:16;:28::i;:::-;49716:18;49728:5;49716:11;:18::i;:::-;49745:25;49759:4;49765;49745:13;:25::i;:::-;49803:9;49786:44;;49795:6;49786:44;;;49814:15;49786:44;;;;;;;;;;;;;;;;;;49028:810;;;;;;;;;;:::o;44381:171::-;44441:21;;44425:13;:37;;;;44488:20;;44473:12;:35;;;;44529:15;;44519:7;:25;;;;44381:171::o;43541:175::-;43639:7;43671:37;43702:5;43671:26;43683:13;;43671:7;:11;;:26;;;;:::i;:::-;:30;;:37;;;;:::i;:::-;43664:44;;43541:175;;;:::o;43724:173::-;43821:7;43853:36;43883:5;43853:25;43865:12;;43853:7;:11;;:25;;;;:::i;:::-;:29;;:36;;;;:::i;:::-;43846:43;;43724:173;;;:::o;43905:131::-;43970:7;43997:31;44022:5;43997:20;44009:7;;43997;:11;;:20;;;;:::i;:::-;:24;;:31;;;;:::i;:::-;43990:38;;43905:131;;;:::o;43400:133::-;43468:21;43484:4;43468:11;;:15;;:21;;;;:::i;:::-;43454:11;:35;;;;43507:18;43520:4;43507:18;;;;;;;;;;;;;;;;;;43400:133;:::o;43025:367::-;43090:19;43112:10;:8;:10::i;:::-;43090:32;;43133:18;43154:27;43169:11;43154:10;:14;;:27;;;;:::i;:::-;43133:48;;43216:37;43242:10;43216:6;:21;43231:4;43216:21;;;;;;;;;;;;;;;;:25;;:37;;;;:::i;:::-;43192:6;:21;43207:4;43192:21;;;;;;;;;;;;;;;:61;;;;43268:25;:40;43302:4;43268:40;;;;;;;;;;;;;;;;;;;;;;;;;43264:120;;;43347:37;43373:10;43347:6;:21;43362:4;43347:21;;;;;;;;;;;;;;;;:25;;:37;;;;:::i;:::-;43323:6;:21;43338:4;43323:21;;;;;;;;;;;;;;;:61;;;;43264:120;43025:367;;;:::o;39979:145::-;40058:16;40069:4;40058:6;;:10;;:16;;;;:::i;:::-;40049:6;:25;;;;40097:19;40111:4;40097:9;;:13;;:19;;;;:::i;:::-;40085:9;:31;;;;39979:145;;:::o
Swarm Source
ipfs://bd1501f509d8f6705cb3911c12db1ae29b10b16ba3820468cea0c211fe3c0ffb
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.