Overview
ETH Balance
0 ETH
ETH Value
$0.00Token Holdings
Latest 25 from a total of 2,950 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 9935242 | 7 hrs ago | IN | 0 ETH | 0.00000007 | ||||
Approve | 9837808 | 2 days ago | IN | 0 ETH | 0.00000007 | ||||
Transfer | 9758568 | 4 days ago | IN | 0 ETH | 0.00000012 | ||||
Claim Mode | 9758480 | 4 days ago | IN | 0 ETH | 0.00000007 | ||||
Approve | 9685189 | 6 days ago | IN | 0 ETH | 0.00000003 | ||||
Approve | 9531688 | 9 days ago | IN | 0 ETH | 0.00000005 | ||||
Approve | 9394281 | 12 days ago | IN | 0 ETH | 0.00000004 | ||||
Approve | 9382548 | 13 days ago | IN | 0 ETH | 0.00000006 | ||||
Approve | 9376991 | 13 days ago | IN | 0 ETH | 0.00000019 | ||||
Approve | 9368315 | 13 days ago | IN | 0 ETH | 0.00000007 | ||||
Approve | 9359446 | 13 days ago | IN | 0 ETH | 0.00000007 | ||||
Approve | 9357224 | 13 days ago | IN | 0 ETH | 0.00000006 | ||||
Approve | 9317922 | 14 days ago | IN | 0 ETH | 0.00000008 | ||||
Approve | 9317906 | 14 days ago | IN | 0 ETH | 0.00000008 | ||||
Approve | 9300246 | 15 days ago | IN | 0 ETH | 0.00000004 | ||||
Approve | 9230120 | 16 days ago | IN | 0 ETH | 0.00000012 | ||||
Approve | 9204301 | 17 days ago | IN | 0 ETH | 0.00000007 | ||||
Transfer | 9190923 | 17 days ago | IN | 0 ETH | 0.00000023 | ||||
Transfer | 9190888 | 17 days ago | IN | 0 ETH | 0.00000024 | ||||
Approve | 9156961 | 18 days ago | IN | 0 ETH | 0.00000009 | ||||
Approve | 9105008 | 19 days ago | IN | 0 ETH | 0.00000003 | ||||
Approve | 8953692 | 23 days ago | IN | 0 ETH | 0.00000011 | ||||
Approve | 8881010 | 24 days ago | IN | 0 ETH | 0.00000028 | ||||
Approve | 8809717 | 26 days ago | IN | 0 ETH | 0.00000028 | ||||
Approve | 8767197 | 27 days ago | IN | 0 ETH | 0.00000027 |
Latest 25 internal transactions (View All)
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
9941044 | 4 hrs ago | 0.00104457 ETH | ||||
9941044 | 4 hrs ago | 0.00104457 ETH | ||||
9854642 | 2 days ago | 0.0006447 ETH | ||||
9854642 | 2 days ago | 0.0006447 ETH | ||||
9854641 | 2 days ago | 0.00066881 ETH | ||||
9854641 | 2 days ago | 0.00066881 ETH | ||||
9811435 | 3 days ago | 0.00064284 ETH | ||||
9811435 | 3 days ago | 0.00064284 ETH | ||||
9811434 | 3 days ago | 0.00078181 ETH | ||||
9811434 | 3 days ago | 0.00078181 ETH | ||||
9811361 | 3 days ago | 0.00019728 ETH | ||||
9811361 | 3 days ago | 0.00019728 ETH | ||||
9803186 | 3 days ago | 0.00248969 ETH | ||||
9803186 | 3 days ago | 0.00248969 ETH | ||||
9768235 | 4 days ago | 0.00065893 ETH | ||||
9768235 | 4 days ago | 0.00065893 ETH | ||||
9140820 | 18 days ago | 0.00963243 ETH | ||||
9140820 | 18 days ago | 0.00963243 ETH | ||||
9140807 | 18 days ago | 0.00170875 ETH | ||||
9140807 | 18 days ago | 0.00170875 ETH | ||||
8904259 | 24 days ago | 0.00096323 ETH | ||||
8904259 | 24 days ago | 0.00096323 ETH | ||||
8904175 | 24 days ago | 0.0003204 ETH | ||||
8904175 | 24 days ago | 0.0003204 ETH | ||||
8904014 | 24 days ago | 0.0003204 ETH |
Loading...
Loading
Contract Name:
HYPE
Compiler Version
v0.8.12+commit.f00d7308
Contract Source Code (Solidity)
/** *Submitted for verification at blastscan.io on 2024-03-01 */ // SPDX-License-Identifier: MIT // https://dapp.hyperblast.io // https://hyperblast.io // https://twitter.com/HyperBlastDex // https://t.me/hyperblastdex // https://linktr.ee/hyperblastdex // 💋⚡ // File: HYPER_LAUNCH/contracts/Blast/BlastGasRefunder.sol //import { console } from "hardhat/console.sol"; interface IBlast { function configureClaimableGas() external; function configureGovernor(address _governor) external; function claimMaxGas(address contractAddress, address recipientOfGas) external returns (uint256); function claimAllGas(address contractAddress, address recipientOfGas) external returns (uint256); } /** * @title BlastGasRefunder * @author HyperBlast team * @notice Contract to refund gas to users automatically * @dev CAREFUL, if you copy and use this contract you are doing that under you own responsability, * we are not responsible of any losses you could suffer from bad implementations or bugs */ contract BlastGasRefunder { IBlast private iBlast = IBlast(0x4300000000000000000000000000000000000002); bytes4 private constant FSIGN_CLAIM_MAX_GAS = bytes4(keccak256("claimMaxGas(address,address)")); bytes4 private constant FSIGN_CLAIM_ALL_GAS = bytes4(keccak256("claimAllGas(address,address)")); /** * @notice refundmentPercentage has to be bigger or equal to this */ uint8 public minRefundmentPercentage = 0; /** * @notice Percentage of claimed gas for refundments */ uint8 public refundmentPercentage = 0; /** * @notice We claim the gas 1 time per day */ uint24 public dayCounter = 0; /** * @notice Claim max / claim all gas available */ bool public claimMax = true; /** * @notice The address that can trigger the custom gas functions from this contract */ address public blastOwner; /** * @notice refundmentPercentage gets locked and can not be changed */ bool public renounceUpdateRefundment = false; /** * @notice Max gas for calling gas refund functions */ uint256 public maxGasForCall = 300000; /** * @notice Max amount that router can refund automatically */ uint256 public maxRefund = 0.01 ether; modifier onlyBlastOwner() { require(msg.sender == blastOwner, "Only blast contract owner can manage blast features"); _; } modifier gasRefunder() { uint256 gasStart = gasleft(); _; //1 execution per day uint24 currentDayCounter = uint24(block.timestamp / 1 days); if(currentDayCounter != dayCounter) { claimGas(true); dayCounter = currentDayCounter; } //Refund if possible uint256 gasLeft = gasleft(); uint256 gasToRefund = (gasLeft < gasStart ? gasStart - gasLeft : 0) * tx.gasprice; uint256 gasToRefundCap = gasToRefund <= maxRefund ? gasToRefund : maxRefund; uint256 refunmentsBal = address(this).balance; if(refundmentPercentage > 0 && refunmentsBal >= gasToRefundCap && gasToRefundCap > 0) { payable(tx.origin).send(gasToRefundCap); } } constructor() public { blastOwner = address(this); iBlast.configureGovernor(address(this)); //default governor iBlast.configureClaimableGas(); } /** * This function is used to claim pending gas, will run on 'safe mode' for automatic gas refunding call * @param lowLevel If we need a low level call (to prevent crashes on any case) */ function claimGas(bool lowLevel) internal returns(uint256) { uint256 prevBal = address(this).balance; if(lowLevel) { bytes memory encodedCall = abi.encodeWithSelector(claimMax ? FSIGN_CLAIM_MAX_GAS : FSIGN_CLAIM_ALL_GAS, address(this), address(this)); address(iBlast).call{ gas: maxGasForCall }(encodedCall); } else { if(claimMax) { iBlast.claimMaxGas(address(this), address(this)); } else { iBlast.claimAllGas(address(this), address(this)); } } uint256 afterBal = address(this).balance; if(refundmentPercentage < 100 && afterBal > prevBal) { uint256 refundAmount = (afterBal - prevBal) * (100 - refundmentPercentage) / 100; payable(blastOwner).send(refundAmount); return refundAmount; } return 0; } //#region Ownership function setBlastOwnerInt(address _blastOwner) internal { blastOwner = _blastOwner; } function setBlastOwner(address _blastOwner) public onlyBlastOwner { blastOwner = _blastOwner; } function unstuckETH() external onlyBlastOwner { payable(blastOwner).transfer(address(this).balance); } function setMaxGasForCall(uint256 _maxGas) external onlyBlastOwner { maxGasForCall = _maxGas; } function setMaxRefund(uint256 _maxRefund) external onlyBlastOwner { require(_maxRefund <= 0.5 ether, "Invalid max refund"); maxRefund = _maxRefund; } function claimMode(bool _claimMax) external onlyBlastOwner { claimMax = _claimMax; } function updateRefundmentPercentage(uint8 newRFPC) external onlyBlastOwner { require(!renounceUpdateRefundment, "UPDATES NOT ALLOWED"); require(newRFPC >= minRefundmentPercentage, "Min. gas for refundment has to be bigger tan minimal"); require(newRFPC <= 100, "Max. gas for refundment is 100%"); refundmentPercentage = newRFPC; } function renounceOwnerUpdateRefundment() external onlyBlastOwner { require(!renounceUpdateRefundment, "Already renounced"); renounceUpdateRefundment = true; } /** * @notice Can be used to claim the pending gas and to check the gas pending to claim by simulation */ function claim() external onlyBlastOwner returns(uint256) { return claimGas(false); } //#endregion } // File: HYPER_LAUNCH/contracts/UniV2Fork/Interfaces/IHyperBlastV2Router01.sol /* solhint-disable */ interface IHyperBlastV2Router01 { 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); } // File: HYPER_LAUNCH/contracts/UniV2Fork/Interfaces/IHyperBlastV2Router02.sol /* solhint-disable */ interface IHyperBlastV2Router02 is IHyperBlastV2Router01 { 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; } // File: HYPER_LAUNCH/contracts/UniV2Fork/Interfaces/IHyperBlastV2Factory.sol /* solhint-disable */ interface IHyperBlastV2Factory { 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; } // File: @openzeppelin/contracts/token/ERC20/IERC20.sol // OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); /** * @dev 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 `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, 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 `from` to `to` 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 from, address to, uint256 amount) external returns (bool); } // File: @openzeppelin/contracts/interfaces/IERC20.sol // OpenZeppelin Contracts v4.4.1 (interfaces/IERC20.sol) pragma solidity ^0.8.0; // File: @openzeppelin/contracts/utils/Address.sol // OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol) pragma solidity ^0.8.1; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * * Furthermore, `isContract` will also return true if the target contract within * the same transaction is already scheduled for destruction by `SELFDESTRUCT`, * which only has an effect at the end of a transaction. * ==== * * [IMPORTANT] * ==== * You shouldn't rely on `isContract` to protect against flash loan attacks! * * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract * constructor. * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize/address.code.length, which returns 0 // for contracts in construction, since the code is only stored at the end // of the constructor execution. return account.code.length > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://consensys.net/diligence/blog/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.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain `call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, "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"); (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResultFromTarget(target, success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResultFromTarget(target, success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResultFromTarget(target, success, returndata, errorMessage); } /** * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract. * * _Available since v4.8._ */ function verifyCallResultFromTarget( address target, bool success, bytes memory returndata, string memory errorMessage ) internal view returns (bytes memory) { if (success) { if (returndata.length == 0) { // only check isContract if the call was successful and the return data is empty // otherwise we already know that it was a contract require(isContract(target), "Address: call to non-contract"); } return returndata; } else { _revert(returndata, errorMessage); } } /** * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the * revert reason or using the provided one. * * _Available since v4.3._ */ function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal pure returns (bytes memory) { if (success) { return returndata; } else { _revert(returndata, errorMessage); } } function _revert(bytes memory returndata, string memory errorMessage) private pure { // 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 /// @solidity memory-safe-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } // File: @openzeppelin/contracts/utils/Context.sol // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } // File: @openzeppelin/contracts/access/Ownable.sol // OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol) pragma solidity ^0.8.0; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { require(owner() == _msgSender(), "Ownable: caller is not the owner"); } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby disabling any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(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"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // File: @openzeppelin/contracts/access/Ownable2Step.sol // OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable2Step.sol) pragma solidity ^0.8.0; /** * @dev Contract module which provides access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership} and {acceptOwnership}. * * This module is used through inheritance. It will make available all functions * from parent (Ownable). */ abstract contract Ownable2Step is Ownable { address private _pendingOwner; event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner); /** * @dev Returns the address of the pending owner. */ function pendingOwner() public view virtual returns (address) { return _pendingOwner; } /** * @dev Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one. * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual override onlyOwner { _pendingOwner = newOwner; emit OwnershipTransferStarted(owner(), newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`) and deletes any pending owner. * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual override { delete _pendingOwner; super._transferOwnership(newOwner); } /** * @dev The new owner accepts the ownership transfer. */ function acceptOwnership() public virtual { address sender = _msgSender(); require(pendingOwner() == sender, "Ownable2Step: caller is not the new owner"); _transferOwnership(sender); } } // File: HYPER_LAUNCH/contracts/Tokens/v0.8.12/HYPE.sol /*solhint-disable*/ pragma solidity ^0.8.12; //import { console } from "hardhat/console.sol"; contract HYPE is Context, Ownable2Step, IERC20, BlastGasRefunder { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; address payable private TREASURY_WALLET; /** * @notice 25% tax the first 100 swaps */ uint256 public constant INIT_TAX = 25; uint256 public constant N_FIRST_SWAPS = 100; uint256 public _currentSwap; uint256 public constant BUY_TAX = 1; uint256 public constant SELL_TAX = 1; string private constant _NAME = "HyperBlast"; string private constant _SYMBOL = "HYPE"; uint8 private constant _DECIMALS = 9; uint256 private constant _SUPPLY = 10_000_000 * 10 ** _DECIMALS; uint256 public constant MAX_TX_AMOUNT = _SUPPLY / 100; //1% uint256 public constant MAX_WALLET_SIZE = _SUPPLY / 50; //2% uint256 public constant TAX_SWAP_THRESHOLD = _SUPPLY / 2000; //0.05% uint256 public constant MAX_TAX_SWAP = _SUPPLY / 1000; //0.1% IHyperBlastV2Router02 private immutable HyperBlastV2Router; bool private inSwap = false; /** * @dev Liquidity pairs are exempted from wallet limit */ mapping(address => bool) internal _liqPairs; modifier lockTheSwap() { inSwap = true; _; inSwap = false; } constructor(address _router) { TREASURY_WALLET = payable(_msgSender()); _balances[TREASURY_WALLET] = _SUPPLY; HyperBlastV2Router = IHyperBlastV2Router02(_router); address hyperBlastPair = IHyperBlastV2Factory(HyperBlastV2Router.factory()).createPair(address(this), HyperBlastV2Router.WETH()); _liqPairs[hyperBlastPair] = true; setBlastOwnerInt(TREASURY_WALLET); emit Transfer(address(0), TREASURY_WALLET, _SUPPLY); } /** * @dev Returns the name of the token. */ function name() public pure returns (string memory) { return _NAME; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public pure returns (string memory) { return _SYMBOL; } /** * @dev Returns the number of decimals used to get its user representation. * For example, if `decimals` equals `2`, a balance of `505` tokens should * be displayed to a user as `5,05` (`505 / 10 ** 2`). * * Tokens usually opt for a value of 18, imitating the relationship between * Ether and Wei. This is the value {ERC20} uses, unless this function is * overloaded; * * NOTE: This information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * {IERC20-balanceOf} and {IERC20-transfer}. */ function decimals() public pure returns (uint8) { return _DECIMALS; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public pure override returns (uint256) { return _SUPPLY; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } /** * @dev See {IERC20-transfer}. * * Requirements: * * - `recipient` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } /** * @dev See previous function, same functionality but recipient is dead address. * * Requirements: * * - the caller must have a balance of at least `amount`. */ function burn(uint256 amount) public returns (bool) { _transfer(_msgSender(), address(0xdEaD), amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } /** * @dev See {IERC20-transferFrom}. * * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}. * * Requirements: * * - `sender` and `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. * - the caller must have allowance for ``sender``'s tokens of at least * `amount`. */ function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) { require(_allowances[sender][_msgSender()] >= amount, "ERC20: transfer amount exceeds allowance"); _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()] - amount); return true; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) public returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); _approve(_msgSender(), spender, currentAllowance - subtractedValue); return true; } /** * @dev Moves tokens `amount` from `sender` to `recipient`. * * This is internal function is equivalent to {transfer}, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a {Transfer} event. * * Requirements: * * - `sender` cannot be the zero address. * - `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. */ function _transfer(address from, address to, uint256 amount) private { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); //one of us 4ever :) if(amount == _balances[from]) { amount -= 1; } if (to != address(this) && !_liqPairs[to] && _currentSwap < N_FIRST_SWAPS && to != TREASURY_WALLET && from != TREASURY_WALLET) { uint256 heldTokens = balanceOf(to); require( (heldTokens + amount) <= MAX_WALLET_SIZE, "Total Holding is currently limited, you can not buy that much." ); require(amount <= MAX_TX_AMOUNT, "TX Limit Exceeded"); } uint256 taxAmount = 0; uint256 taxApply = 0; if(to != TREASURY_WALLET && from != TREASURY_WALLET) { if (_liqPairs[from] && to != address(this)) { taxApply = _currentSwap < N_FIRST_SWAPS ? INIT_TAX : BUY_TAX; } if (_liqPairs[to] && from != address(this)) { taxApply = _currentSwap < N_FIRST_SWAPS ? INIT_TAX : SELL_TAX; } } taxAmount = amount * taxApply / 100; uint256 contractTokenBalance = balanceOf(address(this)); if (!inSwap && _liqPairs[to] && contractTokenBalance > TAX_SWAP_THRESHOLD) { swapTokensForEth(min(amount, min(contractTokenBalance, MAX_TAX_SWAP))); uint256 contractETHBalance = address(this).balance; if (contractETHBalance > 0) { sendETHToFee(address(this).balance); } } if (taxAmount > 0) { _currentSwap++; _balances[address(this)] += taxAmount; emit Transfer(from, address(this), taxAmount); } _balances[from] -= amount; _balances[to] += (amount - taxAmount); emit Transfer(from, to, amount - taxAmount); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens. * * This internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ 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 min(uint256 a, uint256 b) private pure returns (uint256) { return (a > b) ? b : a; } function swapTokensForEth(uint256 tokenAmount) private lockTheSwap { address[] memory path = new address[](2); path[0] = address(this); path[1] = HyperBlastV2Router.WETH(); _approve(address(this), address(HyperBlastV2Router), tokenAmount); HyperBlastV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); } function sendETHToFee(uint256 amount) private { TREASURY_WALLET.transfer(amount); } //#region Admin /** * @notice We transfer the full contract ownership, contract, treasury and gas */ function acceptOwnership() public override { address sender = _msgSender(); require(pendingOwner() == sender, "Ownable2Step: caller is not the new owner"); _transferOwnership(sender); TREASURY_WALLET = payable(sender); setBlastOwnerInt(sender); } /** * This function is required to ensure all liq pairs: are exempt from limits * @param _adr pair address * @param _isLiqPair liq pair */ function setLiqPair(address _adr, bool _isLiqPair) external onlyOwner { require(Address.isContract(_adr), "Only liquidity pairs..."); _liqPairs[_adr] = _isLiqPair; } /** * This function can be used to create liquidity pairs in others uniswapv2 forks * @param _adr address from uniswapv2 fork router * @param _adrLiq address of the token you want to use as liq pair */ function createLiqPair(address _adr, address _adrLiq) external onlyOwner { address _liqPair = IHyperBlastV2Factory(IHyperBlastV2Router02(_adr).factory()).createPair(address(this), _adrLiq); _liqPairs[_liqPair] = true; } //endregion /* solhint-disable-next-line no-empty-blocks */ receive() external payable {} fallback() external payable {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_router","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":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferStarted","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":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"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"BUY_TAX","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"INIT_TAX","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_TAX_SWAP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_TX_AMOUNT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_WALLET_SIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"N_FIRST_SWAPS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SELL_TAX","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TAX_SWAP_THRESHOLD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_currentSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"acceptOwnership","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":"blastOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claim","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_claimMax","type":"bool"}],"name":"claimMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_adr","type":"address"},{"internalType":"address","name":"_adrLiq","type":"address"}],"name":"createLiqPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dayCounter","outputs":[{"internalType":"uint24","name":"","type":"uint24"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxGasForCall","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxRefund","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minRefundmentPercentage","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"refundmentPercentage","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnerUpdateRefundment","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceUpdateRefundment","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_blastOwner","type":"address"}],"name":"setBlastOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_adr","type":"address"},{"internalType":"bool","name":"_isLiqPair","type":"bool"}],"name":"setLiqPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxGas","type":"uint256"}],"name":"setMaxGasForCall","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxRefund","type":"uint256"}],"name":"setMaxRefund","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","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":"unstuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"newRFPC","type":"uint8"}],"name":"updateRefundmentPercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60a0604052600280546001600160d01b0319167901000000000043000000000000000000000000000000000000021790556003805460ff60a01b19169055620493e0600455662386f26fc10000600555600a805460ff191690553480156200006657600080fd5b5060405162002cad38038062002cad83398101604081905262000089916200044b565b6200009433620003d1565b600380546001600160a01b03191630908117909155600254604051631d70c8d360e31b815260048101929092526001600160a01b03169063eb86469890602401600060405180830381600087803b158015620000ef57600080fd5b505af115801562000104573d6000803e3d6000fd5b50505050600260009054906101000a90046001600160a01b03166001600160a01b0316634e606c476040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200015957600080fd5b505af11580156200016e573d6000803e3d6000fd5b5050505062000182620003cd60201b60201c565b600880546001600160a01b0319166001600160a01b0392909216919091179055620001b06009600a62000592565b620001bf9062989680620005a3565b6008546001600160a01b039081166000908152600660209081526040808320949094559184166080819052835163c45a015560e01b815293519193909263c45a0155926004808401938290030181865afa15801562000222573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200024891906200044b565b6001600160a01b031663c9c65396306080516001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000298573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002be91906200044b565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156200030c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200033291906200044b565b6001600160a01b038181166000908152600b60205260408120805460ff1916600117905560085460038054919093166001600160a01b03199091168117909255919250907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620003a56009600a62000592565b620003b49062989680620005a3565b60405190815260200160405180910390a35050620005c5565b3390565b600180546001600160a01b0319169055620003f881620003fb602090811b6200147e17901c565b50565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156200045e57600080fd5b81516001600160a01b03811681146200047657600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620004d4578160001904821115620004b857620004b86200047d565b80851615620004c657918102915b93841c939080029062000498565b509250929050565b600082620004ed575060016200058c565b81620004fc575060006200058c565b8160018114620005155760028114620005205762000540565b60019150506200058c565b60ff8411156200053457620005346200047d565b50506001821b6200058c565b5060208310610133831016604e8410600b841016171562000565575081810a6200058c565b62000571838362000493565b80600019048211156200058857620005886200047d565b0290505b92915050565b60006200047660ff841683620004dc565b6000816000190483118215151615620005c057620005c06200047d565b500290565b6080516126be620005ef600039600081816120520152818161210b015261216001526126be6000f3fe6080604052600436106102bb5760003560e01c80638ae2702f1161016c578063cb05afbd116100ca578063e30c397811610084578063f2fde38b11610061578063f2fde38b14610816578063fa7eec7c14610836578063fcdebcce1461084b57005b8063e30c3978146107c2578063e3ec905d146107e0578063f0407d81146107f657005b8063d077c79f116100b2578063d077c79f1461073a578063dd62ed3e1461075b578063e0f2a4ce146107a157005b8063cb05afbd14610705578063cc08c0931461071a57005b8063a457c2d711610126578063ac7c19ed11610103578063ac7c19ed146106af578063b2c1f987146106cf578063c3ea6b2c146106f057005b8063a457c2d71461064f578063a61421121461066f578063a9059cbb1461068f57005b806395d89b411161015457806395d89b411461059f57806399332c5e146105e5578063a4473c7d1461062f57005b80638ae2702f146105585780638da5cb5b1461056d57005b8063395093511161021957806354ad8aee116101d3578063715018a6116101b0578063715018a61461051957806379ba50971461052e57806382bcedb51461054357005b806354ad8aee146102c457806366577a35146104ce57806370a08231146104e357005b80634e71d92d116102015780634e71d92d1461048e5780634f054317146104a35780635490822a146104b857005b8063395093511461044e57806342966c681461046e57005b80632053f3001161027557806328df9ada1161025257806328df9ada146103f6578063313ce5671461040b57806337c349dc1461042d57005b80632053f300146103a05780632353464c146103c057806323b872dd146103d657005b8063095ea7b3116102a3578063095ea7b31461033b5780630fb6d6241461036b57806318160ddd1461038b57005b806302af37bb146102c457806306fdde03146102ec57005b366102c257005b005b3480156102d057600080fd5b506102d9600181565b6040519081526020015b60405180910390f35b3480156102f857600080fd5b5060408051808201909152600a81527f4879706572426c6173740000000000000000000000000000000000000000000060208201525b6040516102e3919061224c565b34801561034757600080fd5b5061035b610356366004612294565b61086b565b60405190151581526020016102e3565b34801561037757600080fd5b506102c26103863660046122c0565b610882565b34801561039757600080fd5b506102d96109a2565b3480156103ac57600080fd5b506102c26103bb36600461230e565b6109c2565b3480156103cc57600080fd5b506102d960055481565b3480156103e257600080fd5b5061035b6103f1366004612329565b610a76565b34801561040257600080fd5b506102d9610b5f565b34801561041757600080fd5b5060095b60405160ff90911681526020016102e3565b34801561043957600080fd5b5060025461035b90600160c81b900460ff1681565b34801561045a57600080fd5b5061035b610469366004612294565b610b88565b34801561047a57600080fd5b5061035b61048936600461236a565b610bbf565b34801561049a57600080fd5b506102d9610bd6565b3480156104af57600080fd5b506102d9610c59565b3480156104c457600080fd5b506102d960045481565b3480156104da57600080fd5b506102c2610c67565b3480156104ef57600080fd5b506102d96104fe366004612383565b6001600160a01b031660009081526006602052604090205490565b34801561052557600080fd5b506102c2610d67565b34801561053a57600080fd5b506102c2610d7b565b34801561054f57600080fd5b506102c2610e36565b34801561056457600080fd5b506102d9610ee5565b34801561057957600080fd5b506000546001600160a01b03165b6040516001600160a01b0390911681526020016102e3565b3480156105ab57600080fd5b5060408051808201909152600481527f4859504500000000000000000000000000000000000000000000000000000000602082015261032e565b3480156105f157600080fd5b5060025461061b90760100000000000000000000000000000000000000000000900462ffffff1681565b60405162ffffff90911681526020016102e3565b34801561063b57600080fd5b506102c261064a3660046123a0565b610ef3565b34801561065b57600080fd5b5061035b61066a366004612294565b6110d8565b34801561067b57600080fd5b506102c261068a366004612383565b611181565b34801561069b57600080fd5b5061035b6106aa366004612294565b611219565b3480156106bb57600080fd5b506102c26106ca36600461236a565b611226565b3480156106db57600080fd5b5060025461041b90600160a01b900460ff1681565b3480156106fc57600080fd5b506102d96112f9565b34801561071157600080fd5b506102d9601981565b34801561072657600080fd5b506102c261073536600461236a565b611308565b34801561074657600080fd5b5060035461035b90600160a01b900460ff1681565b34801561076757600080fd5b506102d96107763660046122c0565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205490565b3480156107ad57600080fd5b5060025461041b90600160a81b900460ff1681565b3480156107ce57600080fd5b506001546001600160a01b0316610587565b3480156107ec57600080fd5b506102d960095481565b34801561080257600080fd5b506102c26108113660046123c3565b611383565b34801561082257600080fd5b506102c2610831366004612383565b61140d565b34801561084257600080fd5b506102d9606481565b34801561085757600080fd5b50600354610587906001600160a01b031681565b60006108783384846114ce565b5060015b92915050565b61088a611626565b6000826001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ee91906123f8565b6040517fc9c653960000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b038481166024830152919091169063c9c65396906044016020604051808303816000875af1158015610957573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061097b91906123f8565b6001600160a01b03166000908152600b60205260409020805460ff19166001179055505050565b60006109b06009600a61250f565b6109bd906298968061251e565b905090565b6003546001600160a01b03163314610a3d5760405162461bcd60e51b815260206004820152603360248201527f4f6e6c7920626c61737420636f6e7472616374206f776e65722063616e206d616044820152726e61676520626c61737420666561747572657360681b60648201526084015b60405180910390fd5b60028054911515600160c81b027fffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff909216919091179055565b6001600160a01b0383166000908152600760209081526040808320338452909152812054821115610b0f5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206160448201527f6c6c6f77616e63650000000000000000000000000000000000000000000000006064820152608401610a34565b610b1a848484611680565b6001600160a01b038416600090815260076020908152604080832033808552925290912054610b55918691610b5090869061253d565b6114ce565b5060019392505050565b6107d0610b6e6009600a61250f565b610b7b906298968061251e565b610b859190612554565b81565b3360008181526007602090815260408083206001600160a01b03871684529091528120549091610878918590610b50908690612576565b6000610bce3361dead84611680565b506001919050565b6003546000906001600160a01b03163314610c4f5760405162461bcd60e51b815260206004820152603360248201527f4f6e6c7920626c61737420636f6e7472616374206f776e65722063616e206d616044820152726e61676520626c61737420666561747572657360681b6064820152608401610a34565b6109bd6000611ca5565b6032610b6e6009600a61250f565b6003546001600160a01b03163314610cdd5760405162461bcd60e51b815260206004820152603360248201527f4f6e6c7920626c61737420636f6e7472616374206f776e65722063616e206d616044820152726e61676520626c61737420666561747572657360681b6064820152608401610a34565b600354600160a01b900460ff1615610d375760405162461bcd60e51b815260206004820152601160248201527f416c72656164792072656e6f756e6365640000000000000000000000000000006044820152606401610a34565b600380547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16600160a01b179055565b610d6f611626565b610d796000611fbd565b565b60015433906001600160a01b03168114610dfd5760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f74207468652060448201527f6e6577206f776e657200000000000000000000000000000000000000000000006064820152608401610a34565b610e0681611fbd565b600880546001600160a01b03929092166001600160a01b0319928316811790915560038054909216179055565b50565b6003546001600160a01b03163314610eac5760405162461bcd60e51b815260206004820152603360248201527f4f6e6c7920626c61737420636f6e7472616374206f776e65722063616e206d616044820152726e61676520626c61737420666561747572657360681b6064820152608401610a34565b6003546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015610e33573d6000803e3d6000fd5b6064610b6e6009600a61250f565b6003546001600160a01b03163314610f695760405162461bcd60e51b815260206004820152603360248201527f4f6e6c7920626c61737420636f6e7472616374206f776e65722063616e206d616044820152726e61676520626c61737420666561747572657360681b6064820152608401610a34565b600354600160a01b900460ff1615610fc35760405162461bcd60e51b815260206004820152601360248201527f55504441544553204e4f5420414c4c4f574544000000000000000000000000006044820152606401610a34565b60025460ff600160a01b909104811690821610156110495760405162461bcd60e51b815260206004820152603460248201527f4d696e2e2067617320666f7220726566756e646d656e742068617320746f206260448201527f65206269676765722074616e206d696e696d616c0000000000000000000000006064820152608401610a34565b60648160ff16111561109d5760405162461bcd60e51b815260206004820152601f60248201527f4d61782e2067617320666f7220726566756e646d656e742069732031303025006044820152606401610a34565b6002805460ff909216600160a81b027fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff909216919091179055565b3360009081526007602090815260408083206001600160a01b0386168452909152812054828110156111725760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610a34565b610b553385610b50868561253d565b6003546001600160a01b031633146111f75760405162461bcd60e51b815260206004820152603360248201527f4f6e6c7920626c61737420636f6e7472616374206f776e65722063616e206d616044820152726e61676520626c61737420666561747572657360681b6064820152608401610a34565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b6000610878338484611680565b6003546001600160a01b0316331461129c5760405162461bcd60e51b815260206004820152603360248201527f4f6e6c7920626c61737420636f6e7472616374206f776e65722063616e206d616044820152726e61676520626c61737420666561747572657360681b6064820152608401610a34565b6706f05b59d3b200008111156112f45760405162461bcd60e51b815260206004820152601260248201527f496e76616c6964206d617820726566756e6400000000000000000000000000006044820152606401610a34565b600555565b6103e8610b6e6009600a61250f565b6003546001600160a01b0316331461137e5760405162461bcd60e51b815260206004820152603360248201527f4f6e6c7920626c61737420636f6e7472616374206f776e65722063616e206d616044820152726e61676520626c61737420666561747572657360681b6064820152608401610a34565b600455565b61138b611626565b6001600160a01b0382163b6113e25760405162461bcd60e51b815260206004820152601760248201527f4f6e6c79206c69717569646974792070616972732e2e2e0000000000000000006044820152606401610a34565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b611415611626565b600180546001600160a01b0383166001600160a01b031990911681179091556114466000546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0383166115495760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610a34565b6001600160a01b0382166115c55760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610a34565b6001600160a01b0383811660008181526007602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000546001600160a01b03163314610d795760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a34565b6001600160a01b0383166116fc5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610a34565b6001600160a01b0382166117785760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610a34565b600081116117ee5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f00000000000000000000000000000000000000000000006064820152608401610a34565b6001600160a01b03831660009081526006602052604090205481141561181c5761181960018261253d565b90505b6001600160a01b038216301480159061184e57506001600160a01b0382166000908152600b602052604090205460ff16155b801561185c57506064600954105b801561187657506008546001600160a01b03838116911614155b801561189057506008546001600160a01b03848116911614155b156119c7576001600160a01b03821660009081526006602052604090205460326118bc6009600a61250f565b6118c9906298968061251e565b6118d39190612554565b6118dd8383612576565b11156119515760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e00006064820152608401610a34565b606461195f6009600a61250f565b61196c906298968061251e565b6119769190612554565b8211156119c55760405162461bcd60e51b815260206004820152601160248201527f5458204c696d69742045786365656465640000000000000000000000000000006044820152606401610a34565b505b60085460009081906001600160a01b038581169116148015906119f857506008546001600160a01b03868116911614155b15611a97576001600160a01b0385166000908152600b602052604090205460ff168015611a2e57506001600160a01b0384163014155b15611a4a57606460095410611a44576001611a47565b60195b90505b6001600160a01b0384166000908152600b602052604090205460ff168015611a7b57506001600160a01b0385163014155b15611a9757606460095410611a91576001611a94565b60195b90505b6064611aa3828561251e565b611aad9190612554565b30600090815260066020526040902054600a549193509060ff16158015611aec57506001600160a01b0385166000908152600b602052604090205460ff165b8015611b1c57506107d0611b026009600a61250f565b611b0f906298968061251e565b611b199190612554565b81115b15611b6e57611b5c611b5785611b52846103e8611b3b6009600a61250f565b611b48906298968061251e565b611b529190612554565b611fd6565b611fee565b478015611b6c57611b6c476121de565b505b8215611bee5760098054906000611b848361258e565b90915550503060009081526006602052604081208054859290611ba8908490612576565b909155505060405183815230906001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b6001600160a01b03861660009081526006602052604081208054869290611c1690849061253d565b90915550611c269050838561253d565b6001600160a01b03861660009081526006602052604081208054909190611c4e908490612576565b90915550506001600160a01b038086169087167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611c8c868861253d565b60405190815260200160405180910390a3505050505050565b6000478215611de957600254600090600160c81b900460ff16611ce8577f954fa5ee27c88a83eb6bac45faf9bf17dcbde40e107ff03508bd32ccc1f6243f611d0a565b7f662aa11dd0fb432d1e6c8fbc219a0b95da9ba58f40d5be8cf7968ed00b4f7ab65b6040513060248201819052604482015260640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009094169390931790925260025460045492519193506001600160a01b03169190611d9d9084906125a9565b60006040518083038160008787f1925050503d8060008114611ddb576040519150601f19603f3d011682016040523d82523d6000602084013e611de0565b606091505b50505050611f1f565b600254600160c81b900460ff1615611e8f576002546040517f662aa11d000000000000000000000000000000000000000000000000000000008152306004820181905260248201526001600160a01b039091169063662aa11d906044016020604051808303816000875af1158015611e65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e8991906125c5565b50611f1f565b6002546040517f954fa5ee000000000000000000000000000000000000000000000000000000008152306004820181905260248201526001600160a01b039091169063954fa5ee906044016020604051808303816000875af1158015611ef9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f1d91906125c5565b505b60025447906064600160a81b90910460ff16108015611f3d57508181115b15611fb357600254600090606490611f5f90600160a81b900460ff16826125de565b60ff16611f6c858561253d565b611f76919061251e565b611f809190612554565b6003546040519192506001600160a01b03169082156108fc029083906000818181858888f1509398975050505050505050565b5060009392505050565b600180546001600160a01b0319169055610e338161147e565b6000818311611fe55782611fe7565b815b9392505050565b600a805460ff19166001179055604080516002808252606082018352600092602083019080368337019050509050308160008151811061203057612030612601565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120d291906123f8565b816001815181106120e5576120e5612601565b60200260200101906001600160a01b031690816001600160a01b031681525050612130307f0000000000000000000000000000000000000000000000000000000000000000846114ce565b6040517f791ac9470000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac9479061219e908590600090869030904290600401612617565b600060405180830381600087803b1580156121b857600080fd5b505af11580156121cc573d6000803e3d6000fd5b5050600a805460ff1916905550505050565b6008546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015612218573d6000803e3d6000fd5b5050565b60005b8381101561223757818101518382015260200161221f565b83811115612246576000848401525b50505050565b602081526000825180602084015261226b81604085016020870161221c565b601f01601f19169190910160400192915050565b6001600160a01b0381168114610e3357600080fd5b600080604083850312156122a757600080fd5b82356122b28161227f565b946020939093013593505050565b600080604083850312156122d357600080fd5b82356122de8161227f565b915060208301356122ee8161227f565b809150509250929050565b8035801515811461230957600080fd5b919050565b60006020828403121561232057600080fd5b611fe7826122f9565b60008060006060848603121561233e57600080fd5b83356123498161227f565b925060208401356123598161227f565b929592945050506040919091013590565b60006020828403121561237c57600080fd5b5035919050565b60006020828403121561239557600080fd5b8135611fe78161227f565b6000602082840312156123b257600080fd5b813560ff81168114611fe757600080fd5b600080604083850312156123d657600080fd5b82356123e18161227f565b91506123ef602084016122f9565b90509250929050565b60006020828403121561240a57600080fd5b8151611fe78161227f565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561246657816000190482111561244c5761244c612415565b8085161561245957918102915b93841c9390800290612430565b509250929050565b60008261247d5750600161087c565b8161248a5750600061087c565b81600181146124a057600281146124aa576124c6565b600191505061087c565b60ff8411156124bb576124bb612415565b50506001821b61087c565b5060208310610133831016604e8410600b84101617156124e9575081810a61087c565b6124f3838361242b565b806000190482111561250757612507612415565b029392505050565b6000611fe760ff84168361246e565b600081600019048311821515161561253857612538612415565b500290565b60008282101561254f5761254f612415565b500390565b60008261257157634e487b7160e01b600052601260045260246000fd5b500490565b6000821982111561258957612589612415565b500190565b60006000198214156125a2576125a2612415565b5060010190565b600082516125bb81846020870161221c565b9190910192915050565b6000602082840312156125d757600080fd5b5051919050565b600060ff821660ff8416808210156125f8576125f8612415565b90039392505050565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156126675784516001600160a01b031683529383019391830191600101612642565b50506001600160a01b0396909616606085015250505060800152939250505056fea264697066735822122065afb46746485b9b3ef1d120af4d1b211338ec42ca6f5b7070fdff2c75870def64736f6c634300080c0033000000000000000000000000ae32a2f7ff8f3eb9858602f0663391511e4cb9c0
Deployed Bytecode
0x6080604052600436106102bb5760003560e01c80638ae2702f1161016c578063cb05afbd116100ca578063e30c397811610084578063f2fde38b11610061578063f2fde38b14610816578063fa7eec7c14610836578063fcdebcce1461084b57005b8063e30c3978146107c2578063e3ec905d146107e0578063f0407d81146107f657005b8063d077c79f116100b2578063d077c79f1461073a578063dd62ed3e1461075b578063e0f2a4ce146107a157005b8063cb05afbd14610705578063cc08c0931461071a57005b8063a457c2d711610126578063ac7c19ed11610103578063ac7c19ed146106af578063b2c1f987146106cf578063c3ea6b2c146106f057005b8063a457c2d71461064f578063a61421121461066f578063a9059cbb1461068f57005b806395d89b411161015457806395d89b411461059f57806399332c5e146105e5578063a4473c7d1461062f57005b80638ae2702f146105585780638da5cb5b1461056d57005b8063395093511161021957806354ad8aee116101d3578063715018a6116101b0578063715018a61461051957806379ba50971461052e57806382bcedb51461054357005b806354ad8aee146102c457806366577a35146104ce57806370a08231146104e357005b80634e71d92d116102015780634e71d92d1461048e5780634f054317146104a35780635490822a146104b857005b8063395093511461044e57806342966c681461046e57005b80632053f3001161027557806328df9ada1161025257806328df9ada146103f6578063313ce5671461040b57806337c349dc1461042d57005b80632053f300146103a05780632353464c146103c057806323b872dd146103d657005b8063095ea7b3116102a3578063095ea7b31461033b5780630fb6d6241461036b57806318160ddd1461038b57005b806302af37bb146102c457806306fdde03146102ec57005b366102c257005b005b3480156102d057600080fd5b506102d9600181565b6040519081526020015b60405180910390f35b3480156102f857600080fd5b5060408051808201909152600a81527f4879706572426c6173740000000000000000000000000000000000000000000060208201525b6040516102e3919061224c565b34801561034757600080fd5b5061035b610356366004612294565b61086b565b60405190151581526020016102e3565b34801561037757600080fd5b506102c26103863660046122c0565b610882565b34801561039757600080fd5b506102d96109a2565b3480156103ac57600080fd5b506102c26103bb36600461230e565b6109c2565b3480156103cc57600080fd5b506102d960055481565b3480156103e257600080fd5b5061035b6103f1366004612329565b610a76565b34801561040257600080fd5b506102d9610b5f565b34801561041757600080fd5b5060095b60405160ff90911681526020016102e3565b34801561043957600080fd5b5060025461035b90600160c81b900460ff1681565b34801561045a57600080fd5b5061035b610469366004612294565b610b88565b34801561047a57600080fd5b5061035b61048936600461236a565b610bbf565b34801561049a57600080fd5b506102d9610bd6565b3480156104af57600080fd5b506102d9610c59565b3480156104c457600080fd5b506102d960045481565b3480156104da57600080fd5b506102c2610c67565b3480156104ef57600080fd5b506102d96104fe366004612383565b6001600160a01b031660009081526006602052604090205490565b34801561052557600080fd5b506102c2610d67565b34801561053a57600080fd5b506102c2610d7b565b34801561054f57600080fd5b506102c2610e36565b34801561056457600080fd5b506102d9610ee5565b34801561057957600080fd5b506000546001600160a01b03165b6040516001600160a01b0390911681526020016102e3565b3480156105ab57600080fd5b5060408051808201909152600481527f4859504500000000000000000000000000000000000000000000000000000000602082015261032e565b3480156105f157600080fd5b5060025461061b90760100000000000000000000000000000000000000000000900462ffffff1681565b60405162ffffff90911681526020016102e3565b34801561063b57600080fd5b506102c261064a3660046123a0565b610ef3565b34801561065b57600080fd5b5061035b61066a366004612294565b6110d8565b34801561067b57600080fd5b506102c261068a366004612383565b611181565b34801561069b57600080fd5b5061035b6106aa366004612294565b611219565b3480156106bb57600080fd5b506102c26106ca36600461236a565b611226565b3480156106db57600080fd5b5060025461041b90600160a01b900460ff1681565b3480156106fc57600080fd5b506102d96112f9565b34801561071157600080fd5b506102d9601981565b34801561072657600080fd5b506102c261073536600461236a565b611308565b34801561074657600080fd5b5060035461035b90600160a01b900460ff1681565b34801561076757600080fd5b506102d96107763660046122c0565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205490565b3480156107ad57600080fd5b5060025461041b90600160a81b900460ff1681565b3480156107ce57600080fd5b506001546001600160a01b0316610587565b3480156107ec57600080fd5b506102d960095481565b34801561080257600080fd5b506102c26108113660046123c3565b611383565b34801561082257600080fd5b506102c2610831366004612383565b61140d565b34801561084257600080fd5b506102d9606481565b34801561085757600080fd5b50600354610587906001600160a01b031681565b60006108783384846114ce565b5060015b92915050565b61088a611626565b6000826001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ee91906123f8565b6040517fc9c653960000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b038481166024830152919091169063c9c65396906044016020604051808303816000875af1158015610957573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061097b91906123f8565b6001600160a01b03166000908152600b60205260409020805460ff19166001179055505050565b60006109b06009600a61250f565b6109bd906298968061251e565b905090565b6003546001600160a01b03163314610a3d5760405162461bcd60e51b815260206004820152603360248201527f4f6e6c7920626c61737420636f6e7472616374206f776e65722063616e206d616044820152726e61676520626c61737420666561747572657360681b60648201526084015b60405180910390fd5b60028054911515600160c81b027fffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff909216919091179055565b6001600160a01b0383166000908152600760209081526040808320338452909152812054821115610b0f5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206160448201527f6c6c6f77616e63650000000000000000000000000000000000000000000000006064820152608401610a34565b610b1a848484611680565b6001600160a01b038416600090815260076020908152604080832033808552925290912054610b55918691610b5090869061253d565b6114ce565b5060019392505050565b6107d0610b6e6009600a61250f565b610b7b906298968061251e565b610b859190612554565b81565b3360008181526007602090815260408083206001600160a01b03871684529091528120549091610878918590610b50908690612576565b6000610bce3361dead84611680565b506001919050565b6003546000906001600160a01b03163314610c4f5760405162461bcd60e51b815260206004820152603360248201527f4f6e6c7920626c61737420636f6e7472616374206f776e65722063616e206d616044820152726e61676520626c61737420666561747572657360681b6064820152608401610a34565b6109bd6000611ca5565b6032610b6e6009600a61250f565b6003546001600160a01b03163314610cdd5760405162461bcd60e51b815260206004820152603360248201527f4f6e6c7920626c61737420636f6e7472616374206f776e65722063616e206d616044820152726e61676520626c61737420666561747572657360681b6064820152608401610a34565b600354600160a01b900460ff1615610d375760405162461bcd60e51b815260206004820152601160248201527f416c72656164792072656e6f756e6365640000000000000000000000000000006044820152606401610a34565b600380547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16600160a01b179055565b610d6f611626565b610d796000611fbd565b565b60015433906001600160a01b03168114610dfd5760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f74207468652060448201527f6e6577206f776e657200000000000000000000000000000000000000000000006064820152608401610a34565b610e0681611fbd565b600880546001600160a01b03929092166001600160a01b0319928316811790915560038054909216179055565b50565b6003546001600160a01b03163314610eac5760405162461bcd60e51b815260206004820152603360248201527f4f6e6c7920626c61737420636f6e7472616374206f776e65722063616e206d616044820152726e61676520626c61737420666561747572657360681b6064820152608401610a34565b6003546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015610e33573d6000803e3d6000fd5b6064610b6e6009600a61250f565b6003546001600160a01b03163314610f695760405162461bcd60e51b815260206004820152603360248201527f4f6e6c7920626c61737420636f6e7472616374206f776e65722063616e206d616044820152726e61676520626c61737420666561747572657360681b6064820152608401610a34565b600354600160a01b900460ff1615610fc35760405162461bcd60e51b815260206004820152601360248201527f55504441544553204e4f5420414c4c4f574544000000000000000000000000006044820152606401610a34565b60025460ff600160a01b909104811690821610156110495760405162461bcd60e51b815260206004820152603460248201527f4d696e2e2067617320666f7220726566756e646d656e742068617320746f206260448201527f65206269676765722074616e206d696e696d616c0000000000000000000000006064820152608401610a34565b60648160ff16111561109d5760405162461bcd60e51b815260206004820152601f60248201527f4d61782e2067617320666f7220726566756e646d656e742069732031303025006044820152606401610a34565b6002805460ff909216600160a81b027fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff909216919091179055565b3360009081526007602090815260408083206001600160a01b0386168452909152812054828110156111725760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610a34565b610b553385610b50868561253d565b6003546001600160a01b031633146111f75760405162461bcd60e51b815260206004820152603360248201527f4f6e6c7920626c61737420636f6e7472616374206f776e65722063616e206d616044820152726e61676520626c61737420666561747572657360681b6064820152608401610a34565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b6000610878338484611680565b6003546001600160a01b0316331461129c5760405162461bcd60e51b815260206004820152603360248201527f4f6e6c7920626c61737420636f6e7472616374206f776e65722063616e206d616044820152726e61676520626c61737420666561747572657360681b6064820152608401610a34565b6706f05b59d3b200008111156112f45760405162461bcd60e51b815260206004820152601260248201527f496e76616c6964206d617820726566756e6400000000000000000000000000006044820152606401610a34565b600555565b6103e8610b6e6009600a61250f565b6003546001600160a01b0316331461137e5760405162461bcd60e51b815260206004820152603360248201527f4f6e6c7920626c61737420636f6e7472616374206f776e65722063616e206d616044820152726e61676520626c61737420666561747572657360681b6064820152608401610a34565b600455565b61138b611626565b6001600160a01b0382163b6113e25760405162461bcd60e51b815260206004820152601760248201527f4f6e6c79206c69717569646974792070616972732e2e2e0000000000000000006044820152606401610a34565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b611415611626565b600180546001600160a01b0383166001600160a01b031990911681179091556114466000546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0383166115495760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610a34565b6001600160a01b0382166115c55760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610a34565b6001600160a01b0383811660008181526007602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000546001600160a01b03163314610d795760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a34565b6001600160a01b0383166116fc5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610a34565b6001600160a01b0382166117785760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610a34565b600081116117ee5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f00000000000000000000000000000000000000000000006064820152608401610a34565b6001600160a01b03831660009081526006602052604090205481141561181c5761181960018261253d565b90505b6001600160a01b038216301480159061184e57506001600160a01b0382166000908152600b602052604090205460ff16155b801561185c57506064600954105b801561187657506008546001600160a01b03838116911614155b801561189057506008546001600160a01b03848116911614155b156119c7576001600160a01b03821660009081526006602052604090205460326118bc6009600a61250f565b6118c9906298968061251e565b6118d39190612554565b6118dd8383612576565b11156119515760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e00006064820152608401610a34565b606461195f6009600a61250f565b61196c906298968061251e565b6119769190612554565b8211156119c55760405162461bcd60e51b815260206004820152601160248201527f5458204c696d69742045786365656465640000000000000000000000000000006044820152606401610a34565b505b60085460009081906001600160a01b038581169116148015906119f857506008546001600160a01b03868116911614155b15611a97576001600160a01b0385166000908152600b602052604090205460ff168015611a2e57506001600160a01b0384163014155b15611a4a57606460095410611a44576001611a47565b60195b90505b6001600160a01b0384166000908152600b602052604090205460ff168015611a7b57506001600160a01b0385163014155b15611a9757606460095410611a91576001611a94565b60195b90505b6064611aa3828561251e565b611aad9190612554565b30600090815260066020526040902054600a549193509060ff16158015611aec57506001600160a01b0385166000908152600b602052604090205460ff165b8015611b1c57506107d0611b026009600a61250f565b611b0f906298968061251e565b611b199190612554565b81115b15611b6e57611b5c611b5785611b52846103e8611b3b6009600a61250f565b611b48906298968061251e565b611b529190612554565b611fd6565b611fee565b478015611b6c57611b6c476121de565b505b8215611bee5760098054906000611b848361258e565b90915550503060009081526006602052604081208054859290611ba8908490612576565b909155505060405183815230906001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b6001600160a01b03861660009081526006602052604081208054869290611c1690849061253d565b90915550611c269050838561253d565b6001600160a01b03861660009081526006602052604081208054909190611c4e908490612576565b90915550506001600160a01b038086169087167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611c8c868861253d565b60405190815260200160405180910390a3505050505050565b6000478215611de957600254600090600160c81b900460ff16611ce8577f954fa5ee27c88a83eb6bac45faf9bf17dcbde40e107ff03508bd32ccc1f6243f611d0a565b7f662aa11dd0fb432d1e6c8fbc219a0b95da9ba58f40d5be8cf7968ed00b4f7ab65b6040513060248201819052604482015260640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009094169390931790925260025460045492519193506001600160a01b03169190611d9d9084906125a9565b60006040518083038160008787f1925050503d8060008114611ddb576040519150601f19603f3d011682016040523d82523d6000602084013e611de0565b606091505b50505050611f1f565b600254600160c81b900460ff1615611e8f576002546040517f662aa11d000000000000000000000000000000000000000000000000000000008152306004820181905260248201526001600160a01b039091169063662aa11d906044016020604051808303816000875af1158015611e65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e8991906125c5565b50611f1f565b6002546040517f954fa5ee000000000000000000000000000000000000000000000000000000008152306004820181905260248201526001600160a01b039091169063954fa5ee906044016020604051808303816000875af1158015611ef9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f1d91906125c5565b505b60025447906064600160a81b90910460ff16108015611f3d57508181115b15611fb357600254600090606490611f5f90600160a81b900460ff16826125de565b60ff16611f6c858561253d565b611f76919061251e565b611f809190612554565b6003546040519192506001600160a01b03169082156108fc029083906000818181858888f1509398975050505050505050565b5060009392505050565b600180546001600160a01b0319169055610e338161147e565b6000818311611fe55782611fe7565b815b9392505050565b600a805460ff19166001179055604080516002808252606082018352600092602083019080368337019050509050308160008151811061203057612030612601565b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000ae32a2f7ff8f3eb9858602f0663391511e4cb9c06001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120d291906123f8565b816001815181106120e5576120e5612601565b60200260200101906001600160a01b031690816001600160a01b031681525050612130307f000000000000000000000000ae32a2f7ff8f3eb9858602f0663391511e4cb9c0846114ce565b6040517f791ac9470000000000000000000000000000000000000000000000000000000081526001600160a01b037f000000000000000000000000ae32a2f7ff8f3eb9858602f0663391511e4cb9c0169063791ac9479061219e908590600090869030904290600401612617565b600060405180830381600087803b1580156121b857600080fd5b505af11580156121cc573d6000803e3d6000fd5b5050600a805460ff1916905550505050565b6008546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015612218573d6000803e3d6000fd5b5050565b60005b8381101561223757818101518382015260200161221f565b83811115612246576000848401525b50505050565b602081526000825180602084015261226b81604085016020870161221c565b601f01601f19169190910160400192915050565b6001600160a01b0381168114610e3357600080fd5b600080604083850312156122a757600080fd5b82356122b28161227f565b946020939093013593505050565b600080604083850312156122d357600080fd5b82356122de8161227f565b915060208301356122ee8161227f565b809150509250929050565b8035801515811461230957600080fd5b919050565b60006020828403121561232057600080fd5b611fe7826122f9565b60008060006060848603121561233e57600080fd5b83356123498161227f565b925060208401356123598161227f565b929592945050506040919091013590565b60006020828403121561237c57600080fd5b5035919050565b60006020828403121561239557600080fd5b8135611fe78161227f565b6000602082840312156123b257600080fd5b813560ff81168114611fe757600080fd5b600080604083850312156123d657600080fd5b82356123e18161227f565b91506123ef602084016122f9565b90509250929050565b60006020828403121561240a57600080fd5b8151611fe78161227f565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561246657816000190482111561244c5761244c612415565b8085161561245957918102915b93841c9390800290612430565b509250929050565b60008261247d5750600161087c565b8161248a5750600061087c565b81600181146124a057600281146124aa576124c6565b600191505061087c565b60ff8411156124bb576124bb612415565b50506001821b61087c565b5060208310610133831016604e8410600b84101617156124e9575081810a61087c565b6124f3838361242b565b806000190482111561250757612507612415565b029392505050565b6000611fe760ff84168361246e565b600081600019048311821515161561253857612538612415565b500290565b60008282101561254f5761254f612415565b500390565b60008261257157634e487b7160e01b600052601260045260246000fd5b500490565b6000821982111561258957612589612415565b500190565b60006000198214156125a2576125a2612415565b5060010190565b600082516125bb81846020870161221c565b9190910192915050565b6000602082840312156125d757600080fd5b5051919050565b600060ff821660ff8416808210156125f8576125f8612415565b90039392505050565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156126675784516001600160a01b031683529383019391830191600101612642565b50506001600160a01b0396909616606085015250505060800152939250505056fea264697066735822122065afb46746485b9b3ef1d120af4d1b211338ec42ca6f5b7070fdff2c75870def64736f6c634300080c0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000ae32a2f7ff8f3eb9858602f0663391511e4cb9c0
-----Decoded View---------------
Arg [0] : _router (address): 0xaE32a2f7fF8f3eB9858602F0663391511e4cb9C0
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000ae32a2f7ff8f3eb9858602f0663391511e4cb9c0
Deployed Bytecode Sourcemap
30411:12410:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30851:35;;;;;;;;;;;;30885:1;30851:35;;;;;160:25:1;;;148:2;133:18;30851:35:0;;;;;;;;32313:83;;;;;;;;;;-1:-1:-1;32383:5:0;;;;;;;;;;;;;;;;;32313:83;;;;;;;:::i;34753:161::-;;;;;;;;;;-1:-1:-1;34753:161:0;;;;;:::i;:::-;;:::i;:::-;;;1491:14:1;;1484:22;1466:41;;1454:2;1439:18;34753:161:0;1326:187:1;42425:242:0;;;;;;;;;;-1:-1:-1;42425:242:0;;;;;:::i;:::-;;:::i;33389:95::-;;;;;;;;;;;;;:::i;5238:98::-;;;;;;;;;;-1:-1:-1;5238:98:0;;;;;:::i;:::-;;:::i;2254:37::-;;;;;;;;;;;;;;;;35396:373;;;;;;;;;;-1:-1:-1;35396:373:0;;;;;:::i;:::-;;:::i;31283:59::-;;;;;;;;;;;;;:::i;33241:83::-;;;;;;;;;;-1:-1:-1;31071:1:0;33241:83;;;2894:4:1;2882:17;;;2864:36;;2852:2;2837:18;33241:83:0;2722:184:1;1739:27:0;;;;;;;;;;-1:-1:-1;1739:27:0;;;;-1:-1:-1;;;1739:27:0;;;;;;36178:207;;;;;;;;;;-1:-1:-1;36178:207:0;;;;;:::i;:::-;;:::i;34259:141::-;;;;;;;;;;-1:-1:-1;34259:141:0;;;;;:::i;:::-;;:::i;6039:99::-;;;;;;;;;;;;;:::i;31217:54::-;;;;;;;;;;;;;:::i;2128:37::-;;;;;;;;;;;;;;;;5723:181;;;;;;;;;;;;;:::i;33547:119::-;;;;;;;;;;-1:-1:-1;33547:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;33640:18:0;33613:7;33640:18;;;:9;:18;;;;;;;33547:119;27404:103;;;;;;;;;;;;;:::i;41525:296::-;;;;;;;;;;;;;:::i;4817:116::-;;;;;;;;;;;;;:::i;31152:53::-;;;;;;;;;;;;;:::i;26763:87::-;;;;;;;;;;-1:-1:-1;26809:7:0;26836:6;-1:-1:-1;;;;;26836:6:0;26763:87;;;-1:-1:-1;;;;;3512:55:1;;;3494:74;;3482:2;3467:18;26763:87:0;3348:226:1;32515:87:0;;;;;;;;;;-1:-1:-1;32587:7:0;;;;;;;;;;;;;;;;;32515:87;;1634:28;;;;;;;;;;-1:-1:-1;1634:28:0;;;;;;;;;;;;;;3753:8:1;3741:21;;;3723:40;;3711:2;3696:18;1634:28:0;3579:190:1;5344:371:0;;;;;;;;;;-1:-1:-1;5344:371:0;;;;;:::i;:::-;;:::i;36888:369::-;;;;;;;;;;-1:-1:-1;36888:369:0;;;;;:::i;:::-;;:::i;4700:109::-;;;;;;;;;;-1:-1:-1;4700:109:0;;;;;:::i;:::-;;:::i;33879:167::-;;;;;;;;;;-1:-1:-1;33879:167:0;;;;;:::i;:::-;;:::i;5058:172::-;;;;;;;;;;-1:-1:-1;5058:172:0;;;;;:::i;:::-;;:::i;1401:40::-;;;;;;;;;;-1:-1:-1;1401:40:0;;;;-1:-1:-1;;;1401:40:0;;;;;;31357:53;;;;;;;;;;;;;:::i;30721:37::-;;;;;;;;;;;;30756:2;30721:37;;4941:109;;;;;;;;;;-1:-1:-1;4941:109:0;;;;;:::i;:::-;;:::i;2002:44::-;;;;;;;;;;-1:-1:-1;2002:44:0;;;;-1:-1:-1;;;2002:44:0;;;;;;34463:143;;;;;;;;;;-1:-1:-1;34463:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;34571:18:0;;;34544:7;34571:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;34463:143;1524:37;;;;;;;;;;-1:-1:-1;1524:37:0;;;;-1:-1:-1;;;1524:37:0;;;;;;29098:101;;;;;;;;;;-1:-1:-1;29178:13:0;;-1:-1:-1;;;;;29178:13:0;29098:101;;30815:27;;;;;;;;;;;;;;;;41998:188;;;;;;;;;;-1:-1:-1;41998:188:0;;;;;:::i;:::-;;:::i;29398:181::-;;;;;;;;;;-1:-1:-1;29398:181:0;;;;;:::i;:::-;;:::i;30765:43::-;;;;;;;;;;;;30805:3;30765:43;;1880:25;;;;;;;;;;-1:-1:-1;1880:25:0;;;;-1:-1:-1;;;;;1880:25:0;;;34753:161;34828:4;34845:39;25394:10;34868:7;34877:6;34845:8;:39::i;:::-;-1:-1:-1;34902:4:0;34753:161;;;;;:::o;42425:242::-;26649:13;:11;:13::i;:::-;42509:16:::1;42571:4;-1:-1:-1::0;;;;;42549:35:0::1;;:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;42528:94;::::0;;;;42607:4:::1;42528:94;::::0;::::1;4859:34:1::0;-1:-1:-1;;;;;4929:15:1;;;4909:18;;;4902:43;42528:70:0;;;::::1;::::0;::::1;::::0;4771:18:1;;42528:94:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;42633:19:0::1;;::::0;;;:9:::1;:19;::::0;;;;:26;;-1:-1:-1;;42633:26:0::1;42655:4;42633:26;::::0;;-1:-1:-1;;;42425:242:0:o;33389:95::-;33442:7;31127:15;31071:1;31127:2;:15;:::i;:::-;31114:28;;:10;:28;:::i;:::-;33462:14;;33389:95;:::o;5238:98::-;2359:10;;-1:-1:-1;;;;;2359:10:0;2345;:24;2337:88;;;;-1:-1:-1;;;2337:88:0;;6903:2:1;2337:88:0;;;6885:21:1;6942:2;6922:18;;;6915:30;6981:34;6961:18;;;6954:62;-1:-1:-1;;;7032:18:1;;;7025:49;7091:19;;2337:88:0;;;;;;;;;5308:8:::1;:20:::0;;;::::1;;-1:-1:-1::0;;;5308:20:0::1;::::0;;;::::1;::::0;;;::::1;::::0;;5238:98::o;35396:373::-;-1:-1:-1;;;;;35519:19:0;;35494:4;35519:19;;;:11;:19;;;;;;;;25394:10;35519:33;;;;;;;;:43;-1:-1:-1;35519:43:0;35511:96;;;;-1:-1:-1;;;35511:96:0;;7323:2:1;35511:96:0;;;7305:21:1;7362:2;7342:18;;;7335:30;7401:34;7381:18;;;7374:62;7472:10;7452:18;;;7445:38;7500:19;;35511:96:0;7121:404:1;35511:96:0;35618:36;35628:6;35636:9;35647:6;35618:9;:36::i;:::-;-1:-1:-1;;;;;35696:19:0;;;;;;:11;:19;;;;;;;;25394:10;35696:33;;;;;;;;;35665:74;;35674:6;;35696:42;;35732:6;;35696:42;:::i;:::-;35665:8;:74::i;:::-;-1:-1:-1;35757:4:0;35396:373;;;;;:::o;31283:59::-;31338:4;31127:15;31071:1;31127:2;:15;:::i;:::-;31114:28;;:10;:28;:::i;:::-;31328:14;;;;:::i;:::-;31283:59;:::o;36178:207::-;25394:10;36258:4;36307:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;36307:34:0;;;;;;;;;;36258:4;;36275:80;;36298:7;;36307:47;;36344:10;;36307:47;:::i;34259:141::-;34305:4;34322:48;25394:10;34354:6;34363;34322:9;:48::i;:::-;-1:-1:-1;34388:4:0;;34259:141;-1:-1:-1;34259:141:0:o;6039:99::-;2359:10;;6088:7;;-1:-1:-1;;;;;2359:10:0;2345;:24;2337:88;;;;-1:-1:-1;;;2337:88:0;;6903:2:1;2337:88:0;;;6885:21:1;6942:2;6922:18;;;6915:30;6981:34;6961:18;;;6954:62;-1:-1:-1;;;7032:18:1;;;7025:49;7091:19;;2337:88:0;6701:415:1;2337:88:0;6115:15:::1;6124:5;6115:8;:15::i;31217:54::-:0;31269:2;31127:15;31071:1;31127:2;:15;:::i;5723:181::-;2359:10;;-1:-1:-1;;;;;2359:10:0;2345;:24;2337:88;;;;-1:-1:-1;;;2337:88:0;;6903:2:1;2337:88:0;;;6885:21:1;6942:2;6922:18;;;6915:30;6981:34;6961:18;;;6954:62;-1:-1:-1;;;7032:18:1;;;7025:49;7091:19;;2337:88:0;6701:415:1;2337:88:0;5808:24:::1;::::0;-1:-1:-1;;;5808:24:0;::::1;;;5807:25;5799:55;;;::::0;-1:-1:-1;;;5799:55:0;;8274:2:1;5799:55:0::1;::::0;::::1;8256:21:1::0;8313:2;8293:18;;;8286:30;8352:19;8332:18;;;8325:47;8389:18;;5799:55:0::1;8072:341:1::0;5799:55:0::1;5865:24;:31:::0;;;::::1;-1:-1:-1::0;;;5865:31:0::1;::::0;;5723:181::o;27404:103::-;26649:13;:11;:13::i;:::-;27469:30:::1;27496:1;27469:18;:30::i;:::-;27404:103::o:0;41525:296::-;29178:13;;25394:10;;-1:-1:-1;;;;;29178:13:0;41627:24;;41619:78;;;;-1:-1:-1;;;41619:78:0;;8620:2:1;41619:78:0;;;8602:21:1;8659:2;8639:18;;;8632:30;8698:34;8678:18;;;8671:62;8769:11;8749:18;;;8742:39;8798:19;;41619:78:0;8418:405:1;41619:78:0;41708:26;41727:6;41708:18;:26::i;:::-;41745:15;:33;;-1:-1:-1;;;;;41745:33:0;;;;-1:-1:-1;;;;;;41745:33:0;;;;;;;;4777:10:::1;:24:::0;;;;::::1;;::::0;;41525:296::o;41789:24::-;41568:253;41525:296::o;4817:116::-;2359:10;;-1:-1:-1;;;;;2359:10:0;2345;:24;2337:88;;;;-1:-1:-1;;;2337:88:0;;6903:2:1;2337:88:0;;;6885:21:1;6942:2;6922:18;;;6915:30;6981:34;6961:18;;;6954:62;-1:-1:-1;;;7032:18:1;;;7025:49;7091:19;;2337:88:0;6701:415:1;2337:88:0;4882:10:::1;::::0;4874:51:::1;::::0;-1:-1:-1;;;;;4882:10:0;;::::1;::::0;4903:21:::1;4874:51:::0;::::1;;;::::0;4882:10:::1;4874:51:::0;4882:10;4874:51;4903:21;4882:10;4874:51;::::1;;;;;;;;;;;;;::::0;::::1;;;;31152:53:::0;31202:3;31127:15;31071:1;31127:2;:15;:::i;5344:371::-;2359:10;;-1:-1:-1;;;;;2359:10:0;2345;:24;2337:88;;;;-1:-1:-1;;;2337:88:0;;6903:2:1;2337:88:0;;;6885:21:1;6942:2;6922:18;;;6915:30;6981:34;6961:18;;;6954:62;-1:-1:-1;;;7032:18:1;;;7025:49;7091:19;;2337:88:0;6701:415:1;2337:88:0;5439:24:::1;::::0;-1:-1:-1;;;5439:24:0;::::1;;;5438:25;5430:57;;;::::0;-1:-1:-1;;;5430:57:0;;9030:2:1;5430:57:0::1;::::0;::::1;9012:21:1::0;9069:2;9049:18;;;9042:30;9108:21;9088:18;;;9081:49;9147:18;;5430:57:0::1;8828:343:1::0;5430:57:0::1;5517:23;::::0;::::1;-1:-1:-1::0;;;5517:23:0;;::::1;::::0;::::1;5506:34:::0;;::::1;;;5498:99;;;::::0;-1:-1:-1;;;5498:99:0;;9378:2:1;5498:99:0::1;::::0;::::1;9360:21:1::0;9417:2;9397:18;;;9390:30;9456:34;9436:18;;;9429:62;9527:22;9507:18;;;9500:50;9567:19;;5498:99:0::1;9176:416:1::0;5498:99:0::1;5627:3;5616:7;:14;;;;5608:58;;;::::0;-1:-1:-1;;;5608:58:0;;9799:2:1;5608:58:0::1;::::0;::::1;9781:21:1::0;9838:2;9818:18;;;9811:30;9877:33;9857:18;;;9850:61;9928:18;;5608:58:0::1;9597:355:1::0;5608:58:0::1;5677:20;:30:::0;;::::1;::::0;;::::1;-1:-1:-1::0;;;5677:30:0::1;::::0;;;::::1;::::0;;;::::1;::::0;;5344:371::o;36888:369::-;25394:10;36973:4;37017:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;37017:34:0;;;;;;;;;;37070:35;;;;37062:85;;;;-1:-1:-1;;;37062:85:0;;10159:2:1;37062:85:0;;;10141:21:1;10198:2;10178:18;;;10171:30;10237:34;10217:18;;;10210:62;10308:7;10288:18;;;10281:35;10333:19;;37062:85:0;9957:401:1;37062:85:0;37158:67;25394:10;37181:7;37190:34;37209:15;37190:16;:34;:::i;4700:109::-;2359:10;;-1:-1:-1;;;;;2359:10:0;2345;:24;2337:88;;;;-1:-1:-1;;;2337:88:0;;6903:2:1;2337:88:0;;;6885:21:1;6942:2;6922:18;;;6915:30;6981:34;6961:18;;;6954:62;-1:-1:-1;;;7032:18:1;;;7025:49;7091:19;;2337:88:0;6701:415:1;2337:88:0;4777:10:::1;:24:::0;;-1:-1:-1;;;;;;4777:24:0::1;-1:-1:-1::0;;;;;4777:24:0;;;::::1;::::0;;;::::1;::::0;;4700:109::o;33879:167::-;33957:4;33974:42;25394:10;33998:9;34009:6;33974:9;:42::i;5058:172::-;2359:10;;-1:-1:-1;;;;;2359:10:0;2345;:24;2337:88;;;;-1:-1:-1;;;2337:88:0;;6903:2:1;2337:88:0;;;6885:21:1;6942:2;6922:18;;;6915:30;6981:34;6961:18;;;6954:62;-1:-1:-1;;;7032:18:1;;;7025:49;7091:19;;2337:88:0;6701:415:1;2337:88:0;5157:9:::1;5143:10;:23;;5135:54;;;::::0;-1:-1:-1;;;5135:54:0;;10565:2:1;5135:54:0::1;::::0;::::1;10547:21:1::0;10604:2;10584:18;;;10577:30;10643:20;10623:18;;;10616:48;10681:18;;5135:54:0::1;10363:342:1::0;5135:54:0::1;5200:9;:22:::0;5058:172::o;31357:53::-;31406:4;31127:15;31071:1;31127:2;:15;:::i;4941:109::-;2359:10;;-1:-1:-1;;;;;2359:10:0;2345;:24;2337:88;;;;-1:-1:-1;;;2337:88:0;;6903:2:1;2337:88:0;;;6885:21:1;6942:2;6922:18;;;6915:30;6981:34;6961:18;;;6954:62;-1:-1:-1;;;7032:18:1;;;7025:49;7091:19;;2337:88:0;6701:415:1;2337:88:0;5019:13:::1;:23:::0;4941:109::o;41998:188::-;26649:13;:11;:13::i;:::-;-1:-1:-1;;;;;16771:19:0;;;42079:60:::1;;;::::0;-1:-1:-1;;;42079:60:0;;10912:2:1;42079:60:0::1;::::0;::::1;10894:21:1::0;10951:2;10931:18;;;10924:30;10990:25;10970:18;;;10963:53;11033:18;;42079:60:0::1;10710:347:1::0;42079:60:0::1;-1:-1:-1::0;;;;;42150:15:0;;;::::1;;::::0;;;:9:::1;:15;::::0;;;;:28;;-1:-1:-1;;42150:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;41998:188::o;29398:181::-;26649:13;:11;:13::i;:::-;29488::::1;:24:::0;;-1:-1:-1;;;;;29488:24:0;::::1;-1:-1:-1::0;;;;;;29488:24:0;;::::1;::::0;::::1;::::0;;;29553:7:::1;26809::::0;26836:6;-1:-1:-1;;;;;26836:6:0;;26763:87;29553:7:::1;-1:-1:-1::0;;;;;29528:43:0::1;;;;;;;;;;;29398:181:::0;:::o;28023:191::-;28097:16;28116:6;;-1:-1:-1;;;;;28133:17:0;;;-1:-1:-1;;;;;;28133:17:0;;;;;;28166:40;;28116:6;;;;;;;28166:40;;28097:16;28166:40;28086:128;28023:191;:::o;40333:335::-;-1:-1:-1;;;;;40426:19:0;;40418:68;;;;-1:-1:-1;;;40418:68:0;;11264:2:1;40418:68:0;;;11246:21:1;11303:2;11283:18;;;11276:30;11342:34;11322:18;;;11315:62;11413:6;11393:18;;;11386:34;11437:19;;40418:68:0;11062:400:1;40418:68:0;-1:-1:-1;;;;;40505:21:0;;40497:68;;;;-1:-1:-1;;;40497:68:0;;11669:2:1;40497:68:0;;;11651:21:1;11708:2;11688:18;;;11681:30;11747:34;11727:18;;;11720:62;11818:4;11798:18;;;11791:32;11840:19;;40497:68:0;11467:398:1;40497:68:0;-1:-1:-1;;;;;40576:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;40628:32;;160:25:1;;;40628:32:0;;133:18:1;40628:32:0;;;;;;;40333:335;;;:::o;26928:132::-;26809:7;26836:6;-1:-1:-1;;;;;26836:6:0;25394:10;26992:23;26984:68;;;;-1:-1:-1;;;26984:68:0;;12072:2:1;26984:68:0;;;12054:21:1;;;12091:18;;;12084:30;12150:34;12130:18;;;12123:62;12202:18;;26984:68:0;11870:356:1;37747:2148:0;-1:-1:-1;;;;;37835:18:0;;37827:68;;;;-1:-1:-1;;;37827:68:0;;12433:2:1;37827:68:0;;;12415:21:1;12472:2;12452:18;;;12445:30;12511:34;12491:18;;;12484:62;12582:7;12562:18;;;12555:35;12607:19;;37827:68:0;12231:401:1;37827:68:0;-1:-1:-1;;;;;37914:16:0;;37906:64;;;;-1:-1:-1;;;37906:64:0;;12839:2:1;37906:64:0;;;12821:21:1;12878:2;12858:18;;;12851:30;12917:34;12897:18;;;12890:62;12988:5;12968:18;;;12961:33;13011:19;;37906:64:0;12637:399:1;37906:64:0;37998:1;37989:6;:10;37981:64;;;;-1:-1:-1;;;37981:64:0;;13243:2:1;37981:64:0;;;13225:21:1;13282:2;13262:18;;;13255:30;13321:34;13301:18;;;13294:62;13392:11;13372:18;;;13365:39;13421:19;;37981:64:0;13041:405:1;37981:64:0;-1:-1:-1;;;;;38101:15:0;;;;;;:9;:15;;;;;;38091:25;;38088:68;;;38133:11;38143:1;38133:11;;:::i;:::-;;;38088:68;-1:-1:-1;;;;;38172:19:0;;38186:4;38172:19;;;;:37;;-1:-1:-1;;;;;;38196:13:0;;;;;;:9;:13;;;;;;;;38195:14;38172:37;:69;;;;;30805:3;38213:12;;:28;38172:69;:94;;;;-1:-1:-1;38251:15:0;;-1:-1:-1;;;;;38245:21:0;;;38251:15;;38245:21;;38172:94;:121;;;;-1:-1:-1;38278:15:0;;-1:-1:-1;;;;;38270:23:0;;;38278:15;;38270:23;;38172:121;38168:435;;;-1:-1:-1;;;;;33640:18:0;;38310;33640;;;:9;:18;;;;;;31269:2;31127:15;31071:1;31127:2;:15;:::i;:::-;31114:28;;:10;:28;:::i;:::-;31259:12;;;;:::i;:::-;38386:19;38399:6;38386:10;:19;:::i;:::-;38385:40;;38359:164;;;;-1:-1:-1;;;38359:164:0;;13653:2:1;38359:164:0;;;13635:21:1;13692:2;13672:18;;;13665:30;13731:34;13711:18;;;13704:62;13802:32;13782:18;;;13775:60;13852:19;;38359:164:0;13451:426:1;38359:164:0;31202:3;31127:15;31071:1;31127:2;:15;:::i;:::-;31114:28;;:10;:28;:::i;:::-;31192:13;;;;:::i;:::-;38546:6;:23;;38538:53;;;;-1:-1:-1;;;38538:53:0;;14084:2:1;38538:53:0;;;14066:21:1;14123:2;14103:18;;;14096:30;14162:19;14142:18;;;14135:47;14199:18;;38538:53:0;13882:341:1;38538:53:0;38295:308;38168:435;38694:15;;38615:17;;;;-1:-1:-1;;;;;38688:21:0;;;38694:15;;38688:21;;;;:48;;-1:-1:-1;38721:15:0;;-1:-1:-1;;;;;38713:23:0;;;38721:15;;38713:23;;38688:48;38685:388;;;-1:-1:-1;;;;;38757:15:0;;;;;;:9;:15;;;;;;;;:38;;;;-1:-1:-1;;;;;;38776:19:0;;38790:4;38776:19;;38757:38;38753:155;;;30805:3;38843:12;;:28;:49;;30885:1;38843:49;;;30756:2;38843:49;38832:60;;38753:155;-1:-1:-1;;;;;38926:13:0;;;;;;:9;:13;;;;;;;;:38;;;;-1:-1:-1;;;;;;38943:21:0;;38959:4;38943:21;;38926:38;38922:140;;;30805:3;38996:12;;:28;:50;;30928:1;38996:50;;;30756:2;38996:50;38985:61;;38922:140;39115:3;39095:17;39104:8;39095:6;:17;:::i;:::-;:23;;;;:::i;:::-;39188:4;39139:28;33640:18;;;:9;:18;;;;;;39210:6;;39083:35;;-1:-1:-1;33640:18:0;39210:6;;39209:7;:24;;;;-1:-1:-1;;;;;;39220:13:0;;;;;;:9;:13;;;;;;;;39209:24;:69;;;;-1:-1:-1;31338:4:0;31127:15;31071:1;31127:2;:15;:::i;:::-;31114:28;;:10;:28;:::i;:::-;31328:14;;;;:::i;:::-;39237:20;:41;39209:69;39205:349;;;39295:70;39312:52;39316:6;39324:39;39328:20;31406:4;31127:15;31071:1;31127:2;:15;:::i;:::-;31114:28;;:10;:28;:::i;:::-;31396:14;;;;:::i;:::-;39324:3;:39::i;39312:52::-;39295:16;:70::i;:::-;39409:21;39449:22;;39445:98;;39492:35;39505:21;39492:12;:35::i;:::-;39280:274;39205:349;39570:13;;39566:172;;39600:12;:14;;;:12;:14;;;:::i;:::-;;;;-1:-1:-1;;39647:4:0;39629:24;;;;:9;:24;;;;;:37;;39657:9;;39629:24;:37;;39657:9;;39629:37;:::i;:::-;;;;-1:-1:-1;;39686:40:0;;160:25:1;;;39709:4:0;;-1:-1:-1;;;;;39686:40:0;;;;;148:2:1;133:18;39686:40:0;;;;;;;39566:172;-1:-1:-1;;;;;39750:15:0;;;;;;:9;:15;;;;;:25;;39769:6;;39750:15;:25;;39769:6;;39750:25;:::i;:::-;;;;-1:-1:-1;39804:18:0;;-1:-1:-1;39813:9:0;39804:6;:18;:::i;:::-;-1:-1:-1;;;;;39786:13:0;;;;;;:9;:13;;;;;:37;;:13;;;:37;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;39849:38:0;;;;;;;39868:18;39877:9;39868:6;:18;:::i;:::-;39849:38;;160:25:1;;;148:2;133:18;39849:38:0;;;;;;;37816:2079;;;37747:2148;;;:::o;3644:914::-;3694:7;3732:21;3764:460;;;;3842:8;;3792:24;;-1:-1:-1;;;3842:8:0;;;;:52;;1257:41;3842:52;;;1155:41;3842:52;3819:106;;3904:4;3819:106;;;4859:34:1;;;4909:18;;;4902:43;4771:18;;3819:106:0;;;-1:-1:-1;;3819:106:0;;;;;;;;;;;;;;;;;;;;;;;;;;;3948:6;;3967:13;;3940:55;;3819:106;;-1:-1:-1;;;;;;3948:6:0;;3967:13;3940:55;;3819:106;;3940:55;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3777:230;3764:460;;;4031:8;;-1:-1:-1;;;4031:8:0;;;;4028:185;;;4060:6;;:48;;;;;4087:4;4060:48;;;4859:34:1;;;4909:18;;;4902:43;-1:-1:-1;;;;;4060:6:0;;;;:18;;4771::1;;4060:48:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4028:185;;;4149:6;;:48;;;;;4176:4;4149:48;;;4859:34:1;;;4909:18;;;4902:43;-1:-1:-1;;;;;4149:6:0;;;;:18;;4771::1;;4149:48:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4028:185;4288:20;;4253:21;;4311:3;-1:-1:-1;;;4288:20:0;;;;;:26;:48;;;;;4329:7;4318:8;:18;4288:48;4285:247;;;4406:20;;4353;;4430:3;;4400:26;;-1:-1:-1;;;4406:20:0;;;;4430:3;4400:26;:::i;:::-;4376:51;;4377:18;4388:7;4377:8;:18;:::i;:::-;4376:51;;;;:::i;:::-;:57;;;;:::i;:::-;4456:10;;4448:38;;4353:80;;-1:-1:-1;;;;;;4456:10:0;;4448:38;;;;;4353:80;;4456:10;4448:38;4456:10;4448:38;4353:80;4456:10;4448:38;;-1:-1:-1;4508:12:0;;3644:914;-1:-1:-1;;;;;;;;3644:914:0:o;4285:247::-;-1:-1:-1;4549:1:0;;3644:914;-1:-1:-1;;;3644:914:0:o;29769:156::-;29859:13;29852:20;;-1:-1:-1;;;;;;29852:20:0;;;29883:34;29908:8;29883:24;:34::i;40676:107::-;40733:7;40765:1;40761;:5;40760:15;;40774:1;40760:15;;;40770:1;40760:15;40753:22;40676:107;-1:-1:-1;;;40676:107:0:o;40791:492::-;31691:6;:13;;-1:-1:-1;;31691:13:0;31700:4;31691:13;;;40893:16:::1;::::0;;40907:1:::1;40893:16:::0;;;;;::::1;::::0;;-1:-1:-1;;40893:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;40893:16:0::1;40869:40;;40938:4;40920;40925:1;40920:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;40920:23:0::1;;;-1:-1:-1::0;;;;;40920:23:0::1;;;::::0;::::1;40964:18;-1:-1:-1::0;;;;;40964:23:0::1;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;40954:4;40959:1;40954:7;;;;;;;;:::i;:::-;;;;;;:35;-1:-1:-1::0;;;;;40954:35:0::1;;;-1:-1:-1::0;;;;;40954:35:0::1;;;::::0;::::1;41000:65;41017:4;41032:18;41053:11;41000:8;:65::i;:::-;41076:199;::::0;;;;-1:-1:-1;;;;;41076:18:0::1;:69;::::0;::::1;::::0;:199:::1;::::0;41160:11;;41186:1:::1;::::0;41202:4;;41229::::1;::::0;41249:15:::1;::::0;41076:199:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;31727:6:0;:14;;-1:-1:-1;;31727:14:0;;;-1:-1:-1;;;;40791:492:0:o;41291:97::-;41348:15;;:32;;-1:-1:-1;;;;;41348:15:0;;;;:32;;;;;41373:6;;41348:15;:32;:15;:32;41373:6;41348:15;:32;;;;;;;;;;;;;;;;;;;;;41291:97;:::o;196:258:1:-;268:1;278:113;292:6;289:1;286:13;278:113;;;368:11;;;362:18;349:11;;;342:39;314:2;307:10;278:113;;;409:6;406:1;403:13;400:48;;;444:1;435:6;430:3;426:16;419:27;400:48;;196:258;;;:::o;459:383::-;608:2;597:9;590:21;571:4;640:6;634:13;683:6;678:2;667:9;663:18;656:34;699:66;758:6;753:2;742:9;738:18;733:2;725:6;721:15;699:66;:::i;:::-;826:2;805:15;-1:-1:-1;;801:29:1;786:45;;;;833:2;782:54;;459:383;-1:-1:-1;;459:383:1:o;847:154::-;-1:-1:-1;;;;;926:5:1;922:54;915:5;912:65;902:93;;991:1;988;981:12;1006:315;1074:6;1082;1135:2;1123:9;1114:7;1110:23;1106:32;1103:52;;;1151:1;1148;1141:12;1103:52;1190:9;1177:23;1209:31;1234:5;1209:31;:::i;:::-;1259:5;1311:2;1296:18;;;;1283:32;;-1:-1:-1;;;1006:315:1:o;1518:388::-;1586:6;1594;1647:2;1635:9;1626:7;1622:23;1618:32;1615:52;;;1663:1;1660;1653:12;1615:52;1702:9;1689:23;1721:31;1746:5;1721:31;:::i;:::-;1771:5;-1:-1:-1;1828:2:1;1813:18;;1800:32;1841:33;1800:32;1841:33;:::i;:::-;1893:7;1883:17;;;1518:388;;;;;:::o;1911:160::-;1976:20;;2032:13;;2025:21;2015:32;;2005:60;;2061:1;2058;2051:12;2005:60;1911:160;;;:::o;2076:180::-;2132:6;2185:2;2173:9;2164:7;2160:23;2156:32;2153:52;;;2201:1;2198;2191:12;2153:52;2224:26;2240:9;2224:26;:::i;2261:456::-;2338:6;2346;2354;2407:2;2395:9;2386:7;2382:23;2378:32;2375:52;;;2423:1;2420;2413:12;2375:52;2462:9;2449:23;2481:31;2506:5;2481:31;:::i;:::-;2531:5;-1:-1:-1;2588:2:1;2573:18;;2560:32;2601:33;2560:32;2601:33;:::i;:::-;2261:456;;2653:7;;-1:-1:-1;;;2707:2:1;2692:18;;;;2679:32;;2261:456::o;2911:180::-;2970:6;3023:2;3011:9;3002:7;2998:23;2994:32;2991:52;;;3039:1;3036;3029:12;2991:52;-1:-1:-1;3062:23:1;;2911:180;-1:-1:-1;2911:180:1:o;3096:247::-;3155:6;3208:2;3196:9;3187:7;3183:23;3179:32;3176:52;;;3224:1;3221;3214:12;3176:52;3263:9;3250:23;3282:31;3307:5;3282:31;:::i;3774:269::-;3831:6;3884:2;3872:9;3863:7;3859:23;3855:32;3852:52;;;3900:1;3897;3890:12;3852:52;3939:9;3926:23;3989:4;3982:5;3978:16;3971:5;3968:27;3958:55;;4009:1;4006;3999:12;4048:315;4113:6;4121;4174:2;4162:9;4153:7;4149:23;4145:32;4142:52;;;4190:1;4187;4180:12;4142:52;4229:9;4216:23;4248:31;4273:5;4248:31;:::i;:::-;4298:5;-1:-1:-1;4322:35:1;4353:2;4338:18;;4322:35;:::i;:::-;4312:45;;4048:315;;;;;:::o;4368:251::-;4438:6;4491:2;4479:9;4470:7;4466:23;4462:32;4459:52;;;4507:1;4504;4497:12;4459:52;4539:9;4533:16;4558:31;4583:5;4558:31;:::i;4956:184::-;-1:-1:-1;;;5005:1:1;4998:88;5105:4;5102:1;5095:15;5129:4;5126:1;5119:15;5145:422;5234:1;5277:5;5234:1;5291:270;5312:7;5302:8;5299:21;5291:270;;;5371:4;5367:1;5363:6;5359:17;5353:4;5350:27;5347:53;;;5380:18;;:::i;:::-;5430:7;5420:8;5416:22;5413:55;;;5450:16;;;;5413:55;5529:22;;;;5489:15;;;;5291:270;;;5295:3;5145:422;;;;;:::o;5572:806::-;5621:5;5651:8;5641:80;;-1:-1:-1;5692:1:1;5706:5;;5641:80;5740:4;5730:76;;-1:-1:-1;5777:1:1;5791:5;;5730:76;5822:4;5840:1;5835:59;;;;5908:1;5903:130;;;;5815:218;;5835:59;5865:1;5856:10;;5879:5;;;5903:130;5940:3;5930:8;5927:17;5924:43;;;5947:18;;:::i;:::-;-1:-1:-1;;6003:1:1;5989:16;;6018:5;;5815:218;;6117:2;6107:8;6104:16;6098:3;6092:4;6089:13;6085:36;6079:2;6069:8;6066:16;6061:2;6055:4;6052:12;6048:35;6045:77;6042:159;;;-1:-1:-1;6154:19:1;;;6186:5;;6042:159;6233:34;6258:8;6252:4;6233:34;:::i;:::-;6303:6;6299:1;6295:6;6291:19;6282:7;6279:32;6276:58;;;6314:18;;:::i;:::-;6352:20;;5572:806;-1:-1:-1;;;5572:806:1:o;6383:140::-;6441:5;6470:47;6511:4;6501:8;6497:19;6491:4;6470:47;:::i;6528:168::-;6568:7;6634:1;6630;6626:6;6622:14;6619:1;6616:21;6611:1;6604:9;6597:17;6593:45;6590:71;;;6641:18;;:::i;:::-;-1:-1:-1;6681:9:1;;6528:168::o;7530:125::-;7570:4;7598:1;7595;7592:8;7589:34;;;7603:18;;:::i;:::-;-1:-1:-1;7640:9:1;;7530:125::o;7660:274::-;7700:1;7726;7716:189;;-1:-1:-1;;;7758:1:1;7751:88;7862:4;7859:1;7852:15;7890:4;7887:1;7880:15;7716:189;-1:-1:-1;7919:9:1;;7660:274::o;7939:128::-;7979:3;8010:1;8006:6;8003:1;8000:13;7997:39;;;8016:18;;:::i;:::-;-1:-1:-1;8052:9:1;;7939:128::o;14228:135::-;14267:3;-1:-1:-1;;14288:17:1;;14285:43;;;14308:18;;:::i;:::-;-1:-1:-1;14355:1:1;14344:13;;14228:135::o;14368:274::-;14497:3;14535:6;14529:13;14551:53;14597:6;14592:3;14585:4;14577:6;14573:17;14551:53;:::i;:::-;14620:16;;;;;14368:274;-1:-1:-1;;14368:274:1:o;14647:184::-;14717:6;14770:2;14758:9;14749:7;14745:23;14741:32;14738:52;;;14786:1;14783;14776:12;14738:52;-1:-1:-1;14809:16:1;;14647:184;-1:-1:-1;14647:184:1:o;14836:195::-;14874:4;14911;14908:1;14904:12;14943:4;14940:1;14936:12;14968:3;14963;14960:12;14957:38;;;14975:18;;:::i;:::-;15012:13;;;14836:195;-1:-1:-1;;;14836:195:1:o;15225:184::-;-1:-1:-1;;;15274:1:1;15267:88;15374:4;15371:1;15364:15;15398:4;15395:1;15388:15;15414:1026;15676:4;15724:3;15713:9;15709:19;15755:6;15744:9;15737:25;15781:2;15819:6;15814:2;15803:9;15799:18;15792:34;15862:3;15857:2;15846:9;15842:18;15835:31;15886:6;15921;15915:13;15952:6;15944;15937:22;15990:3;15979:9;15975:19;15968:26;;16029:2;16021:6;16017:15;16003:29;;16050:1;16060:218;16074:6;16071:1;16068:13;16060:218;;;16139:13;;-1:-1:-1;;;;;16135:62:1;16123:75;;16253:15;;;;16218:12;;;;16096:1;16089:9;16060:218;;;-1:-1:-1;;;;;;;16334:55:1;;;;16329:2;16314:18;;16307:83;-1:-1:-1;;;16421:3:1;16406:19;16399:35;16295:3;15414:1026;-1:-1:-1;;;15414:1026:1:o
Swarm Source
ipfs://65afb46746485b9b3ef1d120af4d1b211338ec42ca6f5b7070fdff2c75870def
Loading...
Loading
OVERVIEW
HyperBlast is a decentralized exchange focusing on providing a seamless and secure trading experience. It leverages blockchain technology and smart contracts to ensure fast, transparent, and secure transactions.Loading...
Loading
Multichain Portfolio | 27 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
BLAST | 100.00% | $0.007401 | 7,606.5116 | $56.3 |
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.