ERC-20
Overview
Max Total Supply
1,000,000,000 $CTHULHU
Holders
61
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
5,935,595.016881462 $CTHULHUValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
ChurchofCthulhu
Compiler Version
v0.6.12+commit.27d51765
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-07-29 */ /* __ _ _ )_) | ) _ ( _ / _ _ _ ) / ` _)_ ( _ ) ( _ | / \ ( (_( )_) ) ) o (__/ (_) (_( (_. (_ ) ) (_( ( ) ) (_( o _) (_ / Church of Cthulhu is a fully decentralized, mystical, and enigmatic crypto & non-fungible with an initial drop of 666 unique NFTs on the Ethereum Network. The project believes in using arts to spread the knowledge anyone could acquire in fictitious tales. ..... &&&&&#G??5#&&&&&&&&&&&BGPPBB#&&&BBB##??5PPJY5B&&&##B#&&&&#BPBBGB##BGYJ5#&&&##B##&&#BBB#####BB###BBB####&#BBBB##B :::..:::: &&&GYJJJYJJJP#&&&&&#PJ?JJ???JG###G7???~~!!7!!7G#&P??G&&#GG?775#&&BJJ5G7G#&P775&&&&5?JB&&&#BBBB#B?7?B#BB#G77JB##B ^. .:..~ &&G??5####GJ?5&&&&&5?JG###BY??G##BBGPP?!~JPPPPPGBY775P?7BB!7!?GGBB??Y#?P##P7?P&&&&5??B&&&&&&&##B?7?B##&&B7?JB##B :: . .^.^. &&5??G&&&&#J?J#&&&#J?Y#&&&&G??5&&&BPBG7!!JYJY55PG?!~J5~B&G!?JBBB#B??YBYPB#P775#&&&5??B&&&&&&&&&#J7?#&#&&B??5#### ^. ...:^!: &&5??G#####Y?J#&&&#J?Y#&&&&G??5#7JY?775BBPY7JP?!!PP!BB5??J#&#&B??J5PBB#5775####5??G&&&&&&&&&#J??#&&&&B??5&#&& ^!.. ..^J~7: &&5??B&&&&#Y?J#&&&#J?Y#&&&&G?75##P!7P#5??P##&&BY5?~!5P!?P57?J####G?77PBBBBP??5####5??G&&&&&&&&&BJ?J#&&&&B??5&&&& ?!.^ .~:Y77 . &&5??G&&&&#P5P#&&&B??Y#&&&&BYYP##B!5#B?!7PB#B5##JJ!~YG7:!J~:^YB#B5~~7GGBBBP??5B###Y7?G&&&&&&&&&#J?J#&&&&BJ?5&&## ..... .: ..:^!..!?7!7!. &&&P??P&&&&&&&&&&&&#J?Y&&&&&&##&&&#?YGP~^^PB7.7##J?!!YG5:.:::^?JY5Y~~755PB#P??5####5?JB&&&&&&&&&#J?J#&&&&BJ?Y&&# :~55YY!^ .:. . ....::!:..:~: &&#Y??YPGB##&&&&&&#J?Y&&&&&&&&&&&&B5Y5!^~5~ .7&GY?!!?YJ^...^~JPPPY!!?P5Y5PP??P&&&&5??B&&&&&&&&&#J?J#&&&&B??Y#&&& ^^J!. .Y?^.:.. . . ^....:^^^:. .. &&##G5YYJ??J5#&&&&#J?Y##&&&&&&&#GGBBGP!~!YP~.:G5GJ!!YJ77^77!!YYGBP7?Y#BPP5YJ?P&&&&5?JB&&&&&&&&&BJ?J#&&&&BJ?5&&&& ^::....Y!..:^^..:..::~^:^^^:^^...:^. &&&##&####B5??Y####B??Y###&&&&GGPP5PPPP?~~JPG~ 7GGJ^7GBPPP5!7J&5?BP?!5&&&GG?7JP&&&&5?JB&&&&&&&&&#J?Y#&&&&BJJ5&&& :::::~Y~^J7!7YJ7!!?YYYJ7~~!:^~::~. &&&&BPPB#####?7?B###B?7JB####B??YG#&&&&#Y!:75PP?5GPY~7PBGPP5?JJ?:7PPJ~5&#&#BY!JP&&&&5JJB&&&&&&&&&#J?Y#&&&&BJ?Y&& .:. ..:!!~~^:~JY!7??!:Y?^JBPJJ :: : &&&5??B&####J7?G###B??JBBB#&Y~!?#&&&&&&5?...7YPP55Y^?G#BGGPY?:.:5GB?75&&&&GY~JP#B#&5JJB&&&&&&&&&#JJY&&&&&B??Y&&& ^!:~..^~~!7^~GY7^^~:!^ :G. .#&P...:.: &&&5?JB#####Y77G###B??JBBB##7!!Y&BBGG&&5J~..:?GBBG?!JGBGBPBY:.7G&&P7J5&&&&B?~?P5YY#5??B&&&&&&&&&#YJY#&&&&B??Y#&& ^~^^?J?~JPJ:^57.^..?!.^ !G?!##?..::. &&&5??G#BGG#Y??B&&&#JJY#&&&&Y~~JB5557B&5JJ7..#BPP&Y!7PBBG5G?!J&&#Y5JJ5&&&&&Y~~?55G#5?JB&&&&&&&&&&YJY&&&&&B??Y&&& .:^:.:7#^ J#5 ~ #! :~.:!!!^. &&&P7?P&&&&#YJJ#&&&&YJJ#&&&&G!~75YPYB&&5JJBP?&GPY#P!!YBGPB#YJJGJ7B#JJY#&&&&P?75#&&&5JJB&&&&&&&&&&YJJ#&&&#P??P&&& :^J?7JGY: ^. #? .!~^ ?!. &&JJ5PGPYJJB&&&&&BJ?YPPP5J?JB#B#&&&&5??B@&#PPBJP7~JG#&@&J!~JG&&&GJ?YPPP5JJ5&&&&&5?JY555555B&&&GJ?J55P5JJY#&&& ..:^:. .^ ^B7.::^.?7. . &&&&&#G5J?YPB#&&&&&&&&BGPP5PGB&&&&&&&&&BGG&@@@&&#PP5JYG###B55P&@&&&&#BPP5PPG#&&&&&&BGGGGGGGPPB&&&&#GPP5PPG#&&&&& .::^??7YY~^~^..! @@@@@@@#J?P&&@&@@@@@&@@@@@@&@@@@@@@&&@@@@@@@@@@@@@@@@&&&&@@@@&&&@@@@@@@@@@@@@@@@@@@@@@@@&&&&&&&&&&&@@&&&&@@&&&&@ .:.:::. .::.. --------Telegram: https://t.me/churchofcthulhuERC --------Website: ChurchCthulhu.com */ // SPDX-License-Identifier: Unlicensed pragma solidity ^0.6.12; 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; } } interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } 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; } } 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); } } } } 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 IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } // Contract implementation contract ChurchofCthulhu is Context, IERC20, Ownable { using SafeMath for uint256; using Address for address; mapping (address => bool) public _isBlacklisted; mapping (address => uint256) private _rOwned; mapping (address => uint256) private _tOwned; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) private _isExcludedFromFee; mapping (address => bool) private _isExcluded; address[] private _excluded; uint256 private constant MAX = ~uint256(0); uint256 private _tTotal = 1000000000* 10**9; uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 private _tFeeTotal; string private _name = 'Church of Cthulhu'; string private _symbol = '$CTHULHU'; uint8 private _decimals = 9; uint256 public _liquidityFee = 1; uint256 private _taxFee = 1; uint256 private _MarketingFee = 40; uint256 private _previousTaxFee = _taxFee; uint256 private _previousMarketingFee = _MarketingFee; address payable private _MarketingWalletAddress; IUniswapV2Router02 public immutable uniswapV2Router; address public immutable uniswapV2Pair; bool inSwap = false; bool public swapEnabled = true; uint256 private _maxTxAmount = 100000000000e9; uint256 private _numOfTokensToExchangeForMarketing = 5 * 10**3 * 10**9; event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap); event SwapEnabledUpdated(bool enabled); modifier lockTheSwap { inSwap = true; _; inSwap = false; } constructor (address payable MarketingWalletAddress) public { _MarketingWalletAddress = MarketingWalletAddress; _rOwned[_msgSender()] = _rTotal; IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); uniswapV2Router = _uniswapV2Router; _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; _isExcludedFromFee[_MarketingWalletAddress] = true; emit Transfer(address(0), _msgSender(), _tTotal); } function name() public view returns (string memory) { return _name; } function symbol() public view returns (string memory) { return _symbol; } function decimals() public view returns (uint8) { return _decimals; } function totalSupply() public view override returns (uint256) { return _tTotal; } function balanceOf(address account) public view override returns (uint256) { if (_isExcluded[account]) return _tOwned[account]; return tokenFromReflection(_rOwned[account]); } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } function isExcluded(address account) public view returns (bool) { return _isExcluded[account]; } function setExcludeFromFee(address account, bool excluded) external onlyOwner() { _isExcludedFromFee[account] = excluded; } function totalFees() public view returns (uint256) { return _tFeeTotal; } function deliver(uint256 tAmount) public { address sender = _msgSender(); require(!_isExcluded[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 excludeAccount(address account) external onlyOwner() { require(account != 0xbd8caF35cB758Ce801f3639D5557de66a2DC37Fa, 'We can not exclude Uniswap router.'); require(!_isExcluded[account], "Account is already excluded"); if(_rOwned[account] > 0) { _tOwned[account] = tokenFromReflection(_rOwned[account]); } _isExcluded[account] = true; _excluded.push(account); } function includeAccount(address account) external onlyOwner() { require(_isExcluded[account], "Account is already excluded"); for (uint256 i = 0; i < _excluded.length; i++) { if (_excluded[i] == account) { _excluded[i] = _excluded[_excluded.length - 1]; _tOwned[account] = 0; _isExcluded[account] = false; _excluded.pop(); break; } } } function removeAllFee() private { if(_taxFee == 0 && _MarketingFee == 0) return; _previousTaxFee = _taxFee; _previousMarketingFee = _MarketingFee; _taxFee = 0; _MarketingFee = 0; } function restoreAllFee() private { _taxFee = _previousTaxFee; _MarketingFee = _previousMarketingFee; } function isExcludedFromFee(address account) public view returns(bool) { return _isExcludedFromFee[account]; } function _approve(address owner, address spender, uint256 amount) private { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _transfer(address sender, address recipient, uint256 amount) private { require(!_isBlacklisted[sender] && !_isBlacklisted[recipient], "This address is blacklisted"); require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); if(sender != owner() && recipient != owner()) require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount."); uint256 contractTokenBalance = balanceOf(address(this)); if(contractTokenBalance >= _maxTxAmount) { contractTokenBalance = _maxTxAmount; } bool overMinTokenBalance = contractTokenBalance >= _numOfTokensToExchangeForMarketing; if (!inSwap && swapEnabled && overMinTokenBalance && sender != uniswapV2Pair) { swapTokensForEth(contractTokenBalance); uint256 contractETHBalance = address(this).balance; if(contractETHBalance > 0) { sendETHToMarketing(address(this).balance); } } bool takeFee = true; if(_isExcludedFromFee[sender] || _isExcludedFromFee[recipient]){ takeFee = false; } _tokenTransfer(sender,recipient,amount,takeFee); } function swapTokensForEth(uint256 tokenAmount) private lockTheSwap{ address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); } function sendETHToMarketing(uint256 amount) private { _MarketingWalletAddress.transfer(amount.mul(3).div(8)); } function manualSwap() external onlyOwner() { uint256 contractBalance = balanceOf(address(this)); swapTokensForEth(contractBalance); } function manualSend() external onlyOwner() { uint256 contractETHBalance = address(this).balance; sendETHToMarketing(contractETHBalance); } function setSwapEnabled(bool enabled) external onlyOwner(){ swapEnabled = enabled; } function _tokenTransfer(address sender, address recipient, uint256 amount, bool takeFee) private { if(!takeFee) removeAllFee(); if (_isExcluded[sender] && !_isExcluded[recipient]) { _transferFromExcluded(sender, recipient, amount); } else if (!_isExcluded[sender] && _isExcluded[recipient]) { _transferToExcluded(sender, recipient, amount); } else if (!_isExcluded[sender] && !_isExcluded[recipient]) { _transferStandard(sender, recipient, amount); } else if (_isExcluded[sender] && _isExcluded[recipient]) { _transferBothExcluded(sender, recipient, amount); } else { _transferStandard(sender, recipient, amount); } if(!takeFee) restoreAllFee(); } function _transferStandard(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tMarketing) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeMarketing(tMarketing); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferToExcluded(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tMarketing) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeMarketing(tMarketing); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferFromExcluded(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tMarketing) = _getValues(tAmount); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeMarketing(tMarketing); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferBothExcluded(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tMarketing) = _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); _takeMarketing(tMarketing); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _takeMarketing(uint256 tMarketing) private { uint256 currentRate = _getRate(); uint256 rMarketing = tMarketing.mul(currentRate); _rOwned[address(this)] = _rOwned[address(this)].add(rMarketing); if(_isExcluded[address(this)]) _tOwned[address(this)] = _tOwned[address(this)].add(tMarketing); } function _reflectFee(uint256 rFee, uint256 tFee) private { _rTotal = _rTotal.sub(rFee); _tFeeTotal = _tFeeTotal.add(tFee); } receive() external payable {} function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256) { (uint256 tTransferAmount, uint256 tFee, uint256 tMarketing) = _getTValues(tAmount, _taxFee, _MarketingFee); uint256 currentRate = _getRate(); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, currentRate); return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tMarketing); } function _getTValues(uint256 tAmount, uint256 taxFee, uint256 MarketingFee) private pure returns (uint256, uint256, uint256) { uint256 tFee = tAmount.mul(taxFee).div(100); uint256 tMarketing = tAmount.mul(MarketingFee).div(100); uint256 tTransferAmount = tAmount.sub(tFee).sub(tMarketing); return (tTransferAmount, tFee, tMarketing); } function _getRValues(uint256 tAmount, uint256 tFee, uint256 currentRate) private pure returns (uint256, uint256, uint256) { uint256 rAmount = tAmount.mul(currentRate); uint256 rFee = tFee.mul(currentRate); uint256 rTransferAmount = rAmount.sub(rFee); return (rAmount, rTransferAmount, rFee); } function _getRate() private view returns(uint256) { (uint256 rSupply, uint256 tSupply) = _getCurrentSupply(); return rSupply.div(tSupply); } function _getCurrentSupply() private view returns(uint256, uint256) { uint256 rSupply = _rTotal; uint256 tSupply = _tTotal; for (uint256 i = 0; i < _excluded.length; i++) { if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal); rSupply = rSupply.sub(_rOwned[_excluded[i]]); tSupply = tSupply.sub(_tOwned[_excluded[i]]); } if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal); return (rSupply, tSupply); } function _getTaxFee() private view returns(uint256) { return _taxFee; } function _getMaxTxAmount() public view returns(uint256) { return _maxTxAmount; } function _getETHBalance() public view returns(uint256 balance) { return address(this).balance; } function _setTaxFee(uint256 taxFee) external onlyOwner() { require(taxFee >= 0 && taxFee <= 99, 'taxFee should be in 0 - 99'); _taxFee = taxFee; } function _setMarketingFee(uint256 MarketingFee) external onlyOwner() { require(MarketingFee >= 1 && MarketingFee <= 50, 'MarketingFee should be in 1 - 50'); _MarketingFee = MarketingFee; } function _setMarketingWallet(address payable MarketingWalletAddress) external onlyOwner() { _MarketingWalletAddress = MarketingWalletAddress; } function _setMaxTxAmount(uint256 maxTxAmount) external onlyOwner() { _maxTxAmount = maxTxAmount; } //removeFromBlackList function removeFromBlackList(address account) external onlyOwner{ _isBlacklisted[account] = false; } //adding multiple address to the blacklist - used to manually block known bots and scammers function addToBlackList(address[] calldata addresses) external onlyOwner { for(uint256 i; i < addresses.length; ++i) { _isBlacklisted[addresses[i]] = true; } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address payable","name":"MarketingWalletAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"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":"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":[],"name":"_getETHBalance","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_getMaxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"MarketingFee","type":"uint256"}],"name":"_setMarketingFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"MarketingWalletAddress","type":"address"}],"name":"_setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"_setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"}],"name":"_setTaxFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"addToBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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":"excludeAccount","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":"includeAccount","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":"isExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeFromBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"setExcludeFromFee","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"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c0604052670de0b6b3a7640000600a55600a54600019816200001e57fe5b0660001903600b556040518060400160405280601181526020017f436875726368206f6620437468756c6875000000000000000000000000000000815250600d90805190602001906200007392919062000709565b506040518060400160405280600881526020017f24435448554c4855000000000000000000000000000000000000000000000000815250600e9080519060200190620000c192919062000709565b506009600f60006101000a81548160ff021916908360ff1602179055506001601055600160115560286012556011546013556012546014556000601560146101000a81548160ff02191690831515021790555060016015806101000a81548160ff02191690831515021790555068056bc75e2d6310000060165565048c273950006017553480156200015257600080fd5b5060405162005cf238038062005cf2833981810160405260208110156200017857600080fd5b810190808051906020019092919050505060006200019b620006d860201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35080601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600b546004600062000291620006d860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200032f57600080fd5b505afa15801562000344573d6000803e3d6000fd5b505050506040513d60208110156200035b57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620003cf57600080fd5b505afa158015620003e4573d6000803e3d6000fd5b505050506040513d6020811015620003fb57600080fd5b81019080805190602001909291905050506040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b1580156200047657600080fd5b505af11580156200048b573d6000803e3d6000fd5b505050506040513d6020811015620004a257600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b8152505060016007600062000536620006e060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000669620006d860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600a546040518082815260200191505060405180910390a35050620007af565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200074c57805160ff19168380011785556200077d565b828001600101855582156200077d579182015b828111156200077c5782518255916020019190600101906200075f565b5b5090506200078c919062000790565b5090565b5b80821115620007ab57600081600090555060010162000791565b5090565b60805160601c60a05160601c615505620007ed6000398061165e5280613809525080610fc35280613c645280613d505280613d7752506155056000f3fe6080604052600436106102555760003560e01c806370a0823111610139578063cba0e996116100b6578063f2fde38b1161007a578063f2fde38b14610d62578063f429389014610db3578063f7a9159114610dca578063f815a84214610df5578063f84354f114610e20578063ff89757014610e715761025c565b8063cba0e99614610bad578063dd46706414610c14578063dd62ed3e14610c4f578063e01af92c14610cd4578063f2cc0c1814610d115761025c565b8063a52fe9bb116100fd578063a52fe9bb14610a62578063a69df4b514610a9d578063a9059cbb14610ab4578063af9549e014610b25578063b6c5232414610b825761025c565b806370a08231146108a4578063715018a6146109095780638da5cb5b1461092057806395d89b4114610961578063a457c2d7146109f15761025c565b8063313ce567116101d25780634a49ac4c116101965780634a49ac4c1461074257806351bc3c85146107935780635342acb4146107aa5780635880b873146108115780636bc87c3a1461084c5780636ddd1713146108775761025c565b8063313ce567146105cc57806339509351146105fa5780633bd5d1731461066b5780634549b039146106a657806349bd5a5e146107015761025c565b80631bbae6e0116102195780631bbae6e0146103f95780631cdd3be3146104345780631ff53b601461049b57806323b872dd146104ec5780632d8381191461057d5761025c565b806306fdde0314610261578063095ea7b3146102f157806313114a9d146103625780631694505e1461038d57806318160ddd146103ce5761025c565b3661025c57005b600080fd5b34801561026d57600080fd5b50610276610ef7565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102b657808201518184015260208101905061029b565b50505050905090810190601f1680156102e35780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102fd57600080fd5b5061034a6004803603604081101561031457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610f99565b60405180821515815260200191505060405180910390f35b34801561036e57600080fd5b50610377610fb7565b6040518082815260200191505060405180910390f35b34801561039957600080fd5b506103a2610fc1565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156103da57600080fd5b506103e3610fe5565b6040518082815260200191505060405180910390f35b34801561040557600080fd5b506104326004803603602081101561041c57600080fd5b8101908080359060200190929190505050610fef565b005b34801561044057600080fd5b506104836004803603602081101561045757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110c1565b60405180821515815260200191505060405180910390f35b3480156104a757600080fd5b506104ea600480360360208110156104be57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110e1565b005b3480156104f857600080fd5b506105656004803603606081101561050f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506111ed565b60405180821515815260200191505060405180910390f35b34801561058957600080fd5b506105b6600480360360208110156105a057600080fd5b81019080803590602001909291905050506112c6565b6040518082815260200191505060405180910390f35b3480156105d857600080fd5b506105e161134a565b604051808260ff16815260200191505060405180910390f35b34801561060657600080fd5b506106536004803603604081101561061d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611361565b60405180821515815260200191505060405180910390f35b34801561067757600080fd5b506106a46004803603602081101561068e57600080fd5b8101908080359060200190929190505050611414565b005b3480156106b257600080fd5b506106eb600480360360408110156106c957600080fd5b81019080803590602001909291908035151590602001909291905050506115a5565b6040518082815260200191505060405180910390f35b34801561070d57600080fd5b5061071661165c565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561074e57600080fd5b506107916004803603602081101561076557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611680565b005b34801561079f57600080fd5b506107a86117a3565b005b3480156107b657600080fd5b506107f9600480360360208110156107cd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611884565b60405180821515815260200191505060405180910390f35b34801561081d57600080fd5b5061084a6004803603602081101561083457600080fd5b81019080803590602001909291905050506118da565b005b34801561085857600080fd5b50610861611a30565b6040518082815260200191505060405180910390f35b34801561088357600080fd5b5061088c611a36565b60405180821515815260200191505060405180910390f35b3480156108b057600080fd5b506108f3600480360360208110156108c757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a47565b6040518082815260200191505060405180910390f35b34801561091557600080fd5b5061091e611b32565b005b34801561092c57600080fd5b50610935611cb8565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561096d57600080fd5b50610976611ce1565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156109b657808201518184015260208101905061099b565b50505050905090810190601f1680156109e35780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156109fd57600080fd5b50610a4a60048036036040811015610a1457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611d83565b60405180821515815260200191505060405180910390f35b348015610a6e57600080fd5b50610a9b60048036036020811015610a8557600080fd5b8101908080359060200190929190505050611e50565b005b348015610aa957600080fd5b50610ab2611fa6565b005b348015610ac057600080fd5b50610b0d60048036036040811015610ad757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506121c3565b60405180821515815260200191505060405180910390f35b348015610b3157600080fd5b50610b8060048036036040811015610b4857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035151590602001909291905050506121e1565b005b348015610b8e57600080fd5b50610b97612304565b6040518082815260200191505060405180910390f35b348015610bb957600080fd5b50610bfc60048036036020811015610bd057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061230e565b60405180821515815260200191505060405180910390f35b348015610c2057600080fd5b50610c4d60048036036020811015610c3757600080fd5b8101908080359060200190929190505050612364565b005b348015610c5b57600080fd5b50610cbe60048036036040811015610c7257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612555565b6040518082815260200191505060405180910390f35b348015610ce057600080fd5b50610d0f60048036036020811015610cf757600080fd5b810190808035151590602001909291905050506125dc565b005b348015610d1d57600080fd5b50610d6060048036036020811015610d3457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506126c0565b005b348015610d6e57600080fd5b50610db160048036036020811015610d8557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612a73565b005b348015610dbf57600080fd5b50610dc8612c7e565b005b348015610dd657600080fd5b50610ddf612d57565b6040518082815260200191505060405180910390f35b348015610e0157600080fd5b50610e0a612d61565b6040518082815260200191505060405180910390f35b348015610e2c57600080fd5b50610e6f60048036036020811015610e4357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612d69565b005b348015610e7d57600080fd5b50610ef560048036036020811015610e9457600080fd5b8101908080359060200190640100000000811115610eb157600080fd5b820183602082011115610ec357600080fd5b80359060200191846020830284011164010000000083111715610ee557600080fd5b90919293919293905050506130f3565b005b6060600d8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610f8f5780601f10610f6457610100808354040283529160200191610f8f565b820191906000526020600020905b815481529060010190602001808311610f7257829003601f168201915b5050505050905090565b6000610fad610fa6613259565b8484613261565b6001905092915050565b6000600c54905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600a54905090565b610ff7613259565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8060168190555050565b60036020528060005260406000206000915054906101000a900460ff1681565b6110e9613259565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006111fa848484613458565b6112bb84611206613259565b6112b6856040518060600160405280602881526020016153a060289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061126c613259565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546139459092919063ffffffff16565b613261565b600190509392505050565b6000600b54821115611323576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806152e5602a913960400191505060405180910390fd5b600061132d613a05565b90506113428184613a3090919063ffffffff16565b915050919050565b6000600f60009054906101000a900460ff16905090565b600061140a61136e613259565b84611405856006600061137f613259565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a7a90919063ffffffff16565b613261565b6001905092915050565b600061141e613259565b9050600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156114c3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c81526020018061545c602c913960400191505060405180910390fd5b60006114ce83613b02565b5050505050905061152781600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b6990919063ffffffff16565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061157f81600b54613b6990919063ffffffff16565b600b8190555061159a83600c54613a7a90919063ffffffff16565b600c81905550505050565b6000600a5483111561161f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f416d6f756e74206d757374206265206c657373207468616e20737570706c790081525060200191505060405180910390fd5b8161163f57600061162f84613b02565b5050505050905080915050611656565b600061164a84613b02565b50505050915050809150505b92915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b611688613259565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611748576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6117ab613259565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461186b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600061187630611a47565b905061188181613bb3565b50565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6118e2613259565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119a2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600081101580156119b4575060638111155b611a26576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f7461784665652073686f756c6420626520696e2030202d20393900000000000081525060200191505060405180910390fd5b8060118190555050565b60105481565b60158054906101000a900460ff1681565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611ae257600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050611b2d565b611b2a600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546112c6565b90505b919050565b611b3a613259565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611bfa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600e8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611d795780601f10611d4e57610100808354040283529160200191611d79565b820191906000526020600020905b815481529060010190602001808311611d5c57829003601f168201915b5050505050905090565b6000611e46611d90613259565b84611e41856040518060600160405280602581526020016154ab6025913960066000611dba613259565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546139459092919063ffffffff16565b613261565b6001905092915050565b611e58613259565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f18576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60018110158015611f2a575060328111155b611f9c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4d61726b6574696e674665652073686f756c6420626520696e2031202d20353081525060200191505060405180910390fd5b8060128190555050565b3373ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461204c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806154886023913960400191505060405180910390fd5b60025442116120c3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f436f6e7472616374206973206c6f636b656420756e74696c203720646179730081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60006121d76121d0613259565b8484613458565b6001905092915050565b6121e9613259565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600254905090565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b61236c613259565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461242c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550804201600281905550600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6125e4613259565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126a4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b806015806101000a81548160ff02191690831515021790555050565b6126c8613259565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612788576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b73bd8caf35cb758ce801f3639d5557de66a2dc37fa73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612821576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061543a6022913960400191505060405180910390fd5b600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156128e1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156129b557612971600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546112c6565b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506009819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612a7b613259565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b3b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612bc1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061530f6026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612c86613259565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612d46576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000479050612d5481613e97565b50565b6000601654905090565b600047905090565b612d71613259565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612e31576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612ef0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b60005b6009805490508110156130ef578173ffffffffffffffffffffffffffffffffffffffff1660098281548110612f2457fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156130e257600960016009805490500381548110612f8057fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660098281548110612fb857fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060098054806130a857fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590556130ef565b8080600101915050612ef3565b5050565b6130fb613259565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146131bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60005b82829050811015613254576001600360008585858181106131db57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508060010190506131be565b505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156132e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806154166024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561336d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806153356022913960400191505060405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156134fc5750600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61356e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f54686973206164647265737320697320626c61636b6c6973746564000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156135f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806153f16025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561367a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806152c26023913960400191505060405180910390fd5b600081116136d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806153c86029913960400191505060405180910390fd5b6136db611cb8565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156137495750613719611cb8565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156137aa576016548111156137a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806153576028913960400191505060405180910390fd5b5b60006137b530611a47565b905060165481106137c65760165490505b60006017548210159050601560149054906101000a900460ff161580156137f7575060158054906101000a900460ff165b80156138005750805b801561385857507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b156138805761386682613bb3565b6000479050600081111561387e5761387d47613e97565b5b505b600060019050600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806139275750600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561393157600090505b61393d86868684613f29565b505050505050565b60008383111582906139f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156139b757808201518184015260208101905061399c565b50505050905090810190601f1680156139e45780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000806000613a1261423a565b91509150613a298183613a3090919063ffffffff16565b9250505090565b6000613a7283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506144cb565b905092915050565b600080828401905083811015613af8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000806000806000806000806000613b1f8a601154601254614591565b9250925092506000613b2f613a05565b90506000806000613b418e8786614627565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b6000613bab83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613945565b905092915050565b6001601560146101000a81548160ff0219169083151502179055506060600267ffffffffffffffff81118015613be857600080fd5b50604051908082528060200260200182016040528015613c175781602001602082028036833780820191505090505b5090503081600081518110613c2857fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613cc857600080fd5b505afa158015613cdc573d6000803e3d6000fd5b505050506040513d6020811015613cf257600080fd5b810190808051906020019092919050505081600181518110613d1057fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613d75307f000000000000000000000000000000000000000000000000000000000000000084613261565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015613e37578082015181840152602081019050613e1c565b505050509050019650505050505050600060405180830381600087803b158015613e6057600080fd5b505af1158015613e74573d6000803e3d6000fd5b50505050506000601560146101000a81548160ff02191690831515021790555050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc613efa6008613eec60038661468590919063ffffffff16565b613a3090919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015613f25573d6000803e3d6000fd5b5050565b80613f3757613f3661470b565b5b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613fda5750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613fef57613fea84848461474e565b614226565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156140925750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156140a7576140a28484846149ae565b614225565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561414b5750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156141605761415b848484614c0e565b614224565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156142025750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561421757614212848484614dd9565b614223565b614222848484614c0e565b5b5b5b5b80614234576142336150ce565b5b50505050565b6000806000600b5490506000600a54905060005b60098054905081101561448e5782600460006009848154811061426d57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054118061435457508160056000600984815481106142ec57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b1561436b57600b54600a54945094505050506144c7565b6143f4600460006009848154811061437f57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484613b6990919063ffffffff16565b925061447f600560006009848154811061440a57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483613b6990919063ffffffff16565b9150808060010191505061424e565b506144a6600a54600b54613a3090919063ffffffff16565b8210156144be57600b54600a549350935050506144c7565b81819350935050505b9091565b60008083118290614577576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561453c578082015181840152602081019050614521565b50505050905090810190601f1680156145695780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161458357fe5b049050809150509392505050565b6000806000806145bd60646145af888a61468590919063ffffffff16565b613a3090919063ffffffff16565b905060006145e760646145d9888b61468590919063ffffffff16565b613a3090919063ffffffff16565b9050600061461082614602858c613b6990919063ffffffff16565b613b6990919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080614640858861468590919063ffffffff16565b90506000614657868861468590919063ffffffff16565b9050600061466e8284613b6990919063ffffffff16565b905082818395509550955050505093509350939050565b6000808314156146985760009050614705565b60008284029050828482816146a957fe5b0414614700576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061537f6021913960400191505060405180910390fd5b809150505b92915050565b600060115414801561471f57506000601254145b156147295761474c565b601154601381905550601254601481905550600060118190555060006012819055505b565b60008060008060008061476087613b02565b9550955095509550955095506147be87600560008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b6990919063ffffffff16565b600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061485386600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b6990919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506148e885600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a7a90919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614934816150e2565b61493e8483615287565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b6000806000806000806149c087613b02565b955095509550955095509550614a1e86600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b6990919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614ab383600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a7a90919063ffffffff16565b600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614b4885600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a7a90919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614b94816150e2565b614b9e8483615287565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b600080600080600080614c2087613b02565b955095509550955095509550614c7e86600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b6990919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614d1385600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a7a90919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614d5f816150e2565b614d698483615287565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b600080600080600080614deb87613b02565b955095509550955095509550614e4987600560008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b6990919063ffffffff16565b600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614ede86600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b6990919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614f7383600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a7a90919063ffffffff16565b600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061500885600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a7a90919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550615054816150e2565b61505e8483615287565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b601354601181905550601454601281905550565b60006150ec613a05565b90506000615103828461468590919063ffffffff16565b905061515781600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a7a90919063ffffffff16565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156152825761523e83600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a7a90919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b61529c82600b54613b6990919063ffffffff16565b600b819055506152b781600c54613a7a90919063ffffffff16565b600c81905550505056fe45524332303a207472616e7366657220746f20746865207a65726f2061646472657373416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573735472616e7366657220616d6f756e74206578636565647320746865206d61785478416d6f756e742e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63655472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737357652063616e206e6f74206578636c75646520556e697377617020726f757465722e4578636c75646564206164647265737365732063616e6e6f742063616c6c20746869732066756e6374696f6e596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6f636b45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220abfab9bde02be8feed1ab6c2c714579c86426434fd5a238c420f78e91ad61fbe64736f6c634300060c0033000000000000000000000000b50aae89f488a4757931b8fa3c1ce9adc7e83916
Deployed Bytecode
0x6080604052600436106102555760003560e01c806370a0823111610139578063cba0e996116100b6578063f2fde38b1161007a578063f2fde38b14610d62578063f429389014610db3578063f7a9159114610dca578063f815a84214610df5578063f84354f114610e20578063ff89757014610e715761025c565b8063cba0e99614610bad578063dd46706414610c14578063dd62ed3e14610c4f578063e01af92c14610cd4578063f2cc0c1814610d115761025c565b8063a52fe9bb116100fd578063a52fe9bb14610a62578063a69df4b514610a9d578063a9059cbb14610ab4578063af9549e014610b25578063b6c5232414610b825761025c565b806370a08231146108a4578063715018a6146109095780638da5cb5b1461092057806395d89b4114610961578063a457c2d7146109f15761025c565b8063313ce567116101d25780634a49ac4c116101965780634a49ac4c1461074257806351bc3c85146107935780635342acb4146107aa5780635880b873146108115780636bc87c3a1461084c5780636ddd1713146108775761025c565b8063313ce567146105cc57806339509351146105fa5780633bd5d1731461066b5780634549b039146106a657806349bd5a5e146107015761025c565b80631bbae6e0116102195780631bbae6e0146103f95780631cdd3be3146104345780631ff53b601461049b57806323b872dd146104ec5780632d8381191461057d5761025c565b806306fdde0314610261578063095ea7b3146102f157806313114a9d146103625780631694505e1461038d57806318160ddd146103ce5761025c565b3661025c57005b600080fd5b34801561026d57600080fd5b50610276610ef7565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102b657808201518184015260208101905061029b565b50505050905090810190601f1680156102e35780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102fd57600080fd5b5061034a6004803603604081101561031457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610f99565b60405180821515815260200191505060405180910390f35b34801561036e57600080fd5b50610377610fb7565b6040518082815260200191505060405180910390f35b34801561039957600080fd5b506103a2610fc1565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156103da57600080fd5b506103e3610fe5565b6040518082815260200191505060405180910390f35b34801561040557600080fd5b506104326004803603602081101561041c57600080fd5b8101908080359060200190929190505050610fef565b005b34801561044057600080fd5b506104836004803603602081101561045757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110c1565b60405180821515815260200191505060405180910390f35b3480156104a757600080fd5b506104ea600480360360208110156104be57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110e1565b005b3480156104f857600080fd5b506105656004803603606081101561050f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506111ed565b60405180821515815260200191505060405180910390f35b34801561058957600080fd5b506105b6600480360360208110156105a057600080fd5b81019080803590602001909291905050506112c6565b6040518082815260200191505060405180910390f35b3480156105d857600080fd5b506105e161134a565b604051808260ff16815260200191505060405180910390f35b34801561060657600080fd5b506106536004803603604081101561061d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611361565b60405180821515815260200191505060405180910390f35b34801561067757600080fd5b506106a46004803603602081101561068e57600080fd5b8101908080359060200190929190505050611414565b005b3480156106b257600080fd5b506106eb600480360360408110156106c957600080fd5b81019080803590602001909291908035151590602001909291905050506115a5565b6040518082815260200191505060405180910390f35b34801561070d57600080fd5b5061071661165c565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561074e57600080fd5b506107916004803603602081101561076557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611680565b005b34801561079f57600080fd5b506107a86117a3565b005b3480156107b657600080fd5b506107f9600480360360208110156107cd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611884565b60405180821515815260200191505060405180910390f35b34801561081d57600080fd5b5061084a6004803603602081101561083457600080fd5b81019080803590602001909291905050506118da565b005b34801561085857600080fd5b50610861611a30565b6040518082815260200191505060405180910390f35b34801561088357600080fd5b5061088c611a36565b60405180821515815260200191505060405180910390f35b3480156108b057600080fd5b506108f3600480360360208110156108c757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a47565b6040518082815260200191505060405180910390f35b34801561091557600080fd5b5061091e611b32565b005b34801561092c57600080fd5b50610935611cb8565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561096d57600080fd5b50610976611ce1565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156109b657808201518184015260208101905061099b565b50505050905090810190601f1680156109e35780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156109fd57600080fd5b50610a4a60048036036040811015610a1457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611d83565b60405180821515815260200191505060405180910390f35b348015610a6e57600080fd5b50610a9b60048036036020811015610a8557600080fd5b8101908080359060200190929190505050611e50565b005b348015610aa957600080fd5b50610ab2611fa6565b005b348015610ac057600080fd5b50610b0d60048036036040811015610ad757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506121c3565b60405180821515815260200191505060405180910390f35b348015610b3157600080fd5b50610b8060048036036040811015610b4857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035151590602001909291905050506121e1565b005b348015610b8e57600080fd5b50610b97612304565b6040518082815260200191505060405180910390f35b348015610bb957600080fd5b50610bfc60048036036020811015610bd057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061230e565b60405180821515815260200191505060405180910390f35b348015610c2057600080fd5b50610c4d60048036036020811015610c3757600080fd5b8101908080359060200190929190505050612364565b005b348015610c5b57600080fd5b50610cbe60048036036040811015610c7257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612555565b6040518082815260200191505060405180910390f35b348015610ce057600080fd5b50610d0f60048036036020811015610cf757600080fd5b810190808035151590602001909291905050506125dc565b005b348015610d1d57600080fd5b50610d6060048036036020811015610d3457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506126c0565b005b348015610d6e57600080fd5b50610db160048036036020811015610d8557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612a73565b005b348015610dbf57600080fd5b50610dc8612c7e565b005b348015610dd657600080fd5b50610ddf612d57565b6040518082815260200191505060405180910390f35b348015610e0157600080fd5b50610e0a612d61565b6040518082815260200191505060405180910390f35b348015610e2c57600080fd5b50610e6f60048036036020811015610e4357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612d69565b005b348015610e7d57600080fd5b50610ef560048036036020811015610e9457600080fd5b8101908080359060200190640100000000811115610eb157600080fd5b820183602082011115610ec357600080fd5b80359060200191846020830284011164010000000083111715610ee557600080fd5b90919293919293905050506130f3565b005b6060600d8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610f8f5780601f10610f6457610100808354040283529160200191610f8f565b820191906000526020600020905b815481529060010190602001808311610f7257829003601f168201915b5050505050905090565b6000610fad610fa6613259565b8484613261565b6001905092915050565b6000600c54905090565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600a54905090565b610ff7613259565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8060168190555050565b60036020528060005260406000206000915054906101000a900460ff1681565b6110e9613259565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006111fa848484613458565b6112bb84611206613259565b6112b6856040518060600160405280602881526020016153a060289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061126c613259565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546139459092919063ffffffff16565b613261565b600190509392505050565b6000600b54821115611323576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806152e5602a913960400191505060405180910390fd5b600061132d613a05565b90506113428184613a3090919063ffffffff16565b915050919050565b6000600f60009054906101000a900460ff16905090565b600061140a61136e613259565b84611405856006600061137f613259565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a7a90919063ffffffff16565b613261565b6001905092915050565b600061141e613259565b9050600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156114c3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c81526020018061545c602c913960400191505060405180910390fd5b60006114ce83613b02565b5050505050905061152781600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b6990919063ffffffff16565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061157f81600b54613b6990919063ffffffff16565b600b8190555061159a83600c54613a7a90919063ffffffff16565b600c81905550505050565b6000600a5483111561161f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f416d6f756e74206d757374206265206c657373207468616e20737570706c790081525060200191505060405180910390fd5b8161163f57600061162f84613b02565b5050505050905080915050611656565b600061164a84613b02565b50505050915050809150505b92915050565b7f0000000000000000000000009531c0545d0eedd913cc3423c348fea8e5a4e84b81565b611688613259565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611748576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6117ab613259565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461186b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600061187630611a47565b905061188181613bb3565b50565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6118e2613259565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119a2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600081101580156119b4575060638111155b611a26576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f7461784665652073686f756c6420626520696e2030202d20393900000000000081525060200191505060405180910390fd5b8060118190555050565b60105481565b60158054906101000a900460ff1681565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611ae257600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050611b2d565b611b2a600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546112c6565b90505b919050565b611b3a613259565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611bfa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600e8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611d795780601f10611d4e57610100808354040283529160200191611d79565b820191906000526020600020905b815481529060010190602001808311611d5c57829003601f168201915b5050505050905090565b6000611e46611d90613259565b84611e41856040518060600160405280602581526020016154ab6025913960066000611dba613259565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546139459092919063ffffffff16565b613261565b6001905092915050565b611e58613259565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f18576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60018110158015611f2a575060328111155b611f9c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4d61726b6574696e674665652073686f756c6420626520696e2031202d20353081525060200191505060405180910390fd5b8060128190555050565b3373ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461204c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806154886023913960400191505060405180910390fd5b60025442116120c3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f436f6e7472616374206973206c6f636b656420756e74696c203720646179730081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60006121d76121d0613259565b8484613458565b6001905092915050565b6121e9613259565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600254905090565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b61236c613259565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461242c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550804201600281905550600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6125e4613259565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126a4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b806015806101000a81548160ff02191690831515021790555050565b6126c8613259565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612788576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b73bd8caf35cb758ce801f3639d5557de66a2dc37fa73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612821576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061543a6022913960400191505060405180910390fd5b600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156128e1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156129b557612971600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546112c6565b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506009819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612a7b613259565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b3b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612bc1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061530f6026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612c86613259565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612d46576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000479050612d5481613e97565b50565b6000601654905090565b600047905090565b612d71613259565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612e31576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612ef0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b60005b6009805490508110156130ef578173ffffffffffffffffffffffffffffffffffffffff1660098281548110612f2457fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156130e257600960016009805490500381548110612f8057fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660098281548110612fb857fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060098054806130a857fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590556130ef565b8080600101915050612ef3565b5050565b6130fb613259565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146131bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60005b82829050811015613254576001600360008585858181106131db57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508060010190506131be565b505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156132e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806154166024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561336d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806153356022913960400191505060405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156134fc5750600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61356e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f54686973206164647265737320697320626c61636b6c6973746564000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156135f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806153f16025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561367a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806152c26023913960400191505060405180910390fd5b600081116136d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806153c86029913960400191505060405180910390fd5b6136db611cb8565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156137495750613719611cb8565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156137aa576016548111156137a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806153576028913960400191505060405180910390fd5b5b60006137b530611a47565b905060165481106137c65760165490505b60006017548210159050601560149054906101000a900460ff161580156137f7575060158054906101000a900460ff165b80156138005750805b801561385857507f0000000000000000000000009531c0545d0eedd913cc3423c348fea8e5a4e84b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b156138805761386682613bb3565b6000479050600081111561387e5761387d47613e97565b5b505b600060019050600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806139275750600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561393157600090505b61393d86868684613f29565b505050505050565b60008383111582906139f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156139b757808201518184015260208101905061399c565b50505050905090810190601f1680156139e45780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000806000613a1261423a565b91509150613a298183613a3090919063ffffffff16565b9250505090565b6000613a7283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506144cb565b905092915050565b600080828401905083811015613af8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000806000806000806000806000613b1f8a601154601254614591565b9250925092506000613b2f613a05565b90506000806000613b418e8786614627565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b6000613bab83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613945565b905092915050565b6001601560146101000a81548160ff0219169083151502179055506060600267ffffffffffffffff81118015613be857600080fd5b50604051908082528060200260200182016040528015613c175781602001602082028036833780820191505090505b5090503081600081518110613c2857fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613cc857600080fd5b505afa158015613cdc573d6000803e3d6000fd5b505050506040513d6020811015613cf257600080fd5b810190808051906020019092919050505081600181518110613d1057fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613d75307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84613261565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015613e37578082015181840152602081019050613e1c565b505050509050019650505050505050600060405180830381600087803b158015613e6057600080fd5b505af1158015613e74573d6000803e3d6000fd5b50505050506000601560146101000a81548160ff02191690831515021790555050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc613efa6008613eec60038661468590919063ffffffff16565b613a3090919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015613f25573d6000803e3d6000fd5b5050565b80613f3757613f3661470b565b5b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613fda5750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613fef57613fea84848461474e565b614226565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156140925750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156140a7576140a28484846149ae565b614225565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561414b5750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156141605761415b848484614c0e565b614224565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156142025750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561421757614212848484614dd9565b614223565b614222848484614c0e565b5b5b5b5b80614234576142336150ce565b5b50505050565b6000806000600b5490506000600a54905060005b60098054905081101561448e5782600460006009848154811061426d57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054118061435457508160056000600984815481106142ec57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b1561436b57600b54600a54945094505050506144c7565b6143f4600460006009848154811061437f57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484613b6990919063ffffffff16565b925061447f600560006009848154811061440a57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483613b6990919063ffffffff16565b9150808060010191505061424e565b506144a6600a54600b54613a3090919063ffffffff16565b8210156144be57600b54600a549350935050506144c7565b81819350935050505b9091565b60008083118290614577576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561453c578082015181840152602081019050614521565b50505050905090810190601f1680156145695780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161458357fe5b049050809150509392505050565b6000806000806145bd60646145af888a61468590919063ffffffff16565b613a3090919063ffffffff16565b905060006145e760646145d9888b61468590919063ffffffff16565b613a3090919063ffffffff16565b9050600061461082614602858c613b6990919063ffffffff16565b613b6990919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080614640858861468590919063ffffffff16565b90506000614657868861468590919063ffffffff16565b9050600061466e8284613b6990919063ffffffff16565b905082818395509550955050505093509350939050565b6000808314156146985760009050614705565b60008284029050828482816146a957fe5b0414614700576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061537f6021913960400191505060405180910390fd5b809150505b92915050565b600060115414801561471f57506000601254145b156147295761474c565b601154601381905550601254601481905550600060118190555060006012819055505b565b60008060008060008061476087613b02565b9550955095509550955095506147be87600560008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b6990919063ffffffff16565b600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061485386600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b6990919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506148e885600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a7a90919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614934816150e2565b61493e8483615287565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b6000806000806000806149c087613b02565b955095509550955095509550614a1e86600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b6990919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614ab383600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a7a90919063ffffffff16565b600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614b4885600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a7a90919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614b94816150e2565b614b9e8483615287565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b600080600080600080614c2087613b02565b955095509550955095509550614c7e86600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b6990919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614d1385600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a7a90919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614d5f816150e2565b614d698483615287565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b600080600080600080614deb87613b02565b955095509550955095509550614e4987600560008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b6990919063ffffffff16565b600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614ede86600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b6990919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614f7383600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a7a90919063ffffffff16565b600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061500885600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a7a90919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550615054816150e2565b61505e8483615287565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b601354601181905550601454601281905550565b60006150ec613a05565b90506000615103828461468590919063ffffffff16565b905061515781600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a7a90919063ffffffff16565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156152825761523e83600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a7a90919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b61529c82600b54613b6990919063ffffffff16565b600b819055506152b781600c54613a7a90919063ffffffff16565b600c81905550505056fe45524332303a207472616e7366657220746f20746865207a65726f2061646472657373416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573735472616e7366657220616d6f756e74206578636565647320746865206d61785478416d6f756e742e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63655472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737357652063616e206e6f74206578636c75646520556e697377617020726f757465722e4578636c75646564206164647265737365732063616e6e6f742063616c6c20746869732066756e6374696f6e596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6f636b45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220abfab9bde02be8feed1ab6c2c714579c86426434fd5a238c420f78e91ad61fbe64736f6c634300060c0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000b50aae89f488a4757931b8fa3c1ce9adc7e83916
-----Decoded View---------------
Arg [0] : MarketingWalletAddress (address): 0xB50aaE89f488a4757931B8FA3c1ce9AdC7E83916
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000b50aae89f488a4757931b8fa3c1ce9adc7e83916
Deployed Bytecode Sourcemap
30361:18737:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32908:91;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33904:173;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;35252:95;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;31591:51;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;33221:103;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;48490:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;30500:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;48297:173;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;34089:329;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;36260:269;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;33118:91;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;34430:230;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;35359:405;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;35776:472;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;31653:38;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;48650:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;40934:168;;;;;;;;;;;;;:::i;:::-;;38013:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;47861:181;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;31278:32;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;31734:30;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;33336:210;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;20196:160;;;;;;;;;;;;;:::i;:::-;;19494:87;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;33011:95;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34672:281;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;48054:223;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;21303:313;;;;;;;;;;;;;:::i;:::-;;33558:171;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;35095:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;20800:97;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;34965:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;20981:234;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;33741:151;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;41307:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;36541:475;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;20528:260;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;41122:173;;;;;;;;;;;;;:::i;:::-;;47609:102;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;47723:118;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;37028:522;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;48882:204;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;32908:91;32945:13;32982:5;32975:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32908:91;:::o;33904:173::-;33979:4;34000:39;34009:12;:10;:12::i;:::-;34023:7;34032:6;34000:8;:39::i;:::-;34061:4;34054:11;;33904:173;;;;:::o;35252:95::-;35294:7;35325:10;;35318:17;;35252:95;:::o;31591:51::-;;;:::o;33221:103::-;33274:7;33305;;33298:14;;33221:103;:::o;48490:120::-;19742:12;:10;:12::i;:::-;19732:22;;:6;;;;;;;;;;:22;;;19724:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;48587:11:::1;48572:12;:26;;;;48490:120:::0;:::o;30500:47::-;;;;;;;;;;;;;;;;;;;;;;:::o;48297:173::-;19742:12;:10;:12::i;:::-;19732:22;;:6;;;;;;;;;;:22;;;19724:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;48428:22:::1;48402:23;;:48;;;;;;;;;;;;;;;;;;48297:173:::0;:::o;34089:329::-;34187:4;34208:36;34218:6;34226:9;34237:6;34208:9;:36::i;:::-;34259:121;34268:6;34276:12;:10;:12::i;:::-;34290:89;34328:6;34290:89;;;;;;;;;;;;;;;;;:11;:19;34302:6;34290:19;;;;;;;;;;;;;;;:33;34310:12;:10;:12::i;:::-;34290:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;34259:8;:121::i;:::-;34402:4;34395:11;;34089:329;;;;;:::o;36260:269::-;36326:7;36369;;36358;:18;;36350:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36438:19;36461:10;:8;:10::i;:::-;36438:33;;36493:24;36505:11;36493:7;:11;;:24;;;;:::i;:::-;36486:31;;;36260:269;;;:::o;33118:91::-;33159:5;33188:9;;;;;;;;;;;33181:16;;33118:91;:::o;34430:230::-;34518:4;34539:83;34548:12;:10;:12::i;:::-;34562:7;34571:50;34610:10;34571:11;:25;34583:12;:10;:12::i;:::-;34571:25;;;;;;;;;;;;;;;:34;34597:7;34571:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;34539:8;:83::i;:::-;34644:4;34637:11;;34430:230;;;;:::o;35359:405::-;35415:14;35432:12;:10;:12::i;:::-;35415:29;;35468:11;:19;35480:6;35468:19;;;;;;;;;;;;;;;;;;;;;;;;;35467:20;35459:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35552:15;35576:19;35587:7;35576:10;:19::i;:::-;35551:44;;;;;;;35628:28;35648:7;35628;:15;35636:6;35628:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;35610:7;:15;35618:6;35610:15;;;;;;;;;;;;;;;:46;;;;35681:20;35693:7;35681;;:11;;:20;;;;:::i;:::-;35671:7;:30;;;;35729:23;35744:7;35729:10;;:14;;:23;;;;:::i;:::-;35716:10;:36;;;;35359:405;;;:::o;35776:472::-;35866:7;35909;;35898;:18;;35890:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35972:17;35967:270;;36011:15;36035:19;36046:7;36035:10;:19::i;:::-;36010:44;;;;;;;36080:7;36073:14;;;;;35967:270;36130:23;36161:19;36172:7;36161:10;:19::i;:::-;36128:52;;;;;;;36206:15;36199:22;;;35776:472;;;;;:::o;31653:38::-;;;:::o;48650:118::-;19742:12;:10;:12::i;:::-;19732:22;;:6;;;;;;;;;;:22;;;19724:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;48751:5:::1;48725:14;:23;48740:7;48725:23;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;48650:118:::0;:::o;40934:168::-;19742:12;:10;:12::i;:::-;19732:22;;:6;;;;;;;;;;:22;;;19724:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;40992:23:::1;41018:24;41036:4;41018:9;:24::i;:::-;40992:50;;41057:33;41074:15;41057:16;:33::i;:::-;19806:1;40934:168::o:0;38013:131::-;38077:4;38105:18;:27;38124:7;38105:27;;;;;;;;;;;;;;;;;;;;;;;;;38098:34;;38013:131;;;:::o;47861:181::-;19742:12;:10;:12::i;:::-;19732:22;;:6;;;;;;;;;;:22;;;19724:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;47951:1:::1;47941:6;:11;;:27;;;;;47966:2;47956:6;:12;;47941:27;47933:66;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;48024:6;48014:7;:16;;;;47861:181:::0;:::o;31278:32::-;;;;:::o;31734:30::-;;;;;;;;;;;;:::o;33336:210::-;33402:7;33430:11;:20;33442:7;33430:20;;;;;;;;;;;;;;;;;;;;;;;;;33426:49;;;33459:7;:16;33467:7;33459:16;;;;;;;;;;;;;;;;33452:23;;;;33426:49;33497:37;33517:7;:16;33525:7;33517:16;;;;;;;;;;;;;;;;33497:19;:37::i;:::-;33490:44;;33336:210;;;;:::o;20196:160::-;19742:12;:10;:12::i;:::-;19732:22;;:6;;;;;;;;;;:22;;;19724:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20307:1:::1;20270:40;;20291:6;::::0;::::1;;;;;;;;20270:40;;;;;;;;;;;;20342:1;20325:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;20196:160::o:0;19494:87::-;19532:7;19563:6;;;;;;;;;;;19556:13;;19494:87;:::o;33011:95::-;33050:13;33087:7;33080:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33011:95;:::o;34672:281::-;34765:4;34786:129;34795:12;:10;:12::i;:::-;34809:7;34818:96;34857:15;34818:96;;;;;;;;;;;;;;;;;:11;:25;34830:12;:10;:12::i;:::-;34818:25;;;;;;;;;;;;;;;:34;34844:7;34818:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;34786:8;:129::i;:::-;34937:4;34930:11;;34672:281;;;;:::o;48054:223::-;19742:12;:10;:12::i;:::-;19732:22;;:6;;;;;;;;;;:22;;;19724:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;48162:1:::1;48146:12;:17;;:39;;;;;48183:2;48167:12;:18;;48146:39;48138:84;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;48253:12;48237:13;:28;;;;48054:223:::0;:::o;21303:313::-;21377:10;21359:28;;:14;;;;;;;;;;;:28;;;21351:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21456:9;;21450:3;:15;21442:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21551:14;;;;;;;;;;;21522:44;;21543:6;;;;;;;;;;21522:44;;;;;;;;;;;;21590:14;;;;;;;;;;;21581:6;;:23;;;;;;;;;;;;;;;;;;21303:313::o;33558:171::-;33636:4;33653:42;33663:12;:10;:12::i;:::-;33677:9;33688:6;33653:9;:42::i;:::-;33713:4;33706:11;;33558:171;;;;:::o;35095:145::-;19742:12;:10;:12::i;:::-;19732:22;;:6;;;;;;;;;;:22;;;19724:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35220:8:::1;35190:18;:27;35209:7;35190:27;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;35095:145:::0;;:::o;20800:97::-;20845:7;20876:9;;20869:16;;20800:97;:::o;34965:118::-;35023:4;35051:11;:20;35063:7;35051:20;;;;;;;;;;;;;;;;;;;;;;;;;35044:27;;34965:118;;;:::o;20981:234::-;19742:12;:10;:12::i;:::-;19732:22;;:6;;;;;;;;;;:22;;;19724:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21066:6:::1;::::0;::::1;;;;;;;;21049:14;;:23;;;;;;;;;;;;;;;;;;21104:1;21087:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;21139:4;21133:3;:10;21121:9;:22;;;;21200:1;21163:40;;21184:6;::::0;::::1;;;;;;;;21163:40;;;;;;;;;;;;20981:234:::0;:::o;33741:151::-;33822:7;33853:11;:18;33865:5;33853:18;;;;;;;;;;;;;;;:27;33872:7;33853:27;;;;;;;;;;;;;;;;33846:34;;33741:151;;;;:::o;41307:106::-;19742:12;:10;:12::i;:::-;19732:22;;:6;;;;;;;;;;:22;;;19724:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;41394:7:::1;41380:11;::::0;:21:::1;;;;;;;;;;;;;;;;;;41307:106:::0;:::o;36541:475::-;19742:12;:10;:12::i;:::-;19732:22;;:6;;;;;;;;;;:22;;;19724:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36637:42:::1;36626:53;;:7;:53;;;;36618:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36742:11;:20;36754:7;36742:20;;;;;;;;;;;;;;;;;;;;;;;;;36741:21;36733:61;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;36831:1;36812:7;:16;36820:7;36812:16;;;;;;;;;;;;;;;;:20;36809:116;;;36872:37;36892:7;:16;36900:7;36892:16;;;;;;;;;;;;;;;;36872:19;:37::i;:::-;36853:7;:16;36861:7;36853:16;;;;;;;;;;;;;;;:56;;;;36809:116;36962:4;36939:11;:20;36951:7;36939:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;36981:9;36996:7;36981:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36541:475:::0;:::o;20528:260::-;19742:12;:10;:12::i;:::-;19732:22;;:6;;;;;;;;;;:22;;;19724:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20641:1:::1;20621:22;;:8;:22;;;;20613:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20735:8;20706:38;;20727:6;::::0;::::1;;;;;;;;20706:38;;;;;;;;;;;;20768:8;20759:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;20528:260:::0;:::o;41122:173::-;19742:12;:10;:12::i;:::-;19732:22;;:6;;;;;;;;;;:22;;;19724:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;41180:26:::1;41209:21;41180:50;;41245:38;41264:18;41245;:38::i;:::-;19806:1;41122:173::o:0;47609:102::-;47656:7;47687:12;;47680:19;;47609:102;:::o;47723:118::-;47769:15;47808:21;47801:28;;47723:118;:::o;37028:522::-;19742:12;:10;:12::i;:::-;19732:22;;:6;;;;;;;;;;:22;;;19724:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37113:11:::1;:20;37125:7;37113:20;;;;;;;;;;;;;;;;;;;;;;;;;37105:60;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;37185:9;37180:359;37204:9;:16;;;;37200:1;:20;37180:359;;;37266:7;37250:23;;:9;37260:1;37250:12;;;;;;;;;;;;;;;;;;;;;;;;;:23;;;37246:278;;;37313:9;37342:1;37323:9;:16;;;;:20;37313:31;;;;;;;;;;;;;;;;;;;;;;;;;37298:9;37308:1;37298:12;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;37386:1;37367:7;:16;37375:7;37367:16;;;;;;;;;;;;;;;:20;;;;37433:5;37410:11;:20;37422:7;37410:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;37461:9;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37499:5;;37246:278;37222:3;;;;;;;37180:359;;;;37028:522:::0;:::o;48882:204::-;19742:12;:10;:12::i;:::-;19732:22;;:6;;;;;;;;;;:22;;;19724:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;48971:9:::1;48967:108;48986:9;;:16;;48982:1;:20;48967:108;;;49055:4;49024:14;:28;49039:9;;49049:1;49039:12;;;;;;;;;;;;;;;49024:28;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;49004:3;;;;;48967:108;;;;48882:204:::0;;:::o;3951:114::-;4004:15;4043:10;4036:17;;3951:114;:::o;38156:357::-;38270:1;38253:19;;:5;:19;;;;38245:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38355:1;38336:21;;:7;:21;;;;38328:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38443:6;38413:11;:18;38425:5;38413:18;;;;;;;;;;;;;;;:27;38432:7;38413:27;;;;;;;;;;;;;;;:36;;;;38485:7;38469:32;;38478:5;38469:32;;;38494:6;38469:32;;;;;;;;;;;;;;;;;;38156:357;;;:::o;38525:1655::-;38627:14;:22;38642:6;38627:22;;;;;;;;;;;;;;;;;;;;;;;;;38626:23;:53;;;;;38654:14;:25;38669:9;38654:25;;;;;;;;;;;;;;;;;;;;;;;;;38653:26;38626:53;38618:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38752:1;38734:20;;:6;:20;;;;38726:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38840:1;38819:23;;:9;:23;;;;38811:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38914:1;38905:6;:10;38897:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39003:7;:5;:7::i;:::-;38993:17;;:6;:17;;;;:41;;;;;39027:7;:5;:7::i;:::-;39014:20;;:9;:20;;;;38993:41;38990:138;;;39071:12;;39061:6;:22;;39053:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38990:138;39158:28;39189:24;39207:4;39189:9;:24::i;:::-;39158:55;;39269:12;;39245:20;:36;39242:124;;39338:12;;39315:35;;39242:124;39394:24;39445:34;;39421:20;:58;;39394:85;;39499:6;;;;;;;;;;;39498:7;:22;;;;;39509:11;;;;;;;;;;39498:22;:45;;;;;39524:19;39498:45;:72;;;;;39557:13;39547:23;;:6;:23;;;;39498:72;39494:384;;;39608:38;39625:20;39608:16;:38::i;:::-;39683:26;39712:21;39683:50;;39776:1;39755:18;:22;39752:111;;;39802:41;39821:21;39802:18;:41::i;:::-;39752:111;39494:384;;39916:12;39931:4;39916:19;;39975:18;:26;39994:6;39975:26;;;;;;;;;;;;;;;;;;;;;;;;;:59;;;;40005:18;:29;40024:9;40005:29;;;;;;;;;;;;;;;;;;;;;;;;;39975:59;39972:113;;;40064:5;40054:15;;39972:113;40121:47;40136:6;40143:9;40153:6;40160:7;40121:14;:47::i;:::-;38525:1655;;;;;;:::o;8478:208::-;8564:7;8601:1;8596;:6;;8604:12;8588:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8632:9;8648:1;8644;:5;8632:17;;8673:1;8666:8;;;8478:208;;;;;:::o;46696:175::-;46737:7;46762:15;46779;46798:19;:17;:19::i;:::-;46761:56;;;;46839:20;46851:7;46839;:11;;:20;;;;:::i;:::-;46832:27;;;;46696:175;:::o;10008:140::-;10066:7;10097:39;10101:1;10104;10097:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;10090:46;;10008:140;;;;:::o;7481:197::-;7539:7;7563:9;7579:1;7575;:5;7563:17;;7608:1;7603;:6;;7595:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7665:1;7658:8;;;7481:197;;;;:::o;45414:496::-;45473:7;45482;45491;45500;45509;45518;45543:23;45568:12;45582:18;45604:44;45616:7;45625;;45634:13;;45604:11;:44::i;:::-;45542:106;;;;;;45663:19;45686:10;:8;:10::i;:::-;45663:33;;45712:15;45729:23;45754:12;45770:39;45782:7;45791:4;45797:11;45770;:39::i;:::-;45711:98;;;;;;45832:7;45841:15;45858:4;45864:15;45881:4;45887:10;45824:74;;;;;;;;;;;;;;;;;;;45414:496;;;;;;;:::o;7996:144::-;8054:7;8085:43;8089:1;8092;8085:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;8078:50;;7996:144;;;;:::o;40192:557::-;32084:4;32075:6;;:13;;;;;;;;;;;;;;;;;;40284:21:::1;40322:1;40308:16;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;40284:40;;40357:4;40339;40344:1;40339:7;;;;;;;;;;;;;:23;;;;;;;;;::::0;::::1;40387:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;40377:4;40382:1;40377:7;;;;;;;;;;;;;:32;;;;;;;;;::::0;::::1;40426:62;40443:4;40458:15;40476:11;40426:8;:62::i;:::-;40516:15;:66;;;40601:11;40631:1;40652:4;40683;40707:15;40516:221;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;32103:1;32128:5:::0;32119:6;;:14;;;;;;;;;;;;;;;;;;40192:557;:::o;40769:145::-;40836:23;;;;;;;;;;;:32;;:54;40869:20;40887:1;40869:13;40880:1;40869:6;:10;;:13;;;;:::i;:::-;:17;;:20;;;;:::i;:::-;40836:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;40769:145;:::o;41433:883::-;41549:7;41545:44;;41575:14;:12;:14::i;:::-;41545:44;41610:11;:19;41622:6;41610:19;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;41634:11;:22;41646:9;41634:22;;;;;;;;;;;;;;;;;;;;;;;;;41633:23;41610:46;41606:637;;;41677:48;41699:6;41707:9;41718:6;41677:21;:48::i;:::-;41606:637;;;41752:11;:19;41764:6;41752:19;;;;;;;;;;;;;;;;;;;;;;;;;41751:20;:46;;;;;41775:11;:22;41787:9;41775:22;;;;;;;;;;;;;;;;;;;;;;;;;41751:46;41747:496;;;41818:46;41838:6;41846:9;41857:6;41818:19;:46::i;:::-;41747:496;;;41891:11;:19;41903:6;41891:19;;;;;;;;;;;;;;;;;;;;;;;;;41890:20;:47;;;;;41915:11;:22;41927:9;41915:22;;;;;;;;;;;;;;;;;;;;;;;;;41914:23;41890:47;41886:357;;;41958:44;41976:6;41984:9;41995:6;41958:17;:44::i;:::-;41886:357;;;42028:11;:19;42040:6;42028:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;42051:11;:22;42063:9;42051:22;;;;;;;;;;;;;;;;;;;;;;;;;42028:45;42024:219;;;42094:48;42116:6;42124:9;42135:6;42094:21;:48::i;:::-;42024:219;;;42183:44;42201:6;42209:9;42220:6;42183:17;:44::i;:::-;42024:219;41886:357;41747:496;41606:637;42263:7;42259:45;;42289:15;:13;:15::i;:::-;42259:45;41433:883;;;;:::o;46883:601::-;46933:7;46942;46966:15;46984:7;;46966:25;;47006:15;47024:7;;47006:25;;47057:9;47052:305;47076:9;:16;;;;47072:1;:20;47052:305;;;47146:7;47122;:21;47130:9;47140:1;47130:12;;;;;;;;;;;;;;;;;;;;;;;;;47122:21;;;;;;;;;;;;;;;;:31;:66;;;;47181:7;47157;:21;47165:9;47175:1;47165:12;;;;;;;;;;;;;;;;;;;;;;;;;47157:21;;;;;;;;;;;;;;;;:31;47122:66;47118:97;;;47198:7;;47207;;47190:25;;;;;;;;;47118:97;47244:34;47256:7;:21;47264:9;47274:1;47264:12;;;;;;;;;;;;;;;;;;;;;;;;;47256:21;;;;;;;;;;;;;;;;47244:7;:11;;:34;;;;:::i;:::-;47234:44;;47307:34;47319:7;:21;47327:9;47337:1;47327:12;;;;;;;;;;;;;;;;;;;;;;;;;47319:21;;;;;;;;;;;;;;;;47307:7;:11;;:34;;;;:::i;:::-;47297:44;;47094:3;;;;;;;47052:305;;;;47385:20;47397:7;;47385;;:11;;:20;;;;:::i;:::-;47375:7;:30;47371:61;;;47415:7;;47424;;47407:25;;;;;;;;47371:61;47455:7;47464;47447:25;;;;;;46883:601;;;:::o;10685:298::-;10771:7;10807:1;10803;:5;10810:12;10795:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10838:9;10854:1;10850;:5;;;;;;10838:17;;10970:1;10963:8;;;10685:298;;;;;:::o;45922:396::-;46020:7;46029;46038;46062:12;46077:28;46101:3;46077:19;46089:6;46077:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;46062:43;;46120:18;46141:34;46171:3;46141:25;46153:12;46141:7;:11;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;46120:55;;46190:23;46216:33;46238:10;46216:17;46228:4;46216:7;:11;;:17;;;;:::i;:::-;:21;;:33;;;;:::i;:::-;46190:59;;46272:15;46289:4;46295:10;46264:42;;;;;;;;;45922:396;;;;;;;:::o;46330:354::-;46425:7;46434;46443;46467:15;46485:24;46497:11;46485:7;:11;;:24;;;;:::i;:::-;46467:42;;46524:12;46539:21;46548:11;46539:4;:8;;:21;;;;:::i;:::-;46524:36;;46575:23;46601:17;46613:4;46601:7;:11;;:17;;;;:::i;:::-;46575:43;;46641:7;46650:15;46667:4;46633:39;;;;;;;;;46330:354;;;;;;;:::o;8980:511::-;9038:7;9304:1;9299;:6;9295:55;;;9333:1;9326:8;;;;9295:55;9366:9;9382:1;9378;:5;9366:17;;9415:1;9410;9406;:5;;;;;;:10;9398:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9478:1;9471:8;;;8980:511;;;;;:::o;37562:282::-;37623:1;37612:7;;:12;:34;;;;;37645:1;37628:13;;:18;37612:34;37609:46;;;37648:7;;37609:46;37701:7;;37683:15;:25;;;;37747:13;;37723:21;:37;;;;37799:1;37789:7;:11;;;;37831:1;37815:13;:17;;;;37562:282;:::o;43506:599::-;43613:15;43630:23;43655:12;43669:23;43694:12;43708:18;43730:19;43741:7;43730:10;:19::i;:::-;43612:137;;;;;;;;;;;;43782:28;43802:7;43782;:15;43790:6;43782:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;43764:7;:15;43772:6;43764:15;;;;;;;;;;;;;;;:46;;;;43843:28;43863:7;43843;:15;43851:6;43843:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;43825:7;:15;43833:6;43825:15;;;;;;;;;;;;;;;:46;;;;43907:39;43930:15;43907:7;:18;43915:9;43907:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;43886:7;:18;43894:9;43886:18;;;;;;;;;;;;;;;:60;;;;43962:26;43977:10;43962:14;:26::i;:::-;44006:23;44018:4;44024;44006:11;:23::i;:::-;44066:9;44049:44;;44058:6;44049:44;;;44077:15;44049:44;;;;;;;;;;;;;;;;;;43506:599;;;;;;;;;:::o;42872:622::-;42977:15;42994:23;43019:12;43033:23;43058:12;43072:18;43094:19;43105:7;43094:10;:19::i;:::-;42976:137;;;;;;;;;;;;43146:28;43166:7;43146;:15;43154:6;43146:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;43128:7;:15;43136:6;43128:15;;;;;;;;;;;;;;;:46;;;;43210:39;43233:15;43210:7;:18;43218:9;43210:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;43189:7;:18;43197:9;43189:18;;;;;;;;;;;;;;;:60;;;;43285:39;43308:15;43285:7;:18;43293:9;43285:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;43264:7;:18;43272:9;43264:18;;;;;;;;;;;;;;;:60;;;;43343:26;43358:10;43343:14;:26::i;:::-;43395:23;43407:4;43413;43395:11;:23::i;:::-;43455:9;43438:44;;43447:6;43438:44;;;43466:15;43438:44;;;;;;;;;;;;;;;;;;42872:622;;;;;;;;;:::o;42328:532::-;42431:15;42448:23;42473:12;42487:23;42512:12;42526:18;42548:19;42559:7;42548:10;:19::i;:::-;42430:137;;;;;;;;;;;;42600:28;42620:7;42600;:15;42608:6;42600:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;42582:7;:15;42590:6;42582:15;;;;;;;;;;;;;;;:46;;;;42664:39;42687:15;42664:7;:18;42672:9;42664:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;42643:7;:18;42651:9;42643:18;;;;;;;;;;;;;;;:60;;;;42719:26;42734:10;42719:14;:26::i;:::-;42761:23;42773:4;42779;42761:11;:23::i;:::-;42821:9;42804:44;;42813:6;42804:44;;;42832:15;42804:44;;;;;;;;;;;;;;;;;;42328:532;;;;;;;;;:::o;44117:682::-;44224:15;44241:23;44266:12;44280:23;44305:12;44319:18;44341:19;44352:7;44341:10;:19::i;:::-;44223:137;;;;;;;;;;;;44393:28;44413:7;44393;:15;44401:6;44393:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;44375:7;:15;44383:6;44375:15;;;;;;;;;;;;;;;:46;;;;44454:28;44474:7;44454;:15;44462:6;44454:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;44436:7;:15;44444:6;44436:15;;;;;;;;;;;;;;;:46;;;;44518:39;44541:15;44518:7;:18;44526:9;44518:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;44497:7;:18;44505:9;44497:18;;;;;;;;;;;;;;;:60;;;;44593:39;44616:15;44593:7;:18;44601:9;44593:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;44572:7;:18;44580:9;44572:18;;;;;;;;;;;;;;;:60;;;;44650:26;44665:10;44650:14;:26::i;:::-;44700:23;44712:4;44718;44700:11;:23::i;:::-;44760:9;44743:44;;44752:6;44743:44;;;44771:15;44743:44;;;;;;;;;;;;;;;;;;44117:682;;;;;;;;;:::o;37860:137::-;37918:15;;37908:7;:25;;;;37964:21;;37948:13;:37;;;;37860:137::o;44811:379::-;44878:19;44901:10;:8;:10::i;:::-;44878:33;;44926:18;44947:27;44962:11;44947:10;:14;;:27;;;;:::i;:::-;44926:48;;45014:38;45041:10;45014:7;:22;45030:4;45014:22;;;;;;;;;;;;;;;;:26;;:38;;;;:::i;:::-;44989:7;:22;45005:4;44989:22;;;;;;;;;;;;;;;:63;;;;45070:11;:26;45090:4;45070:26;;;;;;;;;;;;;;;;;;;;;;;;;45067:111;;;45140:38;45167:10;45140:7;:22;45156:4;45140:22;;;;;;;;;;;;;;;;:26;;:38;;;;:::i;:::-;45115:7;:22;45131:4;45115:22;;;;;;;;;;;;;;;:63;;;;45067:111;44811:379;;;:::o;45202:159::-;45284:17;45296:4;45284:7;;:11;;:17;;;;:::i;:::-;45274:7;:27;;;;45329:20;45344:4;45329:10;;:14;;:20;;;;:::i;:::-;45316:10;:33;;;;45202:159;;:::o
Swarm Source
ipfs://abfab9bde02be8feed1ab6c2c714579c86426434fd5a238c420f78e91ad61fbe
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.