Skip to content

Instantly share code, notes, and snippets.

@ConfidenceYobo
Created August 7, 2022 09:24
Show Gist options
  • Save ConfidenceYobo/383465c62313f847ebd6b961a4e101f8 to your computer and use it in GitHub Desktop.
Save ConfidenceYobo/383465c62313f847ebd6b961a4e101f8 to your computer and use it in GitHub Desktop.
Created using remix-ide: Realtime Ethereum Contract Compiler and Runtime. Load this file by pasting this gists URL or ID at https://remix.ethereum.org/#version=soljson-v0.8.7+commit.e28d00a7.js&optimize=false&runs=200&gist=
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)
pragma solidity ^0.8.0;
import "../utils/Context.sol";
/**
* @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 anymore. Can only be called by the current owner.
*
* NOTE: Renouncing ownership will leave the contract without an owner,
* thereby removing any functionality that is only available to the owner.
*/
function renounceOwnership() public virtual onlyOwner {
_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);
}
}
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.6.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);
}
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.7.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
* ====
*
* [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://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
*
* IMPORTANT: because control is transferred to `recipient`, care must be
* taken to not create reentrancy vulnerabilities. Consider using
* {ReentrancyGuard} or the
* https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
*/
function sendValue(address payable recipient, uint256 amount) internal {
require(address(this).balance >= amount, "Address: insufficient balance");
(bool success, ) = recipient.call{value: amount}("");
require(success, "Address: unable to send value, recipient may have reverted");
}
/**
* @dev Performs a Solidity function call using a low level `call`. A
* plain `call` is an unsafe replacement for a function call: use this
* function instead.
*
* If `target` reverts with a revert reason, it is bubbled up by this
* function (like regular Solidity function calls).
*
* Returns the raw returned data. To convert to the expected return value,
* use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
*
* Requirements:
*
* - `target` must be a contract.
* - calling `target` with `data` must not revert.
*
* _Available since v3.1._
*/
function functionCall(address target, bytes memory data) internal returns (bytes memory) {
return functionCall(target, data, "Address: low-level call failed");
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with
* `errorMessage` as a fallback revert reason when `target` reverts.
*
* _Available since v3.1._
*/
function functionCall(
address target,
bytes memory data,
string memory errorMessage
) internal returns (bytes memory) {
return functionCallWithValue(target, data, 0, errorMessage);
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
* but also transferring `value` wei to `target`.
*
* Requirements:
*
* - the calling contract must have an ETH balance of at least `value`.
* - the called Solidity function must be `payable`.
*
* _Available since v3.1._
*/
function functionCallWithValue(
address target,
bytes memory data,
uint256 value
) internal returns (bytes memory) {
return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
}
/**
* @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
* with `errorMessage` as a fallback revert reason when `target` reverts.
*
* _Available since v3.1._
*/
function functionCallWithValue(
address target,
bytes memory data,
uint256 value,
string memory errorMessage
) internal returns (bytes memory) {
require(address(this).balance >= value, "Address: insufficient balance for call");
require(isContract(target), "Address: call to non-contract");
(bool success, bytes memory returndata) = target.call{value: value}(data);
return verifyCallResult(success, returndata, errorMessage);
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
* but performing a static call.
*
* _Available since v3.3._
*/
function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
return functionStaticCall(target, data, "Address: low-level static call failed");
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
* but performing a static call.
*
* _Available since v3.3._
*/
function functionStaticCall(
address target,
bytes memory data,
string memory errorMessage
) internal view returns (bytes memory) {
require(isContract(target), "Address: static call to non-contract");
(bool success, bytes memory returndata) = target.staticcall(data);
return verifyCallResult(success, returndata, errorMessage);
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
* but performing a delegate call.
*
* _Available since v3.4._
*/
function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
return functionDelegateCall(target, data, "Address: low-level delegate call failed");
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
* but performing a delegate call.
*
* _Available since v3.4._
*/
function functionDelegateCall(
address target,
bytes memory data,
string memory errorMessage
) internal returns (bytes memory) {
require(isContract(target), "Address: delegate call to non-contract");
(bool success, bytes memory returndata) = target.delegatecall(data);
return verifyCallResult(success, returndata, errorMessage);
}
/**
* @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the
* revert reason using the provided one.
*
* _Available since v4.3._
*/
function verifyCallResult(
bool success,
bytes memory returndata,
string memory errorMessage
) internal pure returns (bytes memory) {
if (success) {
return returndata;
} else {
// Look for revert reason and bubble it up if present
if (returndata.length > 0) {
// The easiest way to bubble the revert reason is using memory via assembly
/// @solidity memory-safe-assembly
assembly {
let returndata_size := mload(returndata)
revert(add(32, returndata), returndata_size)
}
} else {
revert(errorMessage);
}
}
}
}
// SPDX-License-Identifier: MIT
// 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;
}
}
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.6.0) (utils/math/SafeMath.sol)
pragma solidity ^0.8.0;
// CAUTION
// This version of SafeMath should only be used with Solidity 0.8 or later,
// because it relies on the compiler's built in overflow checks.
/**
* @dev Wrappers over Solidity's arithmetic operations.
*
* NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler
* now has built in overflow checking.
*/
library SafeMath {
/**
* @dev Returns the addition of two unsigned integers, with an overflow flag.
*
* _Available since v3.4._
*/
function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
uint256 c = a + b;
if (c < a) return (false, 0);
return (true, c);
}
}
/**
* @dev Returns the subtraction of two unsigned integers, with an overflow flag.
*
* _Available since v3.4._
*/
function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
if (b > a) return (false, 0);
return (true, a - b);
}
}
/**
* @dev Returns the multiplication of two unsigned integers, with an overflow flag.
*
* _Available since v3.4._
*/
function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
// Gas optimization: this is cheaper than requiring 'a' not being zero, but the
// benefit is lost if 'b' is also tested.
// See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
if (a == 0) return (true, 0);
uint256 c = a * b;
if (c / a != b) return (false, 0);
return (true, c);
}
}
/**
* @dev Returns the division of two unsigned integers, with a division by zero flag.
*
* _Available since v3.4._
*/
function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
if (b == 0) return (false, 0);
return (true, a / b);
}
}
/**
* @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.
*
* _Available since v3.4._
*/
function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
if (b == 0) return (false, 0);
return (true, a % b);
}
}
/**
* @dev Returns the addition of two unsigned integers, reverting on
* overflow.
*
* Counterpart to Solidity's `+` operator.
*
* Requirements:
*
* - Addition cannot overflow.
*/
function add(uint256 a, uint256 b) internal pure returns (uint256) {
return a + b;
}
/**
* @dev Returns the subtraction of two unsigned integers, reverting on
* overflow (when the result is negative).
*
* Counterpart to Solidity's `-` operator.
*
* Requirements:
*
* - Subtraction cannot overflow.
*/
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
return a - b;
}
/**
* @dev Returns the multiplication of two unsigned integers, reverting on
* overflow.
*
* Counterpart to Solidity's `*` operator.
*
* Requirements:
*
* - Multiplication cannot overflow.
*/
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
return a * b;
}
/**
* @dev Returns the integer division of two unsigned integers, reverting on
* division by zero. The result is rounded towards zero.
*
* Counterpart to Solidity's `/` operator.
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function div(uint256 a, uint256 b) internal pure returns (uint256) {
return a / b;
}
/**
* @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
* reverting when dividing by zero.
*
* Counterpart to Solidity's `%` operator. This function uses a `revert`
* opcode (which leaves remaining gas untouched) while Solidity uses an
* invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function mod(uint256 a, uint256 b) internal pure returns (uint256) {
return a % b;
}
/**
* @dev Returns the subtraction of two unsigned integers, reverting with custom message on
* overflow (when the result is negative).
*
* CAUTION: This function is deprecated because it requires allocating memory for the error
* message unnecessarily. For custom revert reasons use {trySub}.
*
* Counterpart to Solidity's `-` operator.
*
* Requirements:
*
* - Subtraction cannot overflow.
*/
function sub(
uint256 a,
uint256 b,
string memory errorMessage
) internal pure returns (uint256) {
unchecked {
require(b <= a, errorMessage);
return a - b;
}
}
/**
* @dev Returns the integer division of two unsigned integers, reverting with custom message on
* division by zero. The result is rounded towards zero.
*
* Counterpart to Solidity's `/` operator. Note: this function uses a
* `revert` opcode (which leaves remaining gas untouched) while Solidity
* uses an invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function div(
uint256 a,
uint256 b,
string memory errorMessage
) internal pure returns (uint256) {
unchecked {
require(b > 0, errorMessage);
return a / b;
}
}
/**
* @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
* reverting with custom message when dividing by zero.
*
* CAUTION: This function is deprecated because it requires allocating memory for the error
* message unnecessarily. For custom revert reasons use {tryMod}.
*
* Counterpart to Solidity's `%` operator. This function uses a `revert`
* opcode (which leaves remaining gas untouched) while Solidity uses an
* invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function mod(
uint256 a,
uint256 b,
string memory errorMessage
) internal pure returns (uint256) {
unchecked {
require(b > 0, errorMessage);
return a % b;
}
}
}
// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.4.22 <0.9.0;
library TestsAccounts {
function getAccount(uint index) pure public returns (address) {
address[15] memory accounts;
accounts[0] = 0x5B38Da6a701c568545dCfcB03FcB875f56beddC4;
accounts[1] = 0xAb8483F64d9C6d1EcF9b849Ae677dD3315835cb2;
accounts[2] = 0x4B20993Bc481177ec7E8f571ceCaE8A9e22C02db;
accounts[3] = 0x78731D3Ca6b7E34aC0F824c42a7cC18A495cabaB;
accounts[4] = 0x617F2E2fD72FD9D5503197092aC168c91465E7f2;
accounts[5] = 0x17F6AD8Ef982297579C203069C1DbfFE4348c372;
accounts[6] = 0x5c6B0f7Bf3E7ce046039Bd8FABdfD3f9F5021678;
accounts[7] = 0x03C6FcED478cBbC9a4FAB34eF9f40767739D1Ff7;
accounts[8] = 0x1aE0EA34a72D944a8C7603FfB3eC30a6669E454C;
accounts[9] = 0x0A098Eda01Ce92ff4A4CCb7A4fFFb5A43EBC70DC;
accounts[10] = 0xCA35b7d915458EF540aDe6068dFe2F44E8fa733c;
accounts[11] = 0x14723A09ACff6D2A60DcdF7aA4AFf308FDDC160C;
accounts[12] = 0x4B0897b0513fdC7C541B6d9D7E929C4e5364D2dB;
accounts[13] = 0x583031D1113aD414F02576BD6afaBfb302140225;
accounts[14] = 0xdD870fA1b7C4700F2BD7f44238821C26f7392148;
return accounts[index];
}
}
// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.4.22 <0.9.0;
library Assert {
event AssertionEvent(
bool passed,
string message,
string methodName
);
event AssertionEventUint(
bool passed,
string message,
string methodName,
uint256 returned,
uint256 expected
);
event AssertionEventInt(
bool passed,
string message,
string methodName,
int256 returned,
int256 expected
);
event AssertionEventBool(
bool passed,
string message,
string methodName,
bool returned,
bool expected
);
event AssertionEventAddress(
bool passed,
string message,
string methodName,
address returned,
address expected
);
event AssertionEventBytes32(
bool passed,
string message,
string methodName,
bytes32 returned,
bytes32 expected
);
event AssertionEventString(
bool passed,
string message,
string methodName,
string returned,
string expected
);
event AssertionEventUintInt(
bool passed,
string message,
string methodName,
uint256 returned,
int256 expected
);
event AssertionEventIntUint(
bool passed,
string message,
string methodName,
int256 returned,
uint256 expected
);
function ok(bool a, string memory message) public returns (bool result) {
result = a;
emit AssertionEvent(result, message, "ok");
}
function equal(uint256 a, uint256 b, string memory message) public returns (bool result) {
result = (a == b);
emit AssertionEventUint(result, message, "equal", a, b);
}
function equal(int256 a, int256 b, string memory message) public returns (bool result) {
result = (a == b);
emit AssertionEventInt(result, message, "equal", a, b);
}
function equal(bool a, bool b, string memory message) public returns (bool result) {
result = (a == b);
emit AssertionEventBool(result, message, "equal", a, b);
}
// TODO: only for certain versions of solc
//function equal(fixed a, fixed b, string message) public returns (bool result) {
// result = (a == b);
// emit AssertionEvent(result, message);
//}
// TODO: only for certain versions of solc
//function equal(ufixed a, ufixed b, string message) public returns (bool result) {
// result = (a == b);
// emit AssertionEvent(result, message);
//}
function equal(address a, address b, string memory message) public returns (bool result) {
result = (a == b);
emit AssertionEventAddress(result, message, "equal", a, b);
}
function equal(bytes32 a, bytes32 b, string memory message) public returns (bool result) {
result = (a == b);
emit AssertionEventBytes32(result, message, "equal", a, b);
}
function equal(string memory a, string memory b, string memory message) public returns (bool result) {
result = (keccak256(abi.encodePacked(a)) == keccak256(abi.encodePacked(b)));
emit AssertionEventString(result, message, "equal", a, b);
}
function notEqual(uint256 a, uint256 b, string memory message) public returns (bool result) {
result = (a != b);
emit AssertionEventUint(result, message, "notEqual", a, b);
}
function notEqual(int256 a, int256 b, string memory message) public returns (bool result) {
result = (a != b);
emit AssertionEventInt(result, message, "notEqual", a, b);
}
function notEqual(bool a, bool b, string memory message) public returns (bool result) {
result = (a != b);
emit AssertionEventBool(result, message, "notEqual", a, b);
}
// TODO: only for certain versions of solc
//function notEqual(fixed a, fixed b, string message) public returns (bool result) {
// result = (a != b);
// emit AssertionEvent(result, message);
//}
// TODO: only for certain versions of solc
//function notEqual(ufixed a, ufixed b, string message) public returns (bool result) {
// result = (a != b);
// emit AssertionEvent(result, message);
//}
function notEqual(address a, address b, string memory message) public returns (bool result) {
result = (a != b);
emit AssertionEventAddress(result, message, "notEqual", a, b);
}
function notEqual(bytes32 a, bytes32 b, string memory message) public returns (bool result) {
result = (a != b);
emit AssertionEventBytes32(result, message, "notEqual", a, b);
}
function notEqual(string memory a, string memory b, string memory message) public returns (bool result) {
result = (keccak256(abi.encodePacked(a)) != keccak256(abi.encodePacked(b)));
emit AssertionEventString(result, message, "notEqual", a, b);
}
/*----------------- Greater than --------------------*/
function greaterThan(uint256 a, uint256 b, string memory message) public returns (bool result) {
result = (a > b);
emit AssertionEventUint(result, message, "greaterThan", a, b);
}
function greaterThan(int256 a, int256 b, string memory message) public returns (bool result) {
result = (a > b);
emit AssertionEventInt(result, message, "greaterThan", a, b);
}
// TODO: safely compare between uint and int
function greaterThan(uint256 a, int256 b, string memory message) public returns (bool result) {
if(b < int(0)) {
// int is negative uint "a" always greater
result = true;
} else {
result = (a > uint(b));
}
emit AssertionEventUintInt(result, message, "greaterThan", a, b);
}
function greaterThan(int256 a, uint256 b, string memory message) public returns (bool result) {
if(a < int(0)) {
// int is negative uint "b" always greater
result = false;
} else {
result = (uint(a) > b);
}
emit AssertionEventIntUint(result, message, "greaterThan", a, b);
}
/*----------------- Lesser than --------------------*/
function lesserThan(uint256 a, uint256 b, string memory message) public returns (bool result) {
result = (a < b);
emit AssertionEventUint(result, message, "lesserThan", a, b);
}
function lesserThan(int256 a, int256 b, string memory message) public returns (bool result) {
result = (a < b);
emit AssertionEventInt(result, message, "lesserThan", a, b);
}
// TODO: safely compare between uint and int
function lesserThan(uint256 a, int256 b, string memory message) public returns (bool result) {
if(b < int(0)) {
// int is negative int "b" always lesser
result = false;
} else {
result = (a < uint(b));
}
emit AssertionEventUintInt(result, message, "lesserThan", a, b);
}
function lesserThan(int256 a, uint256 b, string memory message) public returns (bool result) {
if(a < int(0)) {
// int is negative int "a" always lesser
result = true;
} else {
result = (uint(a) < b);
}
emit AssertionEventIntUint(result, message, "lesserThan", a, b);
}
}
REMIX DEFAULT WORKSPACE
Remix default workspace is present when:
i. Remix loads for the very first time
ii. A new workspace is created with 'Default' template
iii. There are no files existing in the File Explorer
This workspace contains 3 directories:
1. 'contracts': Holds three contracts with increasing levels of complexity.
2. 'scripts': Contains four typescript files to deploy a contract. It is explained below.
3. 'tests': Contains one Solidity test file for 'Ballot' contract & one JS test file for 'Storage' contract.
SCRIPTS
The 'scripts' folder has four typescript files which help to deploy the 'Storage' contract using 'web3.js' and 'ethers.js' libraries.
For the deployment of any other contract, just update the contract's name from 'Storage' to the desired contract and provide constructor arguments accordingly
in the file `deploy_with_ethers.ts` or `deploy_with_web3.ts`
In the 'tests' folder there is a script containing Mocha-Chai unit tests for 'Storage' contract.
To run a script, right click on file name in the file explorer and click 'Run'. Remember, Solidity file must already be compiled.
Output from script will appear in remix terminal.
Please note, require/import is supported in a limited manner for Remix supported modules.
For now, modules supported by Remix are ethers, web3, swarmgw, chai, multihashes, remix and hardhat only for hardhat.ethers object/plugin.
For unsupported modules, an error like this will be thrown: '<module_name> module require is not supported by Remix IDE' will be shown.
{
"deploy": {
"VM:-": {
"linkReferences": {},
"autoDeployLib": true
},
"main:1": {
"linkReferences": {},
"autoDeployLib": true
},
"ropsten:3": {
"linkReferences": {},
"autoDeployLib": true
},
"rinkeby:4": {
"linkReferences": {},
"autoDeployLib": true
},
"kovan:42": {
"linkReferences": {},
"autoDeployLib": true
},
"görli:5": {
"linkReferences": {},
"autoDeployLib": true
},
"Custom": {
"linkReferences": {},
"autoDeployLib": true
}
},
"data": {
"bytecode": {
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:3329:9",
"statements": [
{
"nodeType": "YulBlock",
"src": "6:3:9",
"statements": []
},
{
"body": {
"nodeType": "YulBlock",
"src": "76:117:9",
"statements": [
{
"nodeType": "YulAssignment",
"src": "86:22:9",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "101:6:9"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "95:5:9"
},
"nodeType": "YulFunctionCall",
"src": "95:13:9"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "86:5:9"
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "171:16:9",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "180:1:9",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "183:1:9",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "173:6:9"
},
"nodeType": "YulFunctionCall",
"src": "173:12:9"
},
"nodeType": "YulExpressionStatement",
"src": "173:12:9"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "130:5:9"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "141:5:9"
},
{
"arguments": [
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "156:3:9",
"type": "",
"value": "160"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "161:1:9",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "152:3:9"
},
"nodeType": "YulFunctionCall",
"src": "152:11:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "165:1:9",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "148:3:9"
},
"nodeType": "YulFunctionCall",
"src": "148:19:9"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "137:3:9"
},
"nodeType": "YulFunctionCall",
"src": "137:31:9"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "127:2:9"
},
"nodeType": "YulFunctionCall",
"src": "127:42:9"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "120:6:9"
},
"nodeType": "YulFunctionCall",
"src": "120:50:9"
},
"nodeType": "YulIf",
"src": "117:2:9"
}
]
},
"name": "abi_decode_t_address_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "55:6:9",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "66:5:9",
"type": ""
}
],
"src": "14:179:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "279:139:9",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "325:26:9",
"statements": [
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "334:6:9"
},
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "342:6:9"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "327:6:9"
},
"nodeType": "YulFunctionCall",
"src": "327:22:9"
},
"nodeType": "YulExpressionStatement",
"src": "327:22:9"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "300:7:9"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "309:9:9"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "296:3:9"
},
"nodeType": "YulFunctionCall",
"src": "296:23:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "321:2:9",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "292:3:9"
},
"nodeType": "YulFunctionCall",
"src": "292:32:9"
},
"nodeType": "YulIf",
"src": "289:2:9"
},
{
"nodeType": "YulAssignment",
"src": "360:52:9",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "402:9:9"
}
],
"functionName": {
"name": "abi_decode_t_address_fromMemory",
"nodeType": "YulIdentifier",
"src": "370:31:9"
},
"nodeType": "YulFunctionCall",
"src": "370:42:9"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "360:6:9"
}
]
}
]
},
"name": "abi_decode_tuple_t_address_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "245:9:9",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "256:7:9",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "268:6:9",
"type": ""
}
],
"src": "198:220:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "538:279:9",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "584:26:9",
"statements": [
{
"expression": {
"arguments": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "593:6:9"
},
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "601:6:9"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "586:6:9"
},
"nodeType": "YulFunctionCall",
"src": "586:22:9"
},
"nodeType": "YulExpressionStatement",
"src": "586:22:9"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "559:7:9"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "568:9:9"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "555:3:9"
},
"nodeType": "YulFunctionCall",
"src": "555:23:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "580:2:9",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "551:3:9"
},
"nodeType": "YulFunctionCall",
"src": "551:32:9"
},
"nodeType": "YulIf",
"src": "548:2:9"
},
{
"nodeType": "YulAssignment",
"src": "619:52:9",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "661:9:9"
}
],
"functionName": {
"name": "abi_decode_t_address_fromMemory",
"nodeType": "YulIdentifier",
"src": "629:31:9"
},
"nodeType": "YulFunctionCall",
"src": "629:42:9"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "619:6:9"
}
]
},
{
"nodeType": "YulAssignment",
"src": "680:61:9",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "726:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "737:2:9",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "722:3:9"
},
"nodeType": "YulFunctionCall",
"src": "722:18:9"
}
],
"functionName": {
"name": "abi_decode_t_address_fromMemory",
"nodeType": "YulIdentifier",
"src": "690:31:9"
},
"nodeType": "YulFunctionCall",
"src": "690:51:9"
},
"variableNames": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "680:6:9"
}
]
},
{
"nodeType": "YulAssignment",
"src": "750:61:9",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "796:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "807:2:9",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "792:3:9"
},
"nodeType": "YulFunctionCall",
"src": "792:18:9"
}
],
"functionName": {
"name": "abi_decode_t_address_fromMemory",
"nodeType": "YulIdentifier",
"src": "760:31:9"
},
"nodeType": "YulFunctionCall",
"src": "760:51:9"
},
"variableNames": [
{
"name": "value2",
"nodeType": "YulIdentifier",
"src": "750:6:9"
}
]
}
]
},
"name": "abi_decode_tuple_t_addresst_addresst_address_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "488:9:9",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "499:7:9",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "511:6:9",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "519:6:9",
"type": ""
},
{
"name": "value2",
"nodeType": "YulTypedName",
"src": "527:6:9",
"type": ""
}
],
"src": "423:394:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "951:175:9",
"statements": [
{
"nodeType": "YulAssignment",
"src": "961:26:9",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "973:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "984:2:9",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "969:3:9"
},
"nodeType": "YulFunctionCall",
"src": "969:18:9"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "961:4:9"
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "996:29:9",
"value": {
"arguments": [
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1014:3:9",
"type": "",
"value": "160"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1019:1:9",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "1010:3:9"
},
"nodeType": "YulFunctionCall",
"src": "1010:11:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1023:1:9",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "1006:3:9"
},
"nodeType": "YulFunctionCall",
"src": "1006:19:9"
},
"variables": [
{
"name": "_1",
"nodeType": "YulTypedName",
"src": "1000:2:9",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1041:9:9"
},
{
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "1056:6:9"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "1064:2:9"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "1052:3:9"
},
"nodeType": "YulFunctionCall",
"src": "1052:15:9"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1034:6:9"
},
"nodeType": "YulFunctionCall",
"src": "1034:34:9"
},
"nodeType": "YulExpressionStatement",
"src": "1034:34:9"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1088:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1099:2:9",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1084:3:9"
},
"nodeType": "YulFunctionCall",
"src": "1084:18:9"
},
{
"arguments": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "1108:6:9"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "1116:2:9"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "1104:3:9"
},
"nodeType": "YulFunctionCall",
"src": "1104:15:9"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1077:6:9"
},
"nodeType": "YulFunctionCall",
"src": "1077:43:9"
},
"nodeType": "YulExpressionStatement",
"src": "1077:43:9"
}
]
},
"name": "abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "912:9:9",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "923:6:9",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "931:6:9",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "942:4:9",
"type": ""
}
],
"src": "822:304:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1271:272:9",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1281:26:9",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1293:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1304:2:9",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1289:3:9"
},
"nodeType": "YulFunctionCall",
"src": "1289:18:9"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "1281:4:9"
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "1349:111:9",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1370:1:9",
"type": "",
"value": "0"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1377:3:9",
"type": "",
"value": "224"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1382:10:9",
"type": "",
"value": "0x4e487b71"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "1373:3:9"
},
"nodeType": "YulFunctionCall",
"src": "1373:20:9"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1363:6:9"
},
"nodeType": "YulFunctionCall",
"src": "1363:31:9"
},
"nodeType": "YulExpressionStatement",
"src": "1363:31:9"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1414:1:9",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1417:4:9",
"type": "",
"value": "0x21"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1407:6:9"
},
"nodeType": "YulFunctionCall",
"src": "1407:15:9"
},
"nodeType": "YulExpressionStatement",
"src": "1407:15:9"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1442:1:9",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1445:4:9",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "1435:6:9"
},
"nodeType": "YulFunctionCall",
"src": "1435:15:9"
},
"nodeType": "YulExpressionStatement",
"src": "1435:15:9"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "1329:6:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1337:1:9",
"type": "",
"value": "8"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "1326:2:9"
},
"nodeType": "YulFunctionCall",
"src": "1326:13:9"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "1319:6:9"
},
"nodeType": "YulFunctionCall",
"src": "1319:21:9"
},
"nodeType": "YulIf",
"src": "1316:2:9"
},
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1476:9:9"
},
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "1487:6:9"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1469:6:9"
},
"nodeType": "YulFunctionCall",
"src": "1469:25:9"
},
"nodeType": "YulExpressionStatement",
"src": "1469:25:9"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1514:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1525:2:9",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1510:3:9"
},
"nodeType": "YulFunctionCall",
"src": "1510:18:9"
},
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "1530:6:9"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1503:6:9"
},
"nodeType": "YulFunctionCall",
"src": "1503:34:9"
},
"nodeType": "YulExpressionStatement",
"src": "1503:34:9"
}
]
},
"name": "abi_encode_tuple_t_enum$_TokenType_$830_t_uint256__to_t_uint8_t_uint256__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "1232:9:9",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "1243:6:9",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "1251:6:9",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "1262:4:9",
"type": ""
}
],
"src": "1131:412:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1722:229:9",
"statements": [
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1739:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1750:2:9",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1732:6:9"
},
"nodeType": "YulFunctionCall",
"src": "1732:21:9"
},
"nodeType": "YulExpressionStatement",
"src": "1732:21:9"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1773:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1784:2:9",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1769:3:9"
},
"nodeType": "YulFunctionCall",
"src": "1769:18:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1789:2:9",
"type": "",
"value": "39"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1762:6:9"
},
"nodeType": "YulFunctionCall",
"src": "1762:30:9"
},
"nodeType": "YulExpressionStatement",
"src": "1762:30:9"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1812:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1823:2:9",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1808:3:9"
},
"nodeType": "YulFunctionCall",
"src": "1808:18:9"
},
{
"kind": "string",
"nodeType": "YulLiteral",
"src": "1828:34:9",
"type": "",
"value": "Cant set marketing address to ad"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1801:6:9"
},
"nodeType": "YulFunctionCall",
"src": "1801:62:9"
},
"nodeType": "YulExpressionStatement",
"src": "1801:62:9"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1883:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1894:2:9",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1879:3:9"
},
"nodeType": "YulFunctionCall",
"src": "1879:18:9"
},
{
"kind": "string",
"nodeType": "YulLiteral",
"src": "1899:9:9",
"type": "",
"value": "dress 0"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1872:6:9"
},
"nodeType": "YulFunctionCall",
"src": "1872:37:9"
},
"nodeType": "YulExpressionStatement",
"src": "1872:37:9"
},
{
"nodeType": "YulAssignment",
"src": "1918:27:9",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1930:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1941:3:9",
"type": "",
"value": "128"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1926:3:9"
},
"nodeType": "YulFunctionCall",
"src": "1926:19:9"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "1918:4:9"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_dce99c70970a28e4656106f6a4e09c4594a81451776a9b7807989806816fff25__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "1699:9:9",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "1713:4:9",
"type": ""
}
],
"src": "1548:403:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2057:76:9",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2067:26:9",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2079:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2090:2:9",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2075:3:9"
},
"nodeType": "YulFunctionCall",
"src": "2075:18:9"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "2067:4:9"
}
]
},
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2109:9:9"
},
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "2120:6:9"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "2102:6:9"
},
"nodeType": "YulFunctionCall",
"src": "2102:25:9"
},
"nodeType": "YulExpressionStatement",
"src": "2102:25:9"
}
]
},
"name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "2026:9:9",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "2037:6:9",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "2048:4:9",
"type": ""
}
],
"src": "1956:177:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2184:74:9",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "2207:22:9",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x12",
"nodeType": "YulIdentifier",
"src": "2209:16:9"
},
"nodeType": "YulFunctionCall",
"src": "2209:18:9"
},
"nodeType": "YulExpressionStatement",
"src": "2209:18:9"
}
]
},
"condition": {
"arguments": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "2204:1:9"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "2197:6:9"
},
"nodeType": "YulFunctionCall",
"src": "2197:9:9"
},
"nodeType": "YulIf",
"src": "2194:2:9"
},
{
"nodeType": "YulAssignment",
"src": "2238:14:9",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "2247:1:9"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "2250:1:9"
}
],
"functionName": {
"name": "div",
"nodeType": "YulIdentifier",
"src": "2243:3:9"
},
"nodeType": "YulFunctionCall",
"src": "2243:9:9"
},
"variableNames": [
{
"name": "r",
"nodeType": "YulIdentifier",
"src": "2238:1:9"
}
]
}
]
},
"name": "checked_div_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "x",
"nodeType": "YulTypedName",
"src": "2169:1:9",
"type": ""
},
{
"name": "y",
"nodeType": "YulTypedName",
"src": "2172:1:9",
"type": ""
}
],
"returnVariables": [
{
"name": "r",
"nodeType": "YulTypedName",
"src": "2178:1:9",
"type": ""
}
],
"src": "2138:120:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2315:116:9",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "2374:22:9",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x11",
"nodeType": "YulIdentifier",
"src": "2376:16:9"
},
"nodeType": "YulFunctionCall",
"src": "2376:18:9"
},
"nodeType": "YulExpressionStatement",
"src": "2376:18:9"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "2346:1:9"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "2339:6:9"
},
"nodeType": "YulFunctionCall",
"src": "2339:9:9"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "2332:6:9"
},
"nodeType": "YulFunctionCall",
"src": "2332:17:9"
},
{
"arguments": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "2354:1:9"
},
{
"arguments": [
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2365:1:9",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "2361:3:9"
},
"nodeType": "YulFunctionCall",
"src": "2361:6:9"
},
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "2369:1:9"
}
],
"functionName": {
"name": "div",
"nodeType": "YulIdentifier",
"src": "2357:3:9"
},
"nodeType": "YulFunctionCall",
"src": "2357:14:9"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "2351:2:9"
},
"nodeType": "YulFunctionCall",
"src": "2351:21:9"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "2328:3:9"
},
"nodeType": "YulFunctionCall",
"src": "2328:45:9"
},
"nodeType": "YulIf",
"src": "2325:2:9"
},
{
"nodeType": "YulAssignment",
"src": "2405:20:9",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "2420:1:9"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "2423:1:9"
}
],
"functionName": {
"name": "mul",
"nodeType": "YulIdentifier",
"src": "2416:3:9"
},
"nodeType": "YulFunctionCall",
"src": "2416:9:9"
},
"variableNames": [
{
"name": "product",
"nodeType": "YulIdentifier",
"src": "2405:7:9"
}
]
}
]
},
"name": "checked_mul_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "x",
"nodeType": "YulTypedName",
"src": "2294:1:9",
"type": ""
},
{
"name": "y",
"nodeType": "YulTypedName",
"src": "2297:1:9",
"type": ""
}
],
"returnVariables": [
{
"name": "product",
"nodeType": "YulTypedName",
"src": "2303:7:9",
"type": ""
}
],
"src": "2263:168:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2485:76:9",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "2507:22:9",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x11",
"nodeType": "YulIdentifier",
"src": "2509:16:9"
},
"nodeType": "YulFunctionCall",
"src": "2509:18:9"
},
"nodeType": "YulExpressionStatement",
"src": "2509:18:9"
}
]
},
"condition": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "2501:1:9"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "2504:1:9"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "2498:2:9"
},
"nodeType": "YulFunctionCall",
"src": "2498:8:9"
},
"nodeType": "YulIf",
"src": "2495:2:9"
},
{
"nodeType": "YulAssignment",
"src": "2538:17:9",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "2550:1:9"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "2553:1:9"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "2546:3:9"
},
"nodeType": "YulFunctionCall",
"src": "2546:9:9"
},
"variableNames": [
{
"name": "diff",
"nodeType": "YulIdentifier",
"src": "2538:4:9"
}
]
}
]
},
"name": "checked_sub_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "x",
"nodeType": "YulTypedName",
"src": "2467:1:9",
"type": ""
},
{
"name": "y",
"nodeType": "YulTypedName",
"src": "2470:1:9",
"type": ""
}
],
"returnVariables": [
{
"name": "diff",
"nodeType": "YulTypedName",
"src": "2476:4:9",
"type": ""
}
],
"src": "2436:125:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2621:325:9",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2631:22:9",
"value": {
"arguments": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "2645:4:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2651:1:9",
"type": "",
"value": "2"
}
],
"functionName": {
"name": "div",
"nodeType": "YulIdentifier",
"src": "2641:3:9"
},
"nodeType": "YulFunctionCall",
"src": "2641:12:9"
},
"variableNames": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "2631:6:9"
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "2662:38:9",
"value": {
"arguments": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "2692:4:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2698:1:9",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "2688:3:9"
},
"nodeType": "YulFunctionCall",
"src": "2688:12:9"
},
"variables": [
{
"name": "outOfPlaceEncoding",
"nodeType": "YulTypedName",
"src": "2666:18:9",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "2739:31:9",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2741:27:9",
"value": {
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "2755:6:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2763:4:9",
"type": "",
"value": "0x7f"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "2751:3:9"
},
"nodeType": "YulFunctionCall",
"src": "2751:17:9"
},
"variableNames": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "2741:6:9"
}
]
}
]
},
"condition": {
"arguments": [
{
"name": "outOfPlaceEncoding",
"nodeType": "YulIdentifier",
"src": "2719:18:9"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "2712:6:9"
},
"nodeType": "YulFunctionCall",
"src": "2712:26:9"
},
"nodeType": "YulIf",
"src": "2709:2:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2829:111:9",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2850:1:9",
"type": "",
"value": "0"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2857:3:9",
"type": "",
"value": "224"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2862:10:9",
"type": "",
"value": "0x4e487b71"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "2853:3:9"
},
"nodeType": "YulFunctionCall",
"src": "2853:20:9"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "2843:6:9"
},
"nodeType": "YulFunctionCall",
"src": "2843:31:9"
},
"nodeType": "YulExpressionStatement",
"src": "2843:31:9"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2894:1:9",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2897:4:9",
"type": "",
"value": "0x22"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "2887:6:9"
},
"nodeType": "YulFunctionCall",
"src": "2887:15:9"
},
"nodeType": "YulExpressionStatement",
"src": "2887:15:9"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2922:1:9",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2925:4:9",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "2915:6:9"
},
"nodeType": "YulFunctionCall",
"src": "2915:15:9"
},
"nodeType": "YulExpressionStatement",
"src": "2915:15:9"
}
]
},
"condition": {
"arguments": [
{
"name": "outOfPlaceEncoding",
"nodeType": "YulIdentifier",
"src": "2785:18:9"
},
{
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "2808:6:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2816:2:9",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "2805:2:9"
},
"nodeType": "YulFunctionCall",
"src": "2805:14:9"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "2782:2:9"
},
"nodeType": "YulFunctionCall",
"src": "2782:38:9"
},
"nodeType": "YulIf",
"src": "2779:2:9"
}
]
},
"name": "extract_byte_array_length",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "data",
"nodeType": "YulTypedName",
"src": "2601:4:9",
"type": ""
}
],
"returnVariables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "2610:6:9",
"type": ""
}
],
"src": "2566:380:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2989:74:9",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "3012:22:9",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x12",
"nodeType": "YulIdentifier",
"src": "3014:16:9"
},
"nodeType": "YulFunctionCall",
"src": "3014:18:9"
},
"nodeType": "YulExpressionStatement",
"src": "3014:18:9"
}
]
},
"condition": {
"arguments": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "3009:1:9"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "3002:6:9"
},
"nodeType": "YulFunctionCall",
"src": "3002:9:9"
},
"nodeType": "YulIf",
"src": "2999:2:9"
},
{
"nodeType": "YulAssignment",
"src": "3043:14:9",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "3052:1:9"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "3055:1:9"
}
],
"functionName": {
"name": "mod",
"nodeType": "YulIdentifier",
"src": "3048:3:9"
},
"nodeType": "YulFunctionCall",
"src": "3048:9:9"
},
"variableNames": [
{
"name": "r",
"nodeType": "YulIdentifier",
"src": "3043:1:9"
}
]
}
]
},
"name": "mod_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "x",
"nodeType": "YulTypedName",
"src": "2974:1:9",
"type": ""
},
{
"name": "y",
"nodeType": "YulTypedName",
"src": "2977:1:9",
"type": ""
}
],
"returnVariables": [
{
"name": "r",
"nodeType": "YulTypedName",
"src": "2983:1:9",
"type": ""
}
],
"src": "2951:112:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3100:95:9",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3117:1:9",
"type": "",
"value": "0"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3124:3:9",
"type": "",
"value": "224"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3129:10:9",
"type": "",
"value": "0x4e487b71"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "3120:3:9"
},
"nodeType": "YulFunctionCall",
"src": "3120:20:9"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3110:6:9"
},
"nodeType": "YulFunctionCall",
"src": "3110:31:9"
},
"nodeType": "YulExpressionStatement",
"src": "3110:31:9"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3157:1:9",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3160:4:9",
"type": "",
"value": "0x11"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3150:6:9"
},
"nodeType": "YulFunctionCall",
"src": "3150:15:9"
},
"nodeType": "YulExpressionStatement",
"src": "3150:15:9"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3181:1:9",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3184:4:9",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "3174:6:9"
},
"nodeType": "YulFunctionCall",
"src": "3174:15:9"
},
"nodeType": "YulExpressionStatement",
"src": "3174:15:9"
}
]
},
"name": "panic_error_0x11",
"nodeType": "YulFunctionDefinition",
"src": "3068:127:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3232:95:9",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3249:1:9",
"type": "",
"value": "0"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3256:3:9",
"type": "",
"value": "224"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3261:10:9",
"type": "",
"value": "0x4e487b71"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "3252:3:9"
},
"nodeType": "YulFunctionCall",
"src": "3252:20:9"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3242:6:9"
},
"nodeType": "YulFunctionCall",
"src": "3242:31:9"
},
"nodeType": "YulExpressionStatement",
"src": "3242:31:9"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3289:1:9",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3292:4:9",
"type": "",
"value": "0x12"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3282:6:9"
},
"nodeType": "YulFunctionCall",
"src": "3282:15:9"
},
"nodeType": "YulExpressionStatement",
"src": "3282:15:9"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3313:1:9",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3316:4:9",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "3306:6:9"
},
"nodeType": "YulFunctionCall",
"src": "3306:15:9"
},
"nodeType": "YulExpressionStatement",
"src": "3306:15:9"
}
]
},
"name": "panic_error_0x12",
"nodeType": "YulFunctionDefinition",
"src": "3200:127:9"
}
]
},
"contents": "{\n { }\n function abi_decode_t_address_fromMemory(offset) -> value\n {\n value := mload(offset)\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n value0 := abi_decode_t_address_fromMemory(headStart)\n }\n function abi_decode_tuple_t_addresst_addresst_address_fromMemory(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(value1, value1) }\n value0 := abi_decode_t_address_fromMemory(headStart)\n value1 := abi_decode_t_address_fromMemory(add(headStart, 32))\n value2 := abi_decode_t_address_fromMemory(add(headStart, 64))\n }\n function abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n let _1 := sub(shl(160, 1), 1)\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n }\n function abi_encode_tuple_t_enum$_TokenType_$830_t_uint256__to_t_uint8_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n if iszero(lt(value0, 8))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n mstore(headStart, value0)\n mstore(add(headStart, 32), value1)\n }\n function abi_encode_tuple_t_stringliteral_dce99c70970a28e4656106f6a4e09c4594a81451776a9b7807989806816fff25__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 39)\n mstore(add(headStart, 64), \"Cant set marketing address to ad\")\n mstore(add(headStart, 96), \"dress 0\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function checked_div_t_uint256(x, y) -> r\n {\n if iszero(y) { panic_error_0x12() }\n r := div(x, y)\n }\n function checked_mul_t_uint256(x, y) -> product\n {\n if and(iszero(iszero(x)), gt(y, div(not(0), x))) { panic_error_0x11() }\n product := mul(x, y)\n }\n function checked_sub_t_uint256(x, y) -> diff\n {\n if lt(x, y) { panic_error_0x11() }\n diff := sub(x, y)\n }\n function extract_byte_array_length(data) -> length\n {\n length := div(data, 2)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n if eq(outOfPlaceEncoding, lt(length, 32))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n }\n function mod_t_uint256(x, y) -> r\n {\n if iszero(y) { panic_error_0x12() }\n r := mod(x, y)\n }\n function panic_error_0x11()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n function panic_error_0x12()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x12)\n revert(0, 0x24)\n }\n}",
"id": 9,
"language": "Yul",
"name": "#utility.yul"
}
],
"linkReferences": {},
"object": "60c060405260086080819052675761696620496e7560c01b60a09081526200002b91600a919062000526565b50604080518082019091526003808252622ba32760e91b60209092019182526200005891600b9162000526565b5060c8600d55600d54600e5560c8600f55600f546010556101906011556011546012553480156200008857600080fd5b5060405162002e1738038062002e17833981016040819052620000ab9162000606565b620000bf620000b9620004a0565b620004a4565b6001600160a01b038216620000f15760405162461bcd60e51b8152600401620000e89062000696565b60405180910390fd5b600c805460ff191660121790556e13426172c74d822b878fe8000000006007819055620001219060001962000776565b6200012f906000196200071f565b600855600d54600e55600f54601055601580546001600160a01b03199081166001600160a01b038581169190911790925560168054909116918316919091179055601154601255600754620001af90612710906200019b906005620004f4602090811b62000f2b17901c565b6200050960201b62000f3e1790919060201c565b6017556016805460ff60a81b1916600160a81b17905560085460016000620001d662000517565b6001600160a01b03166001600160a01b03168152602001908152602001600020819055506000839050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200023957600080fd5b505afa1580156200024e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002749190620005e9565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620002bd57600080fd5b505afa158015620002d2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002f89190620005e9565b6040518363ffffffff1660e01b8152600401620003179291906200064f565b602060405180830381600087803b1580156200033257600080fd5b505af115801562000347573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200036d9190620005e9565b601480546001600160a01b03199081166001600160a01b039384161790915560138054909116918316919091179055600160046000620003ac62000517565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff199586161790553081526004909252902080549091166001179055620003f662000517565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6007546040516200043d9190620006dd565b60405180910390a3306200045062000517565b6001600160a01b03167f56358b41df5fa59f5639228f0930994cbdde383c8a8fd74e06c04e1deebe3562600260016040516200048e92919062000669565b60405180910390a350505050620007b9565b3390565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000620005028284620006fd565b9392505050565b6000620005028284620006e6565b6000546001600160a01b031690565b828054620005349062000739565b90600052602060002090601f016020900481019282620005585760008555620005a3565b82601f106200057357805160ff1916838001178555620005a3565b82800160010185558215620005a3579182015b82811115620005a357825182559160200191906001019062000586565b50620005b1929150620005b5565b5090565b5b80821115620005b15760008155600101620005b6565b80516001600160a01b0381168114620005e457600080fd5b919050565b600060208284031215620005fb578081fd5b6200050282620005cc565b6000806000606084860312156200061b578182fd5b6200062684620005cc565b92506200063660208501620005cc565b91506200064660408501620005cc565b90509250925092565b6001600160a01b0392831681529116602082015260400190565b60408101600884106200068c57634e487b7160e01b600052602160045260246000fd5b9281526020015290565b60208082526027908201527f43616e7420736574206d61726b6574696e67206164647265737320746f2061646040820152660647265737320360cc1b606082015260800190565b90815260200190565b600082620006f857620006f8620007a3565b500490565b60008160001904831182151516156200071a576200071a6200078d565b500290565b6000828210156200073457620007346200078d565b500390565b6002810460018216806200074e57607f821691505b602082108114156200077057634e487b7160e01b600052602260045260246000fd5b50919050565b600082620007885762000788620007a3565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b61264e80620007c96000396000f3fe6080604052600436106102135760003560e01c80634a74bb021161011857806395d89b41116100a0578063caac79341161006f578063caac7934146105bc578063dd62ed3e146105d1578063ea2f0b37146105f1578063f2fde38b14610611578063ffa1ad74146106315761021a565b806395d89b4114610547578063a457c2d71461055c578063a9059cbb1461057c578063c49b9a801461059c5761021a565b806370a08231116100e757806370a08231146104bd578063715018a6146104dd57806388f82020146104f25780638da5cb5b146105125780638ee88c53146105275761021a565b80634a74bb021461045357806352390c02146104685780635342acb4146104885780636bc87c3a146104a85761021a565b8063313ce5671161019b5780633bd5d1731161016a5780633bd5d173146103be578063437823ec146103de5780634549b039146103fe578063457c194c1461041e57806349bd5a5e1461043e5761021a565b8063313ce567146103475780633685d4191461036957806339509351146103895780633b124fe7146103a95761021a565b80631694505e116101e25780631694505e146102bb57806318160ddd146102dd57806322976e0d146102f257806323b872dd146103075780632d838119146103275761021a565b8063061c82d01461021f57806306fdde0314610241578063095ea7b31461026c57806313114a9d146102995761021a565b3661021a57005b600080fd5b34801561022b57600080fd5b5061023f61023a36600461201d565b610646565b005b34801561024d57600080fd5b5061025661069c565b60405161026391906120e7565b60405180910390f35b34801561027857600080fd5b5061028c610287366004611fd8565b61072e565b60405161026391906120dc565b3480156102a557600080fd5b506102ae61074c565b604051610263919061243f565b3480156102c757600080fd5b506102d0610752565b604051610263919061208d565b3480156102e957600080fd5b506102ae610761565b3480156102fe57600080fd5b506102ae610767565b34801561031357600080fd5b5061028c610322366004611f98565b61076d565b34801561033357600080fd5b506102ae61034236600461201d565b6107f4565b34801561035357600080fd5b5061035c610837565b60405161026391906124ce565b34801561037557600080fd5b5061023f610384366004611f28565b610840565b34801561039557600080fd5b5061028c6103a4366004611fd8565b6109de565b3480156103b557600080fd5b506102ae610a2c565b3480156103ca57600080fd5b5061023f6103d936600461201d565b610a32565b3480156103ea57600080fd5b5061023f6103f9366004611f28565b610aef565b34801561040a57600080fd5b506102ae610419366004612035565b610b1b565b34801561042a57600080fd5b5061023f61043936600461201d565b610b7a565b34801561044a57600080fd5b506102d0610b9d565b34801561045f57600080fd5b5061028c610bac565b34801561047457600080fd5b5061023f610483366004611f28565b610bbc565b34801561049457600080fd5b5061028c6104a3366004611f28565b610cbd565b3480156104b457600080fd5b506102ae610cdb565b3480156104c957600080fd5b506102ae6104d8366004611f28565b610ce1565b3480156104e957600080fd5b5061023f610d43565b3480156104fe57600080fd5b5061028c61050d366004611f28565b610d57565b34801561051e57600080fd5b506102d0610d75565b34801561053357600080fd5b5061023f61054236600461201d565b610d84565b34801561055357600080fd5b50610256610da7565b34801561056857600080fd5b5061028c610577366004611fd8565b610db6565b34801561058857600080fd5b5061028c610597366004611fd8565b610e1e565b3480156105a857600080fd5b5061023f6105b7366004612003565b610e32565b3480156105c857600080fd5b506102d0610e8c565b3480156105dd57600080fd5b506102ae6105ec366004611f60565b610e9b565b3480156105fd57600080fd5b5061023f61060c366004611f28565b610ec6565b34801561061d57600080fd5b5061023f61062c366004611f28565b610eef565b34801561063d57600080fd5b506102ae610f26565b61064e610f4a565b600d819055601154600f546109c4919061066890846124dc565b61067291906124dc565b11156106995760405162461bcd60e51b815260040161069090612286565b60405180910390fd5b50565b6060600a80546106ab9061254a565b80601f01602080910402602001604051908101604052809291908181526020018280546106d79061254a565b80156107245780601f106106f957610100808354040283529160200191610724565b820191906000526020600020905b81548152906001019060200180831161070757829003601f168201915b5050505050905090565b600061074261073b610f89565b8484610f8d565b5060015b92915050565b60095490565b6013546001600160a01b031681565b60075490565b60115481565b600061077a848484611041565b6107ea84610786610f89565b6107e5856040518060600160405280602881526020016125cc602891396001600160a01b038a166000908152600360205260408120906107c4610f89565b6001600160a01b031681526020810191909152604001600020549190611183565b610f8d565b5060019392505050565b60006008548211156108185760405162461bcd60e51b81526004016106909061217d565b60006108226111af565b905061082e8382610f3e565b9150505b919050565b600c5460ff1690565b610848610f4a565b6001600160a01b03811660009081526005602052604090205460ff166108805760405162461bcd60e51b81526004016106909061224f565b60005b6006548110156109da57816001600160a01b0316600682815481106108b857634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b031614156109c857600680546108e390600190612533565b8154811061090157634e487b7160e01b600052603260045260246000fd5b600091825260209091200154600680546001600160a01b03909216918390811061093b57634e487b7160e01b600052603260045260246000fd5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600282526040808220829055600590925220805460ff1916905560068054806109a157634e487b7160e01b600052603160045260246000fd5b600082815260209020810160001990810180546001600160a01b03191690550190556109da565b806109d281612585565b915050610883565b5050565b60006107426109eb610f89565b846107e585600360006109fc610f89565b6001600160a01b03908116825260208083019390935260409182016000908120918c1681529252902054906111d2565b600d5481565b6000610a3c610f89565b6001600160a01b03811660009081526005602052604090205490915060ff1615610a785760405162461bcd60e51b8152600401610690906123f3565b6000610a83836111de565b5050506001600160a01b038616600090815260016020526040902054939450610ab193925084915050611239565b6001600160a01b038316600090815260016020526040902055600854610ad79082611239565b600855600954610ae790846111d2565b600955505050565b610af7610f4a565b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b6000600754831115610b3f5760405162461bcd60e51b8152600401610690906122b5565b81610b5f576000610b4f846111de565b5094965061074695505050505050565b6000610b6a846111de565b5093965061074695505050505050565b610b82610f4a565b6011819055600f54600d546109c491839161066891906124dc565b6014546001600160a01b031681565b601654600160a81b900460ff1681565b610bc4610f4a565b6001600160a01b03811660009081526005602052604090205460ff1615610bfd5760405162461bcd60e51b81526004016106909061224f565b6001600160a01b03811660009081526001602052604090205415610c57576001600160a01b038116600090815260016020526040902054610c3d906107f4565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600560205260408120805460ff191660019081179091556006805491820181559091527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0319169091179055565b6001600160a01b031660009081526004602052604090205460ff1690565b600f5481565b6001600160a01b03811660009081526005602052604081205460ff1615610d2157506001600160a01b038116600090815260026020526040902054610832565b6001600160a01b038216600090815260016020526040902054610746906107f4565b610d4b610f4a565b610d556000611245565b565b6001600160a01b031660009081526005602052604090205460ff1690565b6000546001600160a01b031690565b610d8c610f4a565b600f819055601154600d546109c491906106689084906124dc565b6060600b80546106ab9061254a565b6000610742610dc3610f89565b846107e5856040518060600160405280602581526020016125f46025913960036000610ded610f89565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190611183565b6000610742610e2b610f89565b8484611041565b610e3a610f4a565b6016805460ff60a81b1916600160a81b831515021790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15990610e819083906120dc565b60405180910390a150565b6015546001600160a01b031681565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b610ece610f4a565b6001600160a01b03166000908152600460205260409020805460ff19169055565b610ef7610f4a565b6001600160a01b038116610f1d5760405162461bcd60e51b8152600401610690906121c7565b61069981611245565b600181565b6000610f378284612514565b9392505050565b6000610f3782846124f4565b610f52610f89565b6001600160a01b0316610f63610d75565b6001600160a01b031614610d555760405162461bcd60e51b8152600401610690906122ec565b3390565b6001600160a01b038316610fb35760405162461bcd60e51b8152600401610690906123af565b6001600160a01b038216610fd95760405162461bcd60e51b81526004016106909061220d565b6001600160a01b0380841660008181526003602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061103490859061243f565b60405180910390a3505050565b6001600160a01b0383166110675760405162461bcd60e51b81526004016106909061236a565b6001600160a01b03821661108d5760405162461bcd60e51b81526004016106909061213a565b600081116110ad5760405162461bcd60e51b815260040161069090612321565b60006110b830610ce1565b601754909150811080159081906110d95750601654600160a01b900460ff16155b80156110f357506014546001600160a01b03868116911614155b80156111085750601654600160a81b900460ff165b1561111b57601754915061111b82611295565b61112483611336565b6001600160a01b03851660009081526004602052604090205460019060ff168061116657506001600160a01b03851660009081526004602052604090205460ff165b1561116f575060005b61117b8686868461139c565b505050505050565b600081848411156111a75760405162461bcd60e51b815260040161069091906120e7565b505050900390565b60008060006111bc61150a565b90925090506111cb8282610f3e565b9250505090565b6000610f3782846124dc565b60008060008060008060008060008060006111f88c6116c7565b935093509350935060008060006112198f8787876112146111af565b61171c565b919f509d509b509599509397509195509350505050919395979092949650565b6000610f378284612533565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6016805460ff60a01b1916600160a01b17905560006112b5826002610f3e565b905060006112c38383611239565b9050476112cf8361177e565b60006112db4783611239565b90506112e783826118fb565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56184828560405161131a939291906124b8565b60405180910390a150506016805460ff60a01b19169055505050565b600061135061271061134a84610190610f2b565b90610f3e565b90504781811115611397576016546040516001600160a01b039091169083156108fc029084906000818181858888f19350505050158015611395573d6000803e3d6000fd5b505b505050565b806113a9576113a96119ad565b6001600160a01b03841660009081526005602052604090205460ff1680156113ea57506001600160a01b03831660009081526005602052604090205460ff16155b156113ff576113fa8484846119f5565b6114fd565b6001600160a01b03841660009081526005602052604090205460ff1615801561144057506001600160a01b03831660009081526005602052604090205460ff165b15611450576113fa848484611b39565b6001600160a01b03841660009081526005602052604090205460ff1615801561149257506001600160a01b03831660009081526005602052604090205460ff16155b156114a2576113fa848484611bf8565b6001600160a01b03841660009081526005602052604090205460ff1680156114e257506001600160a01b03831660009081526005602052604090205460ff165b156114f2576113fa848484611c52565b6114fd848484611bf8565b8061139557611395611cdb565b6008546007546000918291825b6006548110156116955782600160006006848154811061154757634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b0316835282019290925260400190205411806115c0575081600260006006848154811061159957634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b156115d757600854600754945094505050506116c3565b61162b60016000600684815481106115ff57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020548490611239565b9250611681600260006006848154811061165557634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020548390611239565b91508061168d81612585565b915050611517565b506007546008546116a591610f3e565b8210156116bd576008546007549350935050506116c3565b90925090505b9091565b60008060008060006116d886611cef565b905060006116e587611d0c565b905060006116f288611d29565b9050600061170c8261170685818d89611239565b90611239565b9993985091965094509092505050565b600080808061172b8986610f2b565b905060006117398987610f2b565b905060006117478988610f2b565b905060006117558989610f2b565b905060006117698261170685818989611239565b949d949c50929a509298505050505050505050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106117c157634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152601354604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561181557600080fd5b505afa158015611829573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061184d9190611f44565b8160018151811061186e57634e487b7160e01b600052603260045260246000fd5b6001600160a01b0392831660209182029290920101526013546118949130911684610f8d565b60135460405163791ac94760e01b81526001600160a01b039091169063791ac947906118cd908590600090869030904290600401612448565b600060405180830381600087803b1580156118e757600080fd5b505af115801561117b573d6000803e3d6000fd5b6013546119139030906001600160a01b031684610f8d565b6013546001600160a01b031663f305d719823085600080611932610d75565b426040518863ffffffff1660e01b8152600401611954969594939291906120a1565b6060604051808303818588803b15801561196d57600080fd5b505af1158015611981573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906119a69190612060565b5050505050565b600d541580156119bd5750600f54155b80156119c95750601154155b156119d357610d55565b600d8054600e55600f8054601055601180546012556000928390559082905555565b6000806000806000806000611a09886111de565b9650965096509650965096509650611a4f88600260008d6001600160a01b03166001600160a01b031681526020019081526020016000205461123990919063ffffffff16565b6001600160a01b038b16600090815260026020908152604080832093909355600190522054611a7e9088611239565b6001600160a01b03808c1660009081526001602052604080822093909355908b1681522054611aad90876111d2565b6001600160a01b038a16600090815260016020526040902055611acf82611d5f565b611ad881611de7565b611ae28584611ef4565b886001600160a01b03168a6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051611b25919061243f565b60405180910390a350505050505050505050565b6000806000806000806000611b4d886111de565b9650965096509650965096509650611b9387600160008d6001600160a01b03166001600160a01b031681526020019081526020016000205461123990919063ffffffff16565b6001600160a01b03808c16600090815260016020908152604080832094909455918c16815260029091522054611bc990856111d2565b6001600160a01b038a16600090815260026020908152604080832093909355600190522054611aad90876111d2565b6000806000806000806000611c0c886111de565b9650965096509650965096509650611a7e87600160008d6001600160a01b03166001600160a01b031681526020019081526020016000205461123990919063ffffffff16565b6000806000806000806000611c66886111de565b9650965096509650965096509650611cac88600260008d6001600160a01b03166001600160a01b031681526020019081526020016000205461123990919063ffffffff16565b6001600160a01b038b16600090815260026020908152604080832093909355600190522054611b939088611239565b600e54600d55601054600f55601254601155565b600061074661271061134a600d5485610f2b90919063ffffffff16565b600061074661271061134a600f5485610f2b90919063ffffffff16565b6015546000906001600160a01b0316611d4457506000610832565b61074661271061134a60115485610f2b90919063ffffffff16565b6000611d696111af565b90506000611d778383610f2b565b30600090815260016020526040902054909150611d9490826111d2565b3060009081526001602090815260408083209390935560059052205460ff16156113975730600090815260026020526040902054611dd290846111d2565b30600090815260026020526040902055505050565b8015610699576000611df76111af565b90506000611e058383610f2b565b6015546001600160a01b0316600090815260016020526040902054909150611e2d90826111d2565b601580546001600160a01b03908116600090815260016020908152604080832095909555925490911681526005909152205460ff1615611ea8576015546001600160a01b0316600090815260026020526040902054611e8c90846111d2565b6015546001600160a01b03166000908152600260205260409020555b6015546001600160a01b0316611ebc610f89565b6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611034919061243f565b600854611f019083611239565b600855600954611f1190826111d2565b6009555050565b8035801515811461083257600080fd5b600060208284031215611f39578081fd5b8135610f37816125b6565b600060208284031215611f55578081fd5b8151610f37816125b6565b60008060408385031215611f72578081fd5b8235611f7d816125b6565b91506020830135611f8d816125b6565b809150509250929050565b600080600060608486031215611fac578081fd5b8335611fb7816125b6565b92506020840135611fc7816125b6565b929592945050506040919091013590565b60008060408385031215611fea578182fd5b8235611ff5816125b6565b946020939093013593505050565b600060208284031215612014578081fd5b610f3782611f18565b60006020828403121561202e578081fd5b5035919050565b60008060408385031215612047578182fd5b8235915061205760208401611f18565b90509250929050565b600080600060608486031215612074578283fd5b8351925060208401519150604084015190509250925092565b6001600160a01b0391909116815260200190565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b901515815260200190565b6000602080835283518082850152825b81811015612113578581018301518582016040015282016120f7565b818111156121245783604083870101525b50601f01601f1916929092016040019392505050565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b6020808252602a908201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260408201526965666c656374696f6e7360b01b606082015260800190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b60208082526022908201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604082015261737360f01b606082015260800190565b6020808252601b908201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604082015260600190565b602080825260159082015274546f74616c20666565206973206f7665722032352560581b604082015260600190565b6020808252601f908201527f416d6f756e74206d757374206265206c657373207468616e20737570706c7900604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526029908201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206040820152687468616e207a65726f60b81b606082015260800190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526024908201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646040820152637265737360e01b606082015260800190565b6020808252602c908201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460408201526b3434b990333ab731ba34b7b760a11b606082015260800190565b90815260200190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b818110156124975784516001600160a01b031683529383019391830191600101612472565b50506001600160a01b03969096166060850152505050608001529392505050565b9283526020830191909152604082015260600190565b60ff91909116815260200190565b600082198211156124ef576124ef6125a0565b500190565b60008261250f57634e487b7160e01b81526012600452602481fd5b500490565b600081600019048311821515161561252e5761252e6125a0565b500290565b600082821015612545576125456125a0565b500390565b60028104600182168061255e57607f821691505b6020821081141561257f57634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415612599576125996125a0565b5060010190565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b038116811461069957600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220ab8292dd21b86cfdb0512d32809e8ef4616b51da42b937937beb1d52b86d056364736f6c63430008010033",
"opcodes": "PUSH1 0xC0 PUSH1 0x40 MSTORE PUSH1 0x8 PUSH1 0x80 DUP2 SWAP1 MSTORE PUSH8 0x5761696620496E75 PUSH1 0xC0 SHL PUSH1 0xA0 SWAP1 DUP2 MSTORE PUSH3 0x2B SWAP2 PUSH1 0xA SWAP2 SWAP1 PUSH3 0x526 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x3 DUP1 DUP3 MSTORE PUSH3 0x2BA327 PUSH1 0xE9 SHL PUSH1 0x20 SWAP1 SWAP3 ADD SWAP2 DUP3 MSTORE PUSH3 0x58 SWAP2 PUSH1 0xB SWAP2 PUSH3 0x526 JUMP JUMPDEST POP PUSH1 0xC8 PUSH1 0xD SSTORE PUSH1 0xD SLOAD PUSH1 0xE SSTORE PUSH1 0xC8 PUSH1 0xF SSTORE PUSH1 0xF SLOAD PUSH1 0x10 SSTORE PUSH2 0x190 PUSH1 0x11 SSTORE PUSH1 0x11 SLOAD PUSH1 0x12 SSTORE CALLVALUE DUP1 ISZERO PUSH3 0x88 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x2E17 CODESIZE SUB DUP1 PUSH3 0x2E17 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0xAB SWAP2 PUSH3 0x606 JUMP JUMPDEST PUSH3 0xBF PUSH3 0xB9 PUSH3 0x4A0 JUMP JUMPDEST PUSH3 0x4A4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH3 0xF1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0xE8 SWAP1 PUSH3 0x696 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0xC DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x12 OR SWAP1 SSTORE PUSH15 0x13426172C74D822B878FE800000000 PUSH1 0x7 DUP2 SWAP1 SSTORE PUSH3 0x121 SWAP1 PUSH1 0x0 NOT PUSH3 0x776 JUMP JUMPDEST PUSH3 0x12F SWAP1 PUSH1 0x0 NOT PUSH3 0x71F JUMP JUMPDEST PUSH1 0x8 SSTORE PUSH1 0xD SLOAD PUSH1 0xE SSTORE PUSH1 0xF SLOAD PUSH1 0x10 SSTORE PUSH1 0x15 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP3 SSTORE PUSH1 0x16 DUP1 SLOAD SWAP1 SWAP2 AND SWAP2 DUP4 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0x11 SLOAD PUSH1 0x12 SSTORE PUSH1 0x7 SLOAD PUSH3 0x1AF SWAP1 PUSH2 0x2710 SWAP1 PUSH3 0x19B SWAP1 PUSH1 0x5 PUSH3 0x4F4 PUSH1 0x20 SWAP1 DUP2 SHL PUSH3 0xF2B OR SWAP1 SHR JUMP JUMPDEST PUSH3 0x509 PUSH1 0x20 SHL PUSH3 0xF3E OR SWAP1 SWAP2 SWAP1 PUSH1 0x20 SHR JUMP JUMPDEST PUSH1 0x17 SSTORE PUSH1 0x16 DUP1 SLOAD PUSH1 0xFF PUSH1 0xA8 SHL NOT AND PUSH1 0x1 PUSH1 0xA8 SHL OR SWAP1 SSTORE PUSH1 0x8 SLOAD PUSH1 0x1 PUSH1 0x0 PUSH3 0x1D6 PUSH3 0x517 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH1 0x0 DUP4 SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xC45A0155 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x239 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x24E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x274 SWAP2 SWAP1 PUSH3 0x5E9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xC9C65396 ADDRESS DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xAD5C4648 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x2BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x2D2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x2F8 SWAP2 SWAP1 PUSH3 0x5E9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x317 SWAP3 SWAP2 SWAP1 PUSH3 0x64F JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x332 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH3 0x347 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x36D SWAP2 SWAP1 PUSH3 0x5E9 JUMP JUMPDEST PUSH1 0x14 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND OR SWAP1 SWAP2 SSTORE PUSH1 0x13 DUP1 SLOAD SWAP1 SWAP2 AND SWAP2 DUP4 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0x1 PUSH1 0x4 PUSH1 0x0 PUSH3 0x3AC PUSH3 0x517 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 SWAP1 DUP2 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 DUP1 SLOAD SWAP5 ISZERO ISZERO PUSH1 0xFF NOT SWAP6 DUP7 AND OR SWAP1 SSTORE ADDRESS DUP2 MSTORE PUSH1 0x4 SWAP1 SWAP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD SWAP1 SWAP2 AND PUSH1 0x1 OR SWAP1 SSTORE PUSH3 0x3F6 PUSH3 0x517 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF PUSH1 0x7 SLOAD PUSH1 0x40 MLOAD PUSH3 0x43D SWAP2 SWAP1 PUSH3 0x6DD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 ADDRESS PUSH3 0x450 PUSH3 0x517 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x56358B41DF5FA59F5639228F0930994CBDDE383C8A8FD74E06C04E1DEEBE3562 PUSH1 0x2 PUSH1 0x1 PUSH1 0x40 MLOAD PUSH3 0x48E SWAP3 SWAP2 SWAP1 PUSH3 0x669 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP PUSH3 0x7B9 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x502 DUP3 DUP5 PUSH3 0x6FD JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x502 DUP3 DUP5 PUSH3 0x6E6 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH3 0x534 SWAP1 PUSH3 0x739 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH3 0x558 JUMPI PUSH1 0x0 DUP6 SSTORE PUSH3 0x5A3 JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH3 0x573 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x5A3 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x5A3 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x5A3 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x586 JUMP JUMPDEST POP PUSH3 0x5B1 SWAP3 SWAP2 POP PUSH3 0x5B5 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x5B1 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x5B6 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x5E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x5FB JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH3 0x502 DUP3 PUSH3 0x5CC JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH3 0x61B JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH3 0x626 DUP5 PUSH3 0x5CC JUMP JUMPDEST SWAP3 POP PUSH3 0x636 PUSH1 0x20 DUP6 ADD PUSH3 0x5CC JUMP JUMPDEST SWAP2 POP PUSH3 0x646 PUSH1 0x40 DUP6 ADD PUSH3 0x5CC JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH1 0x8 DUP5 LT PUSH3 0x68C JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP3 DUP2 MSTORE PUSH1 0x20 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x27 SWAP1 DUP3 ADD MSTORE PUSH32 0x43616E7420736574206D61726B6574696E67206164647265737320746F206164 PUSH1 0x40 DUP3 ADD MSTORE PUSH7 0x6472657373203 PUSH1 0xCC SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH3 0x6F8 JUMPI PUSH3 0x6F8 PUSH3 0x7A3 JUMP JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 NOT DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH3 0x71A JUMPI PUSH3 0x71A PUSH3 0x78D JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH3 0x734 JUMPI PUSH3 0x734 PUSH3 0x78D JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x2 DUP2 DIV PUSH1 0x1 DUP3 AND DUP1 PUSH3 0x74E JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH3 0x770 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH3 0x788 JUMPI PUSH3 0x788 PUSH3 0x7A3 JUMP JUMPDEST POP MOD SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0x264E DUP1 PUSH3 0x7C9 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x213 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4A74BB02 GT PUSH2 0x118 JUMPI DUP1 PUSH4 0x95D89B41 GT PUSH2 0xA0 JUMPI DUP1 PUSH4 0xCAAC7934 GT PUSH2 0x6F JUMPI DUP1 PUSH4 0xCAAC7934 EQ PUSH2 0x5BC JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x5D1 JUMPI DUP1 PUSH4 0xEA2F0B37 EQ PUSH2 0x5F1 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x611 JUMPI DUP1 PUSH4 0xFFA1AD74 EQ PUSH2 0x631 JUMPI PUSH2 0x21A JUMP JUMPDEST DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x547 JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x55C JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x57C JUMPI DUP1 PUSH4 0xC49B9A80 EQ PUSH2 0x59C JUMPI PUSH2 0x21A JUMP JUMPDEST DUP1 PUSH4 0x70A08231 GT PUSH2 0xE7 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x4BD JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x4DD JUMPI DUP1 PUSH4 0x88F82020 EQ PUSH2 0x4F2 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x512 JUMPI DUP1 PUSH4 0x8EE88C53 EQ PUSH2 0x527 JUMPI PUSH2 0x21A JUMP JUMPDEST DUP1 PUSH4 0x4A74BB02 EQ PUSH2 0x453 JUMPI DUP1 PUSH4 0x52390C02 EQ PUSH2 0x468 JUMPI DUP1 PUSH4 0x5342ACB4 EQ PUSH2 0x488 JUMPI DUP1 PUSH4 0x6BC87C3A EQ PUSH2 0x4A8 JUMPI PUSH2 0x21A JUMP JUMPDEST DUP1 PUSH4 0x313CE567 GT PUSH2 0x19B JUMPI DUP1 PUSH4 0x3BD5D173 GT PUSH2 0x16A JUMPI DUP1 PUSH4 0x3BD5D173 EQ PUSH2 0x3BE JUMPI DUP1 PUSH4 0x437823EC EQ PUSH2 0x3DE JUMPI DUP1 PUSH4 0x4549B039 EQ PUSH2 0x3FE JUMPI DUP1 PUSH4 0x457C194C EQ PUSH2 0x41E JUMPI DUP1 PUSH4 0x49BD5A5E EQ PUSH2 0x43E JUMPI PUSH2 0x21A JUMP JUMPDEST DUP1 PUSH4 0x313CE567 EQ PUSH2 0x347 JUMPI DUP1 PUSH4 0x3685D419 EQ PUSH2 0x369 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x389 JUMPI DUP1 PUSH4 0x3B124FE7 EQ PUSH2 0x3A9 JUMPI PUSH2 0x21A JUMP JUMPDEST DUP1 PUSH4 0x1694505E GT PUSH2 0x1E2 JUMPI DUP1 PUSH4 0x1694505E EQ PUSH2 0x2BB JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x2DD JUMPI DUP1 PUSH4 0x22976E0D EQ PUSH2 0x2F2 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x307 JUMPI DUP1 PUSH4 0x2D838119 EQ PUSH2 0x327 JUMPI PUSH2 0x21A JUMP JUMPDEST DUP1 PUSH4 0x61C82D0 EQ PUSH2 0x21F JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x241 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x26C JUMPI DUP1 PUSH4 0x13114A9D EQ PUSH2 0x299 JUMPI PUSH2 0x21A JUMP JUMPDEST CALLDATASIZE PUSH2 0x21A JUMPI STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x22B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x23F PUSH2 0x23A CALLDATASIZE PUSH1 0x4 PUSH2 0x201D JUMP JUMPDEST PUSH2 0x646 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x24D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x256 PUSH2 0x69C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x263 SWAP2 SWAP1 PUSH2 0x20E7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x278 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x28C PUSH2 0x287 CALLDATASIZE PUSH1 0x4 PUSH2 0x1FD8 JUMP JUMPDEST PUSH2 0x72E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x263 SWAP2 SWAP1 PUSH2 0x20DC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2AE PUSH2 0x74C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x263 SWAP2 SWAP1 PUSH2 0x243F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2D0 PUSH2 0x752 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x263 SWAP2 SWAP1 PUSH2 0x208D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2AE PUSH2 0x761 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2AE PUSH2 0x767 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x313 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x28C PUSH2 0x322 CALLDATASIZE PUSH1 0x4 PUSH2 0x1F98 JUMP JUMPDEST PUSH2 0x76D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x333 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2AE PUSH2 0x342 CALLDATASIZE PUSH1 0x4 PUSH2 0x201D JUMP JUMPDEST PUSH2 0x7F4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x353 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x35C PUSH2 0x837 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x263 SWAP2 SWAP1 PUSH2 0x24CE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x375 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x23F PUSH2 0x384 CALLDATASIZE PUSH1 0x4 PUSH2 0x1F28 JUMP JUMPDEST PUSH2 0x840 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x395 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x28C PUSH2 0x3A4 CALLDATASIZE PUSH1 0x4 PUSH2 0x1FD8 JUMP JUMPDEST PUSH2 0x9DE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2AE PUSH2 0xA2C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x23F PUSH2 0x3D9 CALLDATASIZE PUSH1 0x4 PUSH2 0x201D JUMP JUMPDEST PUSH2 0xA32 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x23F PUSH2 0x3F9 CALLDATASIZE PUSH1 0x4 PUSH2 0x1F28 JUMP JUMPDEST PUSH2 0xAEF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x40A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2AE PUSH2 0x419 CALLDATASIZE PUSH1 0x4 PUSH2 0x2035 JUMP JUMPDEST PUSH2 0xB1B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x42A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x23F PUSH2 0x439 CALLDATASIZE PUSH1 0x4 PUSH2 0x201D JUMP JUMPDEST PUSH2 0xB7A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x44A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2D0 PUSH2 0xB9D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x45F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x28C PUSH2 0xBAC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x474 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x23F PUSH2 0x483 CALLDATASIZE PUSH1 0x4 PUSH2 0x1F28 JUMP JUMPDEST PUSH2 0xBBC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x494 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x28C PUSH2 0x4A3 CALLDATASIZE PUSH1 0x4 PUSH2 0x1F28 JUMP JUMPDEST PUSH2 0xCBD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2AE PUSH2 0xCDB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2AE PUSH2 0x4D8 CALLDATASIZE PUSH1 0x4 PUSH2 0x1F28 JUMP JUMPDEST PUSH2 0xCE1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x23F PUSH2 0xD43 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x28C PUSH2 0x50D CALLDATASIZE PUSH1 0x4 PUSH2 0x1F28 JUMP JUMPDEST PUSH2 0xD57 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x51E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2D0 PUSH2 0xD75 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x533 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x23F PUSH2 0x542 CALLDATASIZE PUSH1 0x4 PUSH2 0x201D JUMP JUMPDEST PUSH2 0xD84 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x553 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x256 PUSH2 0xDA7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x568 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x28C PUSH2 0x577 CALLDATASIZE PUSH1 0x4 PUSH2 0x1FD8 JUMP JUMPDEST PUSH2 0xDB6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x588 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x28C PUSH2 0x597 CALLDATASIZE PUSH1 0x4 PUSH2 0x1FD8 JUMP JUMPDEST PUSH2 0xE1E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x23F PUSH2 0x5B7 CALLDATASIZE PUSH1 0x4 PUSH2 0x2003 JUMP JUMPDEST PUSH2 0xE32 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2D0 PUSH2 0xE8C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2AE PUSH2 0x5EC CALLDATASIZE PUSH1 0x4 PUSH2 0x1F60 JUMP JUMPDEST PUSH2 0xE9B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x23F PUSH2 0x60C CALLDATASIZE PUSH1 0x4 PUSH2 0x1F28 JUMP JUMPDEST PUSH2 0xEC6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x61D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x23F PUSH2 0x62C CALLDATASIZE PUSH1 0x4 PUSH2 0x1F28 JUMP JUMPDEST PUSH2 0xEEF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x63D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2AE PUSH2 0xF26 JUMP JUMPDEST PUSH2 0x64E PUSH2 0xF4A JUMP JUMPDEST PUSH1 0xD DUP2 SWAP1 SSTORE PUSH1 0x11 SLOAD PUSH1 0xF SLOAD PUSH2 0x9C4 SWAP2 SWAP1 PUSH2 0x668 SWAP1 DUP5 PUSH2 0x24DC JUMP JUMPDEST PUSH2 0x672 SWAP2 SWAP1 PUSH2 0x24DC JUMP JUMPDEST GT ISZERO PUSH2 0x699 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x690 SWAP1 PUSH2 0x2286 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0xA DUP1 SLOAD PUSH2 0x6AB SWAP1 PUSH2 0x254A JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x6D7 SWAP1 PUSH2 0x254A JUMP JUMPDEST DUP1 ISZERO PUSH2 0x724 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x6F9 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x724 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x707 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x742 PUSH2 0x73B PUSH2 0xF89 JUMP JUMPDEST DUP5 DUP5 PUSH2 0xF8D JUMP JUMPDEST POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x9 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x7 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x11 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x77A DUP5 DUP5 DUP5 PUSH2 0x1041 JUMP JUMPDEST PUSH2 0x7EA DUP5 PUSH2 0x786 PUSH2 0xF89 JUMP JUMPDEST PUSH2 0x7E5 DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x25CC PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP1 PUSH2 0x7C4 PUSH2 0xF89 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x1183 JUMP JUMPDEST PUSH2 0xF8D JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x8 SLOAD DUP3 GT ISZERO PUSH2 0x818 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x690 SWAP1 PUSH2 0x217D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x822 PUSH2 0x11AF JUMP JUMPDEST SWAP1 POP PUSH2 0x82E DUP4 DUP3 PUSH2 0xF3E JUMP JUMPDEST SWAP2 POP POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0xC SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x848 PUSH2 0xF4A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x880 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x690 SWAP1 PUSH2 0x224F JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x6 SLOAD DUP2 LT ISZERO PUSH2 0x9DA JUMPI DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x6 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x8B8 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x9C8 JUMPI PUSH1 0x6 DUP1 SLOAD PUSH2 0x8E3 SWAP1 PUSH1 0x1 SWAP1 PUSH2 0x2533 JUMP JUMPDEST DUP2 SLOAD DUP2 LT PUSH2 0x901 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x6 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 DUP4 SWAP1 DUP2 LT PUSH2 0x93B JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP2 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND OR SWAP1 SSTORE SWAP2 DUP5 AND DUP2 MSTORE PUSH1 0x2 DUP3 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP3 SWAP1 SSTORE PUSH1 0x5 SWAP1 SWAP3 MSTORE KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE PUSH1 0x6 DUP1 SLOAD DUP1 PUSH2 0x9A1 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x31 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 SWAP1 KECCAK256 DUP2 ADD PUSH1 0x0 NOT SWAP1 DUP2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SSTORE ADD SWAP1 SSTORE PUSH2 0x9DA JUMP JUMPDEST DUP1 PUSH2 0x9D2 DUP2 PUSH2 0x2585 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x883 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x742 PUSH2 0x9EB PUSH2 0xF89 JUMP JUMPDEST DUP5 PUSH2 0x7E5 DUP6 PUSH1 0x3 PUSH1 0x0 PUSH2 0x9FC PUSH2 0xF89 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP13 AND DUP2 MSTORE SWAP3 MSTORE SWAP1 KECCAK256 SLOAD SWAP1 PUSH2 0x11D2 JUMP JUMPDEST PUSH1 0xD SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA3C PUSH2 0xF89 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 SWAP2 POP PUSH1 0xFF AND ISZERO PUSH2 0xA78 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x690 SWAP1 PUSH2 0x23F3 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA83 DUP4 PUSH2 0x11DE JUMP JUMPDEST POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP4 SWAP5 POP PUSH2 0xAB1 SWAP4 SWAP3 POP DUP5 SWAP2 POP POP PUSH2 0x1239 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH1 0x8 SLOAD PUSH2 0xAD7 SWAP1 DUP3 PUSH2 0x1239 JUMP JUMPDEST PUSH1 0x8 SSTORE PUSH1 0x9 SLOAD PUSH2 0xAE7 SWAP1 DUP5 PUSH2 0x11D2 JUMP JUMPDEST PUSH1 0x9 SSTORE POP POP POP JUMP JUMPDEST PUSH2 0xAF7 PUSH2 0xF4A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x7 SLOAD DUP4 GT ISZERO PUSH2 0xB3F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x690 SWAP1 PUSH2 0x22B5 JUMP JUMPDEST DUP2 PUSH2 0xB5F JUMPI PUSH1 0x0 PUSH2 0xB4F DUP5 PUSH2 0x11DE JUMP JUMPDEST POP SWAP5 SWAP7 POP PUSH2 0x746 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB6A DUP5 PUSH2 0x11DE JUMP JUMPDEST POP SWAP4 SWAP7 POP PUSH2 0x746 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0xB82 PUSH2 0xF4A JUMP JUMPDEST PUSH1 0x11 DUP2 SWAP1 SSTORE PUSH1 0xF SLOAD PUSH1 0xD SLOAD PUSH2 0x9C4 SWAP2 DUP4 SWAP2 PUSH2 0x668 SWAP2 SWAP1 PUSH2 0x24DC JUMP JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x1 PUSH1 0xA8 SHL SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0xBC4 PUSH2 0xF4A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0xBFD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x690 SWAP1 PUSH2 0x224F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO PUSH2 0xC57 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xC3D SWAP1 PUSH2 0x7F4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x6 DUP1 SLOAD SWAP2 DUP3 ADD DUP2 SSTORE SWAP1 SWAP2 MSTORE PUSH32 0xF652222313E28459528D920B65115C16C04F3EFC82AAEDC97BE59F3F377C0D3F ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0xF SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0xD21 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x832 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x746 SWAP1 PUSH2 0x7F4 JUMP JUMPDEST PUSH2 0xD4B PUSH2 0xF4A JUMP JUMPDEST PUSH2 0xD55 PUSH1 0x0 PUSH2 0x1245 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0xD8C PUSH2 0xF4A JUMP JUMPDEST PUSH1 0xF DUP2 SWAP1 SSTORE PUSH1 0x11 SLOAD PUSH1 0xD SLOAD PUSH2 0x9C4 SWAP2 SWAP1 PUSH2 0x668 SWAP1 DUP5 SWAP1 PUSH2 0x24DC JUMP JUMPDEST PUSH1 0x60 PUSH1 0xB DUP1 SLOAD PUSH2 0x6AB SWAP1 PUSH2 0x254A JUMP JUMPDEST PUSH1 0x0 PUSH2 0x742 PUSH2 0xDC3 PUSH2 0xF89 JUMP JUMPDEST DUP5 PUSH2 0x7E5 DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x25F4 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x3 PUSH1 0x0 PUSH2 0xDED PUSH2 0xF89 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP14 AND DUP2 MSTORE SWAP3 MSTORE SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x1183 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x742 PUSH2 0xE2B PUSH2 0xF89 JUMP JUMPDEST DUP5 DUP5 PUSH2 0x1041 JUMP JUMPDEST PUSH2 0xE3A PUSH2 0xF4A JUMP JUMPDEST PUSH1 0x16 DUP1 SLOAD PUSH1 0xFF PUSH1 0xA8 SHL NOT AND PUSH1 0x1 PUSH1 0xA8 SHL DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0x53726DFCAF90650AA7EB35524F4D3220F07413C8D6CB404CC8C18BF5591BC159 SWAP1 PUSH2 0xE81 SWAP1 DUP4 SWAP1 PUSH2 0x20DC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x15 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0xECE PUSH2 0xF4A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xEF7 PUSH2 0xF4A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xF1D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x690 SWAP1 PUSH2 0x21C7 JUMP JUMPDEST PUSH2 0x699 DUP2 PUSH2 0x1245 JUMP JUMPDEST PUSH1 0x1 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF37 DUP3 DUP5 PUSH2 0x2514 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF37 DUP3 DUP5 PUSH2 0x24F4 JUMP JUMPDEST PUSH2 0xF52 PUSH2 0xF89 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xF63 PUSH2 0xD75 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xD55 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x690 SWAP1 PUSH2 0x22EC JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0xFB3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x690 SWAP1 PUSH2 0x23AF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xFD9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x690 SWAP1 PUSH2 0x220D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 SWAP1 SWAP2 MSTORE SWAP1 DUP2 SWAP1 KECCAK256 DUP5 SWAP1 SSTORE MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP1 PUSH2 0x1034 SWAP1 DUP6 SWAP1 PUSH2 0x243F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x1067 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x690 SWAP1 PUSH2 0x236A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x108D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x690 SWAP1 PUSH2 0x213A JUMP JUMPDEST PUSH1 0x0 DUP2 GT PUSH2 0x10AD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x690 SWAP1 PUSH2 0x2321 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x10B8 ADDRESS PUSH2 0xCE1 JUMP JUMPDEST PUSH1 0x17 SLOAD SWAP1 SWAP2 POP DUP2 LT DUP1 ISZERO SWAP1 DUP2 SWAP1 PUSH2 0x10D9 JUMPI POP PUSH1 0x16 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x10F3 JUMPI POP PUSH1 0x14 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND SWAP2 AND EQ ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x1108 JUMPI POP PUSH1 0x16 SLOAD PUSH1 0x1 PUSH1 0xA8 SHL SWAP1 DIV PUSH1 0xFF AND JUMPDEST ISZERO PUSH2 0x111B JUMPI PUSH1 0x17 SLOAD SWAP2 POP PUSH2 0x111B DUP3 PUSH2 0x1295 JUMP JUMPDEST PUSH2 0x1124 DUP4 PUSH2 0x1336 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 SWAP1 PUSH1 0xFF AND DUP1 PUSH2 0x1166 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST ISZERO PUSH2 0x116F JUMPI POP PUSH1 0x0 JUMPDEST PUSH2 0x117B DUP7 DUP7 DUP7 DUP5 PUSH2 0x139C JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x11A7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x690 SWAP2 SWAP1 PUSH2 0x20E7 JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x11BC PUSH2 0x150A JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x11CB DUP3 DUP3 PUSH2 0xF3E JUMP JUMPDEST SWAP3 POP POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF37 DUP3 DUP5 PUSH2 0x24DC JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x11F8 DUP13 PUSH2 0x16C7 JUMP JUMPDEST SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1219 DUP16 DUP8 DUP8 DUP8 PUSH2 0x1214 PUSH2 0x11AF JUMP JUMPDEST PUSH2 0x171C JUMP JUMPDEST SWAP2 SWAP16 POP SWAP14 POP SWAP12 POP SWAP6 SWAP10 POP SWAP4 SWAP8 POP SWAP2 SWAP6 POP SWAP4 POP POP POP POP SWAP2 SWAP4 SWAP6 SWAP8 SWAP1 SWAP3 SWAP5 SWAP7 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF37 DUP3 DUP5 PUSH2 0x2533 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x16 DUP1 SLOAD PUSH1 0xFF PUSH1 0xA0 SHL NOT AND PUSH1 0x1 PUSH1 0xA0 SHL OR SWAP1 SSTORE PUSH1 0x0 PUSH2 0x12B5 DUP3 PUSH1 0x2 PUSH2 0xF3E JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x12C3 DUP4 DUP4 PUSH2 0x1239 JUMP JUMPDEST SWAP1 POP SELFBALANCE PUSH2 0x12CF DUP4 PUSH2 0x177E JUMP JUMPDEST PUSH1 0x0 PUSH2 0x12DB SELFBALANCE DUP4 PUSH2 0x1239 JUMP JUMPDEST SWAP1 POP PUSH2 0x12E7 DUP4 DUP3 PUSH2 0x18FB JUMP JUMPDEST PUSH32 0x17BBFB9A6069321B6DED73BD96327C9E6B7212A5CD51FF219CD61370ACAFB561 DUP5 DUP3 DUP6 PUSH1 0x40 MLOAD PUSH2 0x131A SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x24B8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP PUSH1 0x16 DUP1 SLOAD PUSH1 0xFF PUSH1 0xA0 SHL NOT AND SWAP1 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1350 PUSH2 0x2710 PUSH2 0x134A DUP5 PUSH2 0x190 PUSH2 0xF2B JUMP JUMPDEST SWAP1 PUSH2 0xF3E JUMP JUMPDEST SWAP1 POP SELFBALANCE DUP2 DUP2 GT ISZERO PUSH2 0x1397 JUMPI PUSH1 0x16 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 DUP4 ISZERO PUSH2 0x8FC MUL SWAP1 DUP5 SWAP1 PUSH1 0x0 DUP2 DUP2 DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x1395 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP JUMPDEST POP POP POP JUMP JUMPDEST DUP1 PUSH2 0x13A9 JUMPI PUSH2 0x13A9 PUSH2 0x19AD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP1 ISZERO PUSH2 0x13EA JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO JUMPDEST ISZERO PUSH2 0x13FF JUMPI PUSH2 0x13FA DUP5 DUP5 DUP5 PUSH2 0x19F5 JUMP JUMPDEST PUSH2 0x14FD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0x1440 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST ISZERO PUSH2 0x1450 JUMPI PUSH2 0x13FA DUP5 DUP5 DUP5 PUSH2 0x1B39 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0x1492 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO JUMPDEST ISZERO PUSH2 0x14A2 JUMPI PUSH2 0x13FA DUP5 DUP5 DUP5 PUSH2 0x1BF8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP1 ISZERO PUSH2 0x14E2 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST ISZERO PUSH2 0x14F2 JUMPI PUSH2 0x13FA DUP5 DUP5 DUP5 PUSH2 0x1C52 JUMP JUMPDEST PUSH2 0x14FD DUP5 DUP5 DUP5 PUSH2 0x1BF8 JUMP JUMPDEST DUP1 PUSH2 0x1395 JUMPI PUSH2 0x1395 PUSH2 0x1CDB JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH1 0x7 SLOAD PUSH1 0x0 SWAP2 DUP3 SWAP2 DUP3 JUMPDEST PUSH1 0x6 SLOAD DUP2 LT ISZERO PUSH2 0x1695 JUMPI DUP3 PUSH1 0x1 PUSH1 0x0 PUSH1 0x6 DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x1547 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 ADD SWAP1 KECCAK256 SLOAD GT DUP1 PUSH2 0x15C0 JUMPI POP DUP2 PUSH1 0x2 PUSH1 0x0 PUSH1 0x6 DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x1599 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 ADD SWAP1 KECCAK256 SLOAD GT JUMPDEST ISZERO PUSH2 0x15D7 JUMPI PUSH1 0x8 SLOAD PUSH1 0x7 SLOAD SWAP5 POP SWAP5 POP POP POP POP PUSH2 0x16C3 JUMP JUMPDEST PUSH2 0x162B PUSH1 0x1 PUSH1 0x0 PUSH1 0x6 DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x15FF JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 ADD SWAP1 KECCAK256 SLOAD DUP5 SWAP1 PUSH2 0x1239 JUMP JUMPDEST SWAP3 POP PUSH2 0x1681 PUSH1 0x2 PUSH1 0x0 PUSH1 0x6 DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x1655 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 ADD SWAP1 KECCAK256 SLOAD DUP4 SWAP1 PUSH2 0x1239 JUMP JUMPDEST SWAP2 POP DUP1 PUSH2 0x168D DUP2 PUSH2 0x2585 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x1517 JUMP JUMPDEST POP PUSH1 0x7 SLOAD PUSH1 0x8 SLOAD PUSH2 0x16A5 SWAP2 PUSH2 0xF3E JUMP JUMPDEST DUP3 LT ISZERO PUSH2 0x16BD JUMPI PUSH1 0x8 SLOAD PUSH1 0x7 SLOAD SWAP4 POP SWAP4 POP POP POP PUSH2 0x16C3 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP JUMPDEST SWAP1 SWAP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x16D8 DUP7 PUSH2 0x1CEF JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x16E5 DUP8 PUSH2 0x1D0C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x16F2 DUP9 PUSH2 0x1D29 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x170C DUP3 PUSH2 0x1706 DUP6 DUP2 DUP14 DUP10 PUSH2 0x1239 JUMP JUMPDEST SWAP1 PUSH2 0x1239 JUMP JUMPDEST SWAP10 SWAP4 SWAP9 POP SWAP2 SWAP7 POP SWAP5 POP SWAP1 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP1 PUSH2 0x172B DUP10 DUP7 PUSH2 0xF2B JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1739 DUP10 DUP8 PUSH2 0xF2B JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1747 DUP10 DUP9 PUSH2 0xF2B JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1755 DUP10 DUP10 PUSH2 0xF2B JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1769 DUP3 PUSH2 0x1706 DUP6 DUP2 DUP10 DUP10 PUSH2 0x1239 JUMP JUMPDEST SWAP5 SWAP14 SWAP5 SWAP13 POP SWAP3 SWAP11 POP SWAP3 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP3 ADD DUP4 MSTORE PUSH1 0x0 SWAP3 PUSH1 0x20 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP ADDRESS DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x17C1 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x20 SWAP2 DUP3 MUL SWAP3 SWAP1 SWAP3 ADD DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x13 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x15AB88C9 PUSH1 0xE3 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP1 SWAP4 AND SWAP3 PUSH4 0xAD5C4648 SWAP3 PUSH1 0x4 DUP1 DUP4 ADD SWAP4 SWAP2 SWAP3 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1815 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1829 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x184D SWAP2 SWAP1 PUSH2 0x1F44 JUMP JUMPDEST DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x186E JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x20 SWAP2 DUP3 MUL SWAP3 SWAP1 SWAP3 ADD ADD MSTORE PUSH1 0x13 SLOAD PUSH2 0x1894 SWAP2 ADDRESS SWAP2 AND DUP5 PUSH2 0xF8D JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH1 0x40 MLOAD PUSH4 0x791AC947 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x791AC947 SWAP1 PUSH2 0x18CD SWAP1 DUP6 SWAP1 PUSH1 0x0 SWAP1 DUP7 SWAP1 ADDRESS SWAP1 TIMESTAMP SWAP1 PUSH1 0x4 ADD PUSH2 0x2448 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x18E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x117B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x13 SLOAD PUSH2 0x1913 SWAP1 ADDRESS SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH2 0xF8D JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xF305D719 DUP3 ADDRESS DUP6 PUSH1 0x0 DUP1 PUSH2 0x1932 PUSH2 0xD75 JUMP JUMPDEST TIMESTAMP PUSH1 0x40 MLOAD DUP9 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1954 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x20A1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x196D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1981 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x19A6 SWAP2 SWAP1 PUSH2 0x2060 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0xD SLOAD ISZERO DUP1 ISZERO PUSH2 0x19BD JUMPI POP PUSH1 0xF SLOAD ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x19C9 JUMPI POP PUSH1 0x11 SLOAD ISZERO JUMPDEST ISZERO PUSH2 0x19D3 JUMPI PUSH2 0xD55 JUMP JUMPDEST PUSH1 0xD DUP1 SLOAD PUSH1 0xE SSTORE PUSH1 0xF DUP1 SLOAD PUSH1 0x10 SSTORE PUSH1 0x11 DUP1 SLOAD PUSH1 0x12 SSTORE PUSH1 0x0 SWAP3 DUP4 SWAP1 SSTORE SWAP1 DUP3 SWAP1 SSTORE SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1A09 DUP9 PUSH2 0x11DE JUMP JUMPDEST SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP PUSH2 0x1A4F DUP9 PUSH1 0x2 PUSH1 0x0 DUP14 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x1239 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE PUSH1 0x1 SWAP1 MSTORE KECCAK256 SLOAD PUSH2 0x1A7E SWAP1 DUP9 PUSH2 0x1239 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP13 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP12 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x1AAD SWAP1 DUP8 PUSH2 0x11D2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH2 0x1ACF DUP3 PUSH2 0x1D5F JUMP JUMPDEST PUSH2 0x1AD8 DUP2 PUSH2 0x1DE7 JUMP JUMPDEST PUSH2 0x1AE2 DUP6 DUP5 PUSH2 0x1EF4 JUMP JUMPDEST DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP7 PUSH1 0x40 MLOAD PUSH2 0x1B25 SWAP2 SWAP1 PUSH2 0x243F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1B4D DUP9 PUSH2 0x11DE JUMP JUMPDEST SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP PUSH2 0x1B93 DUP8 PUSH1 0x1 PUSH1 0x0 DUP14 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x1239 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP13 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE SWAP2 DUP13 AND DUP2 MSTORE PUSH1 0x2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH2 0x1BC9 SWAP1 DUP6 PUSH2 0x11D2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE PUSH1 0x1 SWAP1 MSTORE KECCAK256 SLOAD PUSH2 0x1AAD SWAP1 DUP8 PUSH2 0x11D2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1C0C DUP9 PUSH2 0x11DE JUMP JUMPDEST SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP PUSH2 0x1A7E DUP8 PUSH1 0x1 PUSH1 0x0 DUP14 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x1239 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1C66 DUP9 PUSH2 0x11DE JUMP JUMPDEST SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP PUSH2 0x1CAC DUP9 PUSH1 0x2 PUSH1 0x0 DUP14 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x1239 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE PUSH1 0x1 SWAP1 MSTORE KECCAK256 SLOAD PUSH2 0x1B93 SWAP1 DUP9 PUSH2 0x1239 JUMP JUMPDEST PUSH1 0xE SLOAD PUSH1 0xD SSTORE PUSH1 0x10 SLOAD PUSH1 0xF SSTORE PUSH1 0x12 SLOAD PUSH1 0x11 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x746 PUSH2 0x2710 PUSH2 0x134A PUSH1 0xD SLOAD DUP6 PUSH2 0xF2B SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x0 PUSH2 0x746 PUSH2 0x2710 PUSH2 0x134A PUSH1 0xF SLOAD DUP6 PUSH2 0xF2B SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x15 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1D44 JUMPI POP PUSH1 0x0 PUSH2 0x832 JUMP JUMPDEST PUSH2 0x746 PUSH2 0x2710 PUSH2 0x134A PUSH1 0x11 SLOAD DUP6 PUSH2 0xF2B SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D69 PUSH2 0x11AF JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1D77 DUP4 DUP4 PUSH2 0xF2B JUMP JUMPDEST ADDRESS PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 SWAP2 POP PUSH2 0x1D94 SWAP1 DUP3 PUSH2 0x11D2 JUMP JUMPDEST ADDRESS PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE PUSH1 0x5 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x1397 JUMPI ADDRESS PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x1DD2 SWAP1 DUP5 PUSH2 0x11D2 JUMP JUMPDEST ADDRESS PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE POP POP POP JUMP JUMPDEST DUP1 ISZERO PUSH2 0x699 JUMPI PUSH1 0x0 PUSH2 0x1DF7 PUSH2 0x11AF JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1E05 DUP4 DUP4 PUSH2 0xF2B JUMP JUMPDEST PUSH1 0x15 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 SWAP2 POP PUSH2 0x1E2D SWAP1 DUP3 PUSH2 0x11D2 JUMP JUMPDEST PUSH1 0x15 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP6 SWAP1 SWAP6 SSTORE SWAP3 SLOAD SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x5 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x1EA8 JUMPI PUSH1 0x15 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x1E8C SWAP1 DUP5 PUSH2 0x11D2 JUMP JUMPDEST PUSH1 0x15 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE JUMPDEST PUSH1 0x15 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1EBC PUSH2 0xF89 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP6 PUSH1 0x40 MLOAD PUSH2 0x1034 SWAP2 SWAP1 PUSH2 0x243F JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH2 0x1F01 SWAP1 DUP4 PUSH2 0x1239 JUMP JUMPDEST PUSH1 0x8 SSTORE PUSH1 0x9 SLOAD PUSH2 0x1F11 SWAP1 DUP3 PUSH2 0x11D2 JUMP JUMPDEST PUSH1 0x9 SSTORE POP POP JUMP JUMPDEST DUP1 CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x832 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1F39 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xF37 DUP2 PUSH2 0x25B6 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1F55 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xF37 DUP2 PUSH2 0x25B6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1F72 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x1F7D DUP2 PUSH2 0x25B6 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x1F8D DUP2 PUSH2 0x25B6 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1FAC JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x1FB7 DUP2 PUSH2 0x25B6 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x1FC7 DUP2 PUSH2 0x25B6 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1FEA JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x1FF5 DUP2 PUSH2 0x25B6 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2014 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0xF37 DUP3 PUSH2 0x1F18 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x202E JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2047 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH2 0x2057 PUSH1 0x20 DUP5 ADD PUSH2 0x1F18 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2074 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 MLOAD SWAP3 POP PUSH1 0x20 DUP5 ADD MLOAD SWAP2 POP PUSH1 0x40 DUP5 ADD MLOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP7 DUP8 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0x40 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x60 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 SWAP3 AND PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xC0 ADD SWAP1 JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE DUP3 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2113 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0x20F7 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x2124 JUMPI DUP4 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x23 SWAP1 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E7366657220746F20746865207A65726F2061646472 PUSH1 0x40 DUP3 ADD MSTORE PUSH3 0x657373 PUSH1 0xE8 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2A SWAP1 DUP3 ADD MSTORE PUSH32 0x416D6F756E74206D757374206265206C657373207468616E20746F74616C2072 PUSH1 0x40 DUP3 ADD MSTORE PUSH10 0x65666C656374696F6E73 PUSH1 0xB0 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x26 SWAP1 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x40 DUP3 ADD MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x22 SWAP1 DUP3 ADD MSTORE PUSH32 0x45524332303A20617070726F766520746F20746865207A65726F206164647265 PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x7373 PUSH1 0xF0 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1B SWAP1 DUP3 ADD MSTORE PUSH32 0x4163636F756E7420697320616C7265616479206578636C756465640000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x15 SWAP1 DUP3 ADD MSTORE PUSH21 0x546F74616C20666565206973206F76657220323525 PUSH1 0x58 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1F SWAP1 DUP3 ADD MSTORE PUSH32 0x416D6F756E74206D757374206265206C657373207468616E20737570706C7900 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP2 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x29 SWAP1 DUP3 ADD MSTORE PUSH32 0x5472616E7366657220616D6F756E74206D757374206265206772656174657220 PUSH1 0x40 DUP3 ADD MSTORE PUSH9 0x7468616E207A65726F PUSH1 0xB8 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x25 SWAP1 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E736665722066726F6D20746865207A65726F206164 PUSH1 0x40 DUP3 ADD MSTORE PUSH5 0x6472657373 PUSH1 0xD8 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x24 SWAP1 DUP3 ADD MSTORE PUSH32 0x45524332303A20617070726F76652066726F6D20746865207A65726F20616464 PUSH1 0x40 DUP3 ADD MSTORE PUSH4 0x72657373 PUSH1 0xE0 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2C SWAP1 DUP3 ADD MSTORE PUSH32 0x4578636C75646564206164647265737365732063616E6E6F742063616C6C2074 PUSH1 0x40 DUP3 ADD MSTORE PUSH12 0x3434B990333AB731BA34B7B7 PUSH1 0xA1 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA0 DUP3 ADD DUP8 DUP4 MSTORE PUSH1 0x20 DUP8 DUP2 DUP6 ADD MSTORE PUSH1 0xA0 PUSH1 0x40 DUP6 ADD MSTORE DUP2 DUP8 MLOAD DUP1 DUP5 MSTORE PUSH1 0xC0 DUP7 ADD SWAP2 POP DUP3 DUP10 ADD SWAP4 POP DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2497 JUMPI DUP5 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP4 DUP4 ADD SWAP4 SWAP2 DUP4 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x2472 JUMP JUMPDEST POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP7 SWAP1 SWAP7 AND PUSH1 0x60 DUP6 ADD MSTORE POP POP POP PUSH1 0x80 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0xFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x24EF JUMPI PUSH2 0x24EF PUSH2 0x25A0 JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x250F JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 DUP2 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 NOT DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x252E JUMPI PUSH2 0x252E PUSH2 0x25A0 JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x2545 JUMPI PUSH2 0x2545 PUSH2 0x25A0 JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x2 DUP2 DIV PUSH1 0x1 DUP3 AND DUP1 PUSH2 0x255E JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH2 0x257F JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x0 NOT DUP3 EQ ISZERO PUSH2 0x2599 JUMPI PUSH2 0x2599 PUSH2 0x25A0 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x699 JUMPI PUSH1 0x0 DUP1 REVERT INVALID GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH21 0x72616E7366657220616D6F756E7420657863656564 PUSH20 0x20616C6C6F77616E636545524332303A20646563 PUSH19 0x656173656420616C6C6F77616E63652062656C PUSH16 0x77207A65726FA2646970667358221220 0xAB DUP3 SWAP3 0xDD 0x21 0xB8 PUSH13 0xFDB0512D32809E8EF4616B51DA TIMESTAMP 0xB9 CALLDATACOPY SWAP4 PUSH28 0xEB1D52B86D056364736F6C6343000801003300000000000000000000 ",
"sourceMap": "1010:33:6:-:0;399:22131;1010:33;;399:22131;1010:33;;;-1:-1:-1;;;1010:33:6;;;;;;;;;;:::i;:::-;-1:-1:-1;1049:30:6;;;;;;;;;;;;;-1:-1:-1;;;1049:30:6;;;;;;;;;;;;:::i;:::-;;1140:3;1115:28;;1183:7;;1149:41;;1228:3;1197:34;;1277:13;;1237:53;;1328:3;1297:34;;1377:13;;1337:53;;2033:1441;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;936:32:0;955:12;:10;:12::i;:::-;936:18;:32::i;:::-;-1:-1:-1;;;;;2171:31:6;;2150:117;;;;-1:-1:-1;;;2150:117:6;;;;;;;:::i;:::-;;;;;;;;;2278:9;:14;;-1:-1:-1;;2278:14:6;2290:2;2278:14;;;2313:36;2303:7;:46;;;2377:13;;-1:-1:-1;;2377:13:6;:::i;:::-;2370:21;;-1:-1:-1;;2370:21:6;:::i;:::-;2359:7;:33;2421:7;;2403:15;:25;2463:13;;2439:21;:37;2487:17;:37;;-1:-1:-1;;;;;;2487:37:6;;;-1:-1:-1;;;;;2487:37:6;;;;;;;;;;2534:11;:25;;;;;;;;;;;;;;2593:13;;2569:21;:37;2649:7;;:25;;2668:5;;2649:14;;2661:1;2649:11;;;;;;;:14;;:::i;:::-;:18;;;;;;:25;;;;:::i;:::-;2617:29;:57;2694:21;:28;;-1:-1:-1;;;;2694:28:6;-1:-1:-1;;;2694:28:6;;;2752:7;;2718:4;2694:28;2741:7;:5;:7::i;:::-;-1:-1:-1;;;;;2733:16:6;-1:-1:-1;;;;;2733:16:6;;;;;;;;;;;;:26;;;;2770:35;2827:7;2770:65;;2931:16;-1:-1:-1;;;;;2931:24:6;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2913:69:6;;2991:4;2998:16;-1:-1:-1;;;;;2998:21:6;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2913:109;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2897:13;:125;;-1:-1:-1;;;;;;2897:125:6;;;-1:-1:-1;;;;;2897:125:6;;;;;;;3083:15;:34;;;;;;;;;;;;;;-1:-1:-1;3180:18:6;-1:-1:-1;3199:7:6;:5;:7::i;:::-;-1:-1:-1;;;;;3180:27:6;;;;;;;;;;;;;;;-1:-1:-1;3180:27:6;;;:34;;;;;-1:-1:-1;;3180:34:6;;;;;;3251:4;3224:33;;:18;:33;;;;;:40;;;;;3180:34;3224:40;;;3301:7;:5;:7::i;:::-;-1:-1:-1;;;;;3280:38:6;3297:1;-1:-1:-1;;;;;3280:38:6;;3310:7;;3280:38;;;;;;:::i;:::-;;;;;;;;3389:4;3360:7;:5;:7::i;:::-;-1:-1:-1;;;;;3334:133:6;;3408:28;550:1;3334:133;;;;;;;:::i;:::-;;;;;;;;2033:1441;;;;399:22131;;640:96:3;719:10;640:96;:::o;2433:187:0:-;2506:16;2525:6;;-1:-1:-1;;;;;2541:17:0;;;-1:-1:-1;;;;;;2541:17:0;;;;;;2573:40;;2525:6;;;;;;;2573:40;;2506:16;2573:40;2433:187;;:::o;3465:96:4:-;3523:7;3549:5;3553:1;3549;:5;:::i;:::-;3542:12;3465:96;-1:-1:-1;;;3465:96:4:o;3850:::-;3908:7;3934:5;3938:1;3934;:5;:::i;1201:85:0:-;1247:7;1273:6;-1:-1:-1;;;;;1273:6:0;1201:85;:::o;399:22131:6:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;399:22131:6;;;-1:-1:-1;399:22131:6;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:179:9;95:13;;-1:-1:-1;;;;;137:31:9;;127:42;;117:2;;183:1;180;173:12;117:2;76:117;;;:::o;198:220::-;;321:2;309:9;300:7;296:23;292:32;289:2;;;342:6;334;327:22;289:2;370:42;402:9;370:42;:::i;423:394::-;;;;580:2;568:9;559:7;555:23;551:32;548:2;;;601:6;593;586:22;548:2;629:42;661:9;629:42;:::i;:::-;619:52;;690:51;737:2;726:9;722:18;690:51;:::i;:::-;680:61;;760:51;807:2;796:9;792:18;760:51;:::i;:::-;750:61;;538:279;;;;;:::o;822:304::-;-1:-1:-1;;;;;1052:15:9;;;1034:34;;1104:15;;1099:2;1084:18;;1077:43;984:2;969:18;;951:175::o;1131:412::-;1304:2;1289:18;;1337:1;1326:13;;1316:2;;1382:10;1377:3;1373:20;1370:1;1363:31;1417:4;1414:1;1407:15;1445:4;1442:1;1435:15;1316:2;1469:25;;;1525:2;1510:18;1503:34;1271:272;:::o;1548:403::-;1750:2;1732:21;;;1789:2;1769:18;;;1762:30;1828:34;1823:2;1808:18;;1801:62;-1:-1:-1;;;1894:2:9;1879:18;;1872:37;1941:3;1926:19;;1722:229::o;1956:177::-;2102:25;;;2090:2;2075:18;;2057:76::o;2138:120::-;;2204:1;2194:2;;2209:18;;:::i;:::-;-1:-1:-1;2243:9:9;;2184:74::o;2263:168::-;;2369:1;2365;2361:6;2357:14;2354:1;2351:21;2346:1;2339:9;2332:17;2328:45;2325:2;;;2376:18;;:::i;:::-;-1:-1:-1;2416:9:9;;2315:116::o;2436:125::-;;2504:1;2501;2498:8;2495:2;;;2509:18;;:::i;:::-;-1:-1:-1;2546:9:9;;2485:76::o;2566:380::-;2651:1;2641:12;;2698:1;2688:12;;;2709:2;;2763:4;2755:6;2751:17;2741:27;;2709:2;2816;2808:6;2805:14;2785:18;2782:38;2779:2;;;2862:10;2857:3;2853:20;2850:1;2843:31;2897:4;2894:1;2887:15;2925:4;2922:1;2915:15;2779:2;;2621:325;;;:::o;2951:112::-;;3009:1;2999:2;;3014:18;;:::i;:::-;-1:-1:-1;3048:9:9;;2989:74::o;3068:127::-;3129:10;3124:3;3120:20;3117:1;3110:31;3160:4;3157:1;3150:15;3184:4;3181:1;3174:15;3200:127;3261:10;3256:3;3252:20;3249:1;3242:31;3292:4;3289:1;3282:15;3316:4;3313:1;3306:15;3232:95;399:22131:6;;;;;;"
},
"deployedBytecode": {
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:12579:9",
"statements": [
{
"nodeType": "YulBlock",
"src": "6:3:9",
"statements": []
},
{
"body": {
"nodeType": "YulBlock",
"src": "62:114:9",
"statements": [
{
"nodeType": "YulAssignment",
"src": "72:29:9",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "94:6:9"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "81:12:9"
},
"nodeType": "YulFunctionCall",
"src": "81:20:9"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "72:5:9"
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "154:16:9",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "163:1:9",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "166:1:9",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "156:6:9"
},
"nodeType": "YulFunctionCall",
"src": "156:12:9"
},
"nodeType": "YulExpressionStatement",
"src": "156:12:9"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "123:5:9"
},
{
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "144:5:9"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "137:6:9"
},
"nodeType": "YulFunctionCall",
"src": "137:13:9"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "130:6:9"
},
"nodeType": "YulFunctionCall",
"src": "130:21:9"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "120:2:9"
},
"nodeType": "YulFunctionCall",
"src": "120:32:9"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "113:6:9"
},
"nodeType": "YulFunctionCall",
"src": "113:40:9"
},
"nodeType": "YulIf",
"src": "110:2:9"
}
]
},
"name": "abi_decode_t_bool",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "41:6:9",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "52:5:9",
"type": ""
}
],
"src": "14:162:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "251:189:9",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "297:26:9",
"statements": [
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "306:6:9"
},
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "314:6:9"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "299:6:9"
},
"nodeType": "YulFunctionCall",
"src": "299:22:9"
},
"nodeType": "YulExpressionStatement",
"src": "299:22:9"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "272:7:9"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "281:9:9"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "268:3:9"
},
"nodeType": "YulFunctionCall",
"src": "268:23:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "293:2:9",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "264:3:9"
},
"nodeType": "YulFunctionCall",
"src": "264:32:9"
},
"nodeType": "YulIf",
"src": "261:2:9"
},
{
"nodeType": "YulVariableDeclaration",
"src": "332:36:9",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "358:9:9"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "345:12:9"
},
"nodeType": "YulFunctionCall",
"src": "345:23:9"
},
"variables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "336:5:9",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "404:5:9"
}
],
"functionName": {
"name": "validator_revert_t_address",
"nodeType": "YulIdentifier",
"src": "377:26:9"
},
"nodeType": "YulFunctionCall",
"src": "377:33:9"
},
"nodeType": "YulExpressionStatement",
"src": "377:33:9"
},
{
"nodeType": "YulAssignment",
"src": "419:15:9",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "429:5:9"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "419:6:9"
}
]
}
]
},
"name": "abi_decode_tuple_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "217:9:9",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "228:7:9",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "240:6:9",
"type": ""
}
],
"src": "181:259:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "526:182:9",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "572:26:9",
"statements": [
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "581:6:9"
},
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "589:6:9"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "574:6:9"
},
"nodeType": "YulFunctionCall",
"src": "574:22:9"
},
"nodeType": "YulExpressionStatement",
"src": "574:22:9"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "547:7:9"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "556:9:9"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "543:3:9"
},
"nodeType": "YulFunctionCall",
"src": "543:23:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "568:2:9",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "539:3:9"
},
"nodeType": "YulFunctionCall",
"src": "539:32:9"
},
"nodeType": "YulIf",
"src": "536:2:9"
},
{
"nodeType": "YulVariableDeclaration",
"src": "607:29:9",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "626:9:9"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "620:5:9"
},
"nodeType": "YulFunctionCall",
"src": "620:16:9"
},
"variables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "611:5:9",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "672:5:9"
}
],
"functionName": {
"name": "validator_revert_t_address",
"nodeType": "YulIdentifier",
"src": "645:26:9"
},
"nodeType": "YulFunctionCall",
"src": "645:33:9"
},
"nodeType": "YulExpressionStatement",
"src": "645:33:9"
},
{
"nodeType": "YulAssignment",
"src": "687:15:9",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "697:5:9"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "687:6:9"
}
]
}
]
},
"name": "abi_decode_tuple_t_address_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "492:9:9",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "503:7:9",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "515:6:9",
"type": ""
}
],
"src": "445:263:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "800:315:9",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "846:26:9",
"statements": [
{
"expression": {
"arguments": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "855:6:9"
},
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "863:6:9"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "848:6:9"
},
"nodeType": "YulFunctionCall",
"src": "848:22:9"
},
"nodeType": "YulExpressionStatement",
"src": "848:22:9"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "821:7:9"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "830:9:9"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "817:3:9"
},
"nodeType": "YulFunctionCall",
"src": "817:23:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "842:2:9",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "813:3:9"
},
"nodeType": "YulFunctionCall",
"src": "813:32:9"
},
"nodeType": "YulIf",
"src": "810:2:9"
},
{
"nodeType": "YulVariableDeclaration",
"src": "881:36:9",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "907:9:9"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "894:12:9"
},
"nodeType": "YulFunctionCall",
"src": "894:23:9"
},
"variables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "885:5:9",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "953:5:9"
}
],
"functionName": {
"name": "validator_revert_t_address",
"nodeType": "YulIdentifier",
"src": "926:26:9"
},
"nodeType": "YulFunctionCall",
"src": "926:33:9"
},
"nodeType": "YulExpressionStatement",
"src": "926:33:9"
},
{
"nodeType": "YulAssignment",
"src": "968:15:9",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "978:5:9"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "968:6:9"
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "992:47:9",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1024:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1035:2:9",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1020:3:9"
},
"nodeType": "YulFunctionCall",
"src": "1020:18:9"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "1007:12:9"
},
"nodeType": "YulFunctionCall",
"src": "1007:32:9"
},
"variables": [
{
"name": "value_1",
"nodeType": "YulTypedName",
"src": "996:7:9",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "value_1",
"nodeType": "YulIdentifier",
"src": "1075:7:9"
}
],
"functionName": {
"name": "validator_revert_t_address",
"nodeType": "YulIdentifier",
"src": "1048:26:9"
},
"nodeType": "YulFunctionCall",
"src": "1048:35:9"
},
"nodeType": "YulExpressionStatement",
"src": "1048:35:9"
},
{
"nodeType": "YulAssignment",
"src": "1092:17:9",
"value": {
"name": "value_1",
"nodeType": "YulIdentifier",
"src": "1102:7:9"
},
"variableNames": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "1092:6:9"
}
]
}
]
},
"name": "abi_decode_tuple_t_addresst_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "758:9:9",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "769:7:9",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "781:6:9",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "789:6:9",
"type": ""
}
],
"src": "713:402:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1224:366:9",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "1270:26:9",
"statements": [
{
"expression": {
"arguments": [
{
"name": "value2",
"nodeType": "YulIdentifier",
"src": "1279:6:9"
},
{
"name": "value2",
"nodeType": "YulIdentifier",
"src": "1287:6:9"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "1272:6:9"
},
"nodeType": "YulFunctionCall",
"src": "1272:22:9"
},
"nodeType": "YulExpressionStatement",
"src": "1272:22:9"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "1245:7:9"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1254:9:9"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "1241:3:9"
},
"nodeType": "YulFunctionCall",
"src": "1241:23:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1266:2:9",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "1237:3:9"
},
"nodeType": "YulFunctionCall",
"src": "1237:32:9"
},
"nodeType": "YulIf",
"src": "1234:2:9"
},
{
"nodeType": "YulVariableDeclaration",
"src": "1305:36:9",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1331:9:9"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "1318:12:9"
},
"nodeType": "YulFunctionCall",
"src": "1318:23:9"
},
"variables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1309:5:9",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1377:5:9"
}
],
"functionName": {
"name": "validator_revert_t_address",
"nodeType": "YulIdentifier",
"src": "1350:26:9"
},
"nodeType": "YulFunctionCall",
"src": "1350:33:9"
},
"nodeType": "YulExpressionStatement",
"src": "1350:33:9"
},
{
"nodeType": "YulAssignment",
"src": "1392:15:9",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "1402:5:9"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "1392:6:9"
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "1416:47:9",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1448:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1459:2:9",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1444:3:9"
},
"nodeType": "YulFunctionCall",
"src": "1444:18:9"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "1431:12:9"
},
"nodeType": "YulFunctionCall",
"src": "1431:32:9"
},
"variables": [
{
"name": "value_1",
"nodeType": "YulTypedName",
"src": "1420:7:9",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "value_1",
"nodeType": "YulIdentifier",
"src": "1499:7:9"
}
],
"functionName": {
"name": "validator_revert_t_address",
"nodeType": "YulIdentifier",
"src": "1472:26:9"
},
"nodeType": "YulFunctionCall",
"src": "1472:35:9"
},
"nodeType": "YulExpressionStatement",
"src": "1472:35:9"
},
{
"nodeType": "YulAssignment",
"src": "1516:17:9",
"value": {
"name": "value_1",
"nodeType": "YulIdentifier",
"src": "1526:7:9"
},
"variableNames": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "1516:6:9"
}
]
},
{
"nodeType": "YulAssignment",
"src": "1542:42:9",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1569:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1580:2:9",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1565:3:9"
},
"nodeType": "YulFunctionCall",
"src": "1565:18:9"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "1552:12:9"
},
"nodeType": "YulFunctionCall",
"src": "1552:32:9"
},
"variableNames": [
{
"name": "value2",
"nodeType": "YulIdentifier",
"src": "1542:6:9"
}
]
}
]
},
"name": "abi_decode_tuple_t_addresst_addresst_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "1174:9:9",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "1185:7:9",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "1197:6:9",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "1205:6:9",
"type": ""
},
{
"name": "value2",
"nodeType": "YulTypedName",
"src": "1213:6:9",
"type": ""
}
],
"src": "1120:470:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1682:240:9",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "1728:26:9",
"statements": [
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "1737:6:9"
},
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "1745:6:9"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "1730:6:9"
},
"nodeType": "YulFunctionCall",
"src": "1730:22:9"
},
"nodeType": "YulExpressionStatement",
"src": "1730:22:9"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "1703:7:9"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1712:9:9"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "1699:3:9"
},
"nodeType": "YulFunctionCall",
"src": "1699:23:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1724:2:9",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "1695:3:9"
},
"nodeType": "YulFunctionCall",
"src": "1695:32:9"
},
"nodeType": "YulIf",
"src": "1692:2:9"
},
{
"nodeType": "YulVariableDeclaration",
"src": "1763:36:9",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1789:9:9"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "1776:12:9"
},
"nodeType": "YulFunctionCall",
"src": "1776:23:9"
},
"variables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1767:5:9",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1835:5:9"
}
],
"functionName": {
"name": "validator_revert_t_address",
"nodeType": "YulIdentifier",
"src": "1808:26:9"
},
"nodeType": "YulFunctionCall",
"src": "1808:33:9"
},
"nodeType": "YulExpressionStatement",
"src": "1808:33:9"
},
{
"nodeType": "YulAssignment",
"src": "1850:15:9",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "1860:5:9"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "1850:6:9"
}
]
},
{
"nodeType": "YulAssignment",
"src": "1874:42:9",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1901:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1912:2:9",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1897:3:9"
},
"nodeType": "YulFunctionCall",
"src": "1897:18:9"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "1884:12:9"
},
"nodeType": "YulFunctionCall",
"src": "1884:32:9"
},
"variableNames": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "1874:6:9"
}
]
}
]
},
"name": "abi_decode_tuple_t_addresst_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "1640:9:9",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "1651:7:9",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "1663:6:9",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "1671:6:9",
"type": ""
}
],
"src": "1595:327:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1994:125:9",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "2040:26:9",
"statements": [
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "2049:6:9"
},
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "2057:6:9"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "2042:6:9"
},
"nodeType": "YulFunctionCall",
"src": "2042:22:9"
},
"nodeType": "YulExpressionStatement",
"src": "2042:22:9"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "2015:7:9"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2024:9:9"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "2011:3:9"
},
"nodeType": "YulFunctionCall",
"src": "2011:23:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2036:2:9",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "2007:3:9"
},
"nodeType": "YulFunctionCall",
"src": "2007:32:9"
},
"nodeType": "YulIf",
"src": "2004:2:9"
},
{
"nodeType": "YulAssignment",
"src": "2075:38:9",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2103:9:9"
}
],
"functionName": {
"name": "abi_decode_t_bool",
"nodeType": "YulIdentifier",
"src": "2085:17:9"
},
"nodeType": "YulFunctionCall",
"src": "2085:28:9"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "2075:6:9"
}
]
}
]
},
"name": "abi_decode_tuple_t_bool",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "1960:9:9",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "1971:7:9",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "1983:6:9",
"type": ""
}
],
"src": "1927:192:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2194:120:9",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "2240:26:9",
"statements": [
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "2249:6:9"
},
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "2257:6:9"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "2242:6:9"
},
"nodeType": "YulFunctionCall",
"src": "2242:22:9"
},
"nodeType": "YulExpressionStatement",
"src": "2242:22:9"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "2215:7:9"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2224:9:9"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "2211:3:9"
},
"nodeType": "YulFunctionCall",
"src": "2211:23:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2236:2:9",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "2207:3:9"
},
"nodeType": "YulFunctionCall",
"src": "2207:32:9"
},
"nodeType": "YulIf",
"src": "2204:2:9"
},
{
"nodeType": "YulAssignment",
"src": "2275:33:9",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2298:9:9"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "2285:12:9"
},
"nodeType": "YulFunctionCall",
"src": "2285:23:9"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "2275:6:9"
}
]
}
]
},
"name": "abi_decode_tuple_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "2160:9:9",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "2171:7:9",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "2183:6:9",
"type": ""
}
],
"src": "2124:190:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2403:176:9",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "2449:26:9",
"statements": [
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "2458:6:9"
},
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "2466:6:9"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "2451:6:9"
},
"nodeType": "YulFunctionCall",
"src": "2451:22:9"
},
"nodeType": "YulExpressionStatement",
"src": "2451:22:9"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "2424:7:9"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2433:9:9"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "2420:3:9"
},
"nodeType": "YulFunctionCall",
"src": "2420:23:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2445:2:9",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "2416:3:9"
},
"nodeType": "YulFunctionCall",
"src": "2416:32:9"
},
"nodeType": "YulIf",
"src": "2413:2:9"
},
{
"nodeType": "YulAssignment",
"src": "2484:33:9",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2507:9:9"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "2494:12:9"
},
"nodeType": "YulFunctionCall",
"src": "2494:23:9"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "2484:6:9"
}
]
},
{
"nodeType": "YulAssignment",
"src": "2526:47:9",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2558:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2569:2:9",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2554:3:9"
},
"nodeType": "YulFunctionCall",
"src": "2554:18:9"
}
],
"functionName": {
"name": "abi_decode_t_bool",
"nodeType": "YulIdentifier",
"src": "2536:17:9"
},
"nodeType": "YulFunctionCall",
"src": "2536:37:9"
},
"variableNames": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "2526:6:9"
}
]
}
]
},
"name": "abi_decode_tuple_t_uint256t_bool",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "2361:9:9",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "2372:7:9",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "2384:6:9",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "2392:6:9",
"type": ""
}
],
"src": "2319:260:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2699:201:9",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "2745:26:9",
"statements": [
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "2754:6:9"
},
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "2762:6:9"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "2747:6:9"
},
"nodeType": "YulFunctionCall",
"src": "2747:22:9"
},
"nodeType": "YulExpressionStatement",
"src": "2747:22:9"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "2720:7:9"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2729:9:9"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "2716:3:9"
},
"nodeType": "YulFunctionCall",
"src": "2716:23:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2741:2:9",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "2712:3:9"
},
"nodeType": "YulFunctionCall",
"src": "2712:32:9"
},
"nodeType": "YulIf",
"src": "2709:2:9"
},
{
"nodeType": "YulAssignment",
"src": "2780:26:9",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2796:9:9"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "2790:5:9"
},
"nodeType": "YulFunctionCall",
"src": "2790:16:9"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "2780:6:9"
}
]
},
{
"nodeType": "YulAssignment",
"src": "2815:35:9",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2835:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2846:2:9",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2831:3:9"
},
"nodeType": "YulFunctionCall",
"src": "2831:18:9"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "2825:5:9"
},
"nodeType": "YulFunctionCall",
"src": "2825:25:9"
},
"variableNames": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "2815:6:9"
}
]
},
{
"nodeType": "YulAssignment",
"src": "2859:35:9",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2879:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2890:2:9",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2875:3:9"
},
"nodeType": "YulFunctionCall",
"src": "2875:18:9"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "2869:5:9"
},
"nodeType": "YulFunctionCall",
"src": "2869:25:9"
},
"variableNames": [
{
"name": "value2",
"nodeType": "YulIdentifier",
"src": "2859:6:9"
}
]
}
]
},
"name": "abi_decode_tuple_t_uint256t_uint256t_uint256_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "2649:9:9",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "2660:7:9",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "2672:6:9",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "2680:6:9",
"type": ""
},
{
"name": "value2",
"nodeType": "YulTypedName",
"src": "2688:6:9",
"type": ""
}
],
"src": "2584:316:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3006:102:9",
"statements": [
{
"nodeType": "YulAssignment",
"src": "3016:26:9",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3028:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3039:2:9",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3024:3:9"
},
"nodeType": "YulFunctionCall",
"src": "3024:18:9"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "3016:4:9"
}
]
},
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3058:9:9"
},
{
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "3073:6:9"
},
{
"arguments": [
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3089:3:9",
"type": "",
"value": "160"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3094:1:9",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "3085:3:9"
},
"nodeType": "YulFunctionCall",
"src": "3085:11:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3098:1:9",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "3081:3:9"
},
"nodeType": "YulFunctionCall",
"src": "3081:19:9"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "3069:3:9"
},
"nodeType": "YulFunctionCall",
"src": "3069:32:9"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3051:6:9"
},
"nodeType": "YulFunctionCall",
"src": "3051:51:9"
},
"nodeType": "YulExpressionStatement",
"src": "3051:51:9"
}
]
},
"name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "2975:9:9",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "2986:6:9",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "2997:4:9",
"type": ""
}
],
"src": "2905:203:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3370:350:9",
"statements": [
{
"nodeType": "YulAssignment",
"src": "3380:27:9",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3392:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3403:3:9",
"type": "",
"value": "192"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3388:3:9"
},
"nodeType": "YulFunctionCall",
"src": "3388:19:9"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "3380:4:9"
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "3416:29:9",
"value": {
"arguments": [
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3434:3:9",
"type": "",
"value": "160"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3439:1:9",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "3430:3:9"
},
"nodeType": "YulFunctionCall",
"src": "3430:11:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3443:1:9",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "3426:3:9"
},
"nodeType": "YulFunctionCall",
"src": "3426:19:9"
},
"variables": [
{
"name": "_1",
"nodeType": "YulTypedName",
"src": "3420:2:9",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3461:9:9"
},
{
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "3476:6:9"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "3484:2:9"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "3472:3:9"
},
"nodeType": "YulFunctionCall",
"src": "3472:15:9"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3454:6:9"
},
"nodeType": "YulFunctionCall",
"src": "3454:34:9"
},
"nodeType": "YulExpressionStatement",
"src": "3454:34:9"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3508:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3519:2:9",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3504:3:9"
},
"nodeType": "YulFunctionCall",
"src": "3504:18:9"
},
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "3524:6:9"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3497:6:9"
},
"nodeType": "YulFunctionCall",
"src": "3497:34:9"
},
"nodeType": "YulExpressionStatement",
"src": "3497:34:9"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3551:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3562:2:9",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3547:3:9"
},
"nodeType": "YulFunctionCall",
"src": "3547:18:9"
},
{
"name": "value2",
"nodeType": "YulIdentifier",
"src": "3567:6:9"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3540:6:9"
},
"nodeType": "YulFunctionCall",
"src": "3540:34:9"
},
"nodeType": "YulExpressionStatement",
"src": "3540:34:9"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3594:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3605:2:9",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3590:3:9"
},
"nodeType": "YulFunctionCall",
"src": "3590:18:9"
},
{
"name": "value3",
"nodeType": "YulIdentifier",
"src": "3610:6:9"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3583:6:9"
},
"nodeType": "YulFunctionCall",
"src": "3583:34:9"
},
"nodeType": "YulExpressionStatement",
"src": "3583:34:9"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3637:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3648:3:9",
"type": "",
"value": "128"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3633:3:9"
},
"nodeType": "YulFunctionCall",
"src": "3633:19:9"
},
{
"arguments": [
{
"name": "value4",
"nodeType": "YulIdentifier",
"src": "3658:6:9"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "3666:2:9"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "3654:3:9"
},
"nodeType": "YulFunctionCall",
"src": "3654:15:9"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3626:6:9"
},
"nodeType": "YulFunctionCall",
"src": "3626:44:9"
},
"nodeType": "YulExpressionStatement",
"src": "3626:44:9"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3690:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3701:3:9",
"type": "",
"value": "160"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3686:3:9"
},
"nodeType": "YulFunctionCall",
"src": "3686:19:9"
},
{
"name": "value5",
"nodeType": "YulIdentifier",
"src": "3707:6:9"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3679:6:9"
},
"nodeType": "YulFunctionCall",
"src": "3679:35:9"
},
"nodeType": "YulExpressionStatement",
"src": "3679:35:9"
}
]
},
"name": "abi_encode_tuple_t_address_t_uint256_t_rational_0_by_1_t_rational_0_by_1_t_address_t_uint256__to_t_address_t_uint256_t_uint256_t_uint256_t_address_t_uint256__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "3299:9:9",
"type": ""
},
{
"name": "value5",
"nodeType": "YulTypedName",
"src": "3310:6:9",
"type": ""
},
{
"name": "value4",
"nodeType": "YulTypedName",
"src": "3318:6:9",
"type": ""
},
{
"name": "value3",
"nodeType": "YulTypedName",
"src": "3326:6:9",
"type": ""
},
{
"name": "value2",
"nodeType": "YulTypedName",
"src": "3334:6:9",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "3342:6:9",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "3350:6:9",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "3361:4:9",
"type": ""
}
],
"src": "3113:607:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3820:92:9",
"statements": [
{
"nodeType": "YulAssignment",
"src": "3830:26:9",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3842:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3853:2:9",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3838:3:9"
},
"nodeType": "YulFunctionCall",
"src": "3838:18:9"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "3830:4:9"
}
]
},
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3872:9:9"
},
{
"arguments": [
{
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "3897:6:9"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "3890:6:9"
},
"nodeType": "YulFunctionCall",
"src": "3890:14:9"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "3883:6:9"
},
"nodeType": "YulFunctionCall",
"src": "3883:22:9"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3865:6:9"
},
"nodeType": "YulFunctionCall",
"src": "3865:41:9"
},
"nodeType": "YulExpressionStatement",
"src": "3865:41:9"
}
]
},
"name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "3789:9:9",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "3800:6:9",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "3811:4:9",
"type": ""
}
],
"src": "3725:187:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4045:102:9",
"statements": [
{
"nodeType": "YulAssignment",
"src": "4055:26:9",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4067:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4078:2:9",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4063:3:9"
},
"nodeType": "YulFunctionCall",
"src": "4063:18:9"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "4055:4:9"
}
]
},
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4097:9:9"
},
{
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "4112:6:9"
},
{
"arguments": [
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4128:3:9",
"type": "",
"value": "160"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4133:1:9",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "4124:3:9"
},
"nodeType": "YulFunctionCall",
"src": "4124:11:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4137:1:9",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "4120:3:9"
},
"nodeType": "YulFunctionCall",
"src": "4120:19:9"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "4108:3:9"
},
"nodeType": "YulFunctionCall",
"src": "4108:32:9"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "4090:6:9"
},
"nodeType": "YulFunctionCall",
"src": "4090:51:9"
},
"nodeType": "YulExpressionStatement",
"src": "4090:51:9"
}
]
},
"name": "abi_encode_tuple_t_contract$_IUniswapV2Router02_$3451__to_t_address__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "4014:9:9",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "4025:6:9",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "4036:4:9",
"type": ""
}
],
"src": "3917:230:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4273:482:9",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "4283:12:9",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "4293:2:9",
"type": "",
"value": "32"
},
"variables": [
{
"name": "_1",
"nodeType": "YulTypedName",
"src": "4287:2:9",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4311:9:9"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "4322:2:9"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "4304:6:9"
},
"nodeType": "YulFunctionCall",
"src": "4304:21:9"
},
"nodeType": "YulExpressionStatement",
"src": "4304:21:9"
},
{
"nodeType": "YulVariableDeclaration",
"src": "4334:27:9",
"value": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "4354:6:9"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "4348:5:9"
},
"nodeType": "YulFunctionCall",
"src": "4348:13:9"
},
"variables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "4338:6:9",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4381:9:9"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "4392:2:9"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4377:3:9"
},
"nodeType": "YulFunctionCall",
"src": "4377:18:9"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "4397:6:9"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "4370:6:9"
},
"nodeType": "YulFunctionCall",
"src": "4370:34:9"
},
"nodeType": "YulExpressionStatement",
"src": "4370:34:9"
},
{
"nodeType": "YulVariableDeclaration",
"src": "4413:13:9",
"value": {
"name": "tail",
"nodeType": "YulIdentifier",
"src": "4422:4:9"
},
"variables": [
{
"name": "i",
"nodeType": "YulTypedName",
"src": "4417:1:9",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "4485:90:9",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4514:9:9"
},
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "4525:1:9"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4510:3:9"
},
"nodeType": "YulFunctionCall",
"src": "4510:17:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4529:2:9",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4506:3:9"
},
"nodeType": "YulFunctionCall",
"src": "4506:26:9"
},
{
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "4548:6:9"
},
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "4556:1:9"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4544:3:9"
},
"nodeType": "YulFunctionCall",
"src": "4544:14:9"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "4560:2:9"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4540:3:9"
},
"nodeType": "YulFunctionCall",
"src": "4540:23:9"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "4534:5:9"
},
"nodeType": "YulFunctionCall",
"src": "4534:30:9"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "4499:6:9"
},
"nodeType": "YulFunctionCall",
"src": "4499:66:9"
},
"nodeType": "YulExpressionStatement",
"src": "4499:66:9"
}
]
},
"condition": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "4446:1:9"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "4449:6:9"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "4443:2:9"
},
"nodeType": "YulFunctionCall",
"src": "4443:13:9"
},
"nodeType": "YulForLoop",
"post": {
"nodeType": "YulBlock",
"src": "4457:19:9",
"statements": [
{
"nodeType": "YulAssignment",
"src": "4459:15:9",
"value": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "4468:1:9"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "4471:2:9"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4464:3:9"
},
"nodeType": "YulFunctionCall",
"src": "4464:10:9"
},
"variableNames": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "4459:1:9"
}
]
}
]
},
"pre": {
"nodeType": "YulBlock",
"src": "4439:3:9",
"statements": []
},
"src": "4435:140:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4609:69:9",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4638:9:9"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "4649:6:9"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4634:3:9"
},
"nodeType": "YulFunctionCall",
"src": "4634:22:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4658:2:9",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4630:3:9"
},
"nodeType": "YulFunctionCall",
"src": "4630:31:9"
},
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "4663:4:9"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "4623:6:9"
},
"nodeType": "YulFunctionCall",
"src": "4623:45:9"
},
"nodeType": "YulExpressionStatement",
"src": "4623:45:9"
}
]
},
"condition": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "4590:1:9"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "4593:6:9"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "4587:2:9"
},
"nodeType": "YulFunctionCall",
"src": "4587:13:9"
},
"nodeType": "YulIf",
"src": "4584:2:9"
},
{
"nodeType": "YulAssignment",
"src": "4687:62:9",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4703:9:9"
},
{
"arguments": [
{
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "4722:6:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4730:2:9",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4718:3:9"
},
"nodeType": "YulFunctionCall",
"src": "4718:15:9"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4739:2:9",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "4735:3:9"
},
"nodeType": "YulFunctionCall",
"src": "4735:7:9"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "4714:3:9"
},
"nodeType": "YulFunctionCall",
"src": "4714:29:9"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4699:3:9"
},
"nodeType": "YulFunctionCall",
"src": "4699:45:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4746:2:9",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4695:3:9"
},
"nodeType": "YulFunctionCall",
"src": "4695:54:9"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "4687:4:9"
}
]
}
]
},
"name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "4242:9:9",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "4253:6:9",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "4264:4:9",
"type": ""
}
],
"src": "4152:603:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4934:225:9",
"statements": [
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4951:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4962:2:9",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "4944:6:9"
},
"nodeType": "YulFunctionCall",
"src": "4944:21:9"
},
"nodeType": "YulExpressionStatement",
"src": "4944:21:9"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4985:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4996:2:9",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4981:3:9"
},
"nodeType": "YulFunctionCall",
"src": "4981:18:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5001:2:9",
"type": "",
"value": "35"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "4974:6:9"
},
"nodeType": "YulFunctionCall",
"src": "4974:30:9"
},
"nodeType": "YulExpressionStatement",
"src": "4974:30:9"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5024:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5035:2:9",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5020:3:9"
},
"nodeType": "YulFunctionCall",
"src": "5020:18:9"
},
{
"kind": "string",
"nodeType": "YulLiteral",
"src": "5040:34:9",
"type": "",
"value": "ERC20: transfer to the zero addr"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "5013:6:9"
},
"nodeType": "YulFunctionCall",
"src": "5013:62:9"
},
"nodeType": "YulExpressionStatement",
"src": "5013:62:9"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5095:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5106:2:9",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5091:3:9"
},
"nodeType": "YulFunctionCall",
"src": "5091:18:9"
},
{
"kind": "string",
"nodeType": "YulLiteral",
"src": "5111:5:9",
"type": "",
"value": "ess"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "5084:6:9"
},
"nodeType": "YulFunctionCall",
"src": "5084:33:9"
},
"nodeType": "YulExpressionStatement",
"src": "5084:33:9"
},
{
"nodeType": "YulAssignment",
"src": "5126:27:9",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5138:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5149:3:9",
"type": "",
"value": "128"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5134:3:9"
},
"nodeType": "YulFunctionCall",
"src": "5134:19:9"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "5126:4:9"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "4911:9:9",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "4925:4:9",
"type": ""
}
],
"src": "4760:399:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5338:232:9",
"statements": [
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5355:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5366:2:9",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "5348:6:9"
},
"nodeType": "YulFunctionCall",
"src": "5348:21:9"
},
"nodeType": "YulExpressionStatement",
"src": "5348:21:9"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5389:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5400:2:9",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5385:3:9"
},
"nodeType": "YulFunctionCall",
"src": "5385:18:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5405:2:9",
"type": "",
"value": "42"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "5378:6:9"
},
"nodeType": "YulFunctionCall",
"src": "5378:30:9"
},
"nodeType": "YulExpressionStatement",
"src": "5378:30:9"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5428:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5439:2:9",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5424:3:9"
},
"nodeType": "YulFunctionCall",
"src": "5424:18:9"
},
{
"kind": "string",
"nodeType": "YulLiteral",
"src": "5444:34:9",
"type": "",
"value": "Amount must be less than total r"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "5417:6:9"
},
"nodeType": "YulFunctionCall",
"src": "5417:62:9"
},
"nodeType": "YulExpressionStatement",
"src": "5417:62:9"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5499:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5510:2:9",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5495:3:9"
},
"nodeType": "YulFunctionCall",
"src": "5495:18:9"
},
{
"kind": "string",
"nodeType": "YulLiteral",
"src": "5515:12:9",
"type": "",
"value": "eflections"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "5488:6:9"
},
"nodeType": "YulFunctionCall",
"src": "5488:40:9"
},
"nodeType": "YulExpressionStatement",
"src": "5488:40:9"
},
{
"nodeType": "YulAssignment",
"src": "5537:27:9",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5549:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5560:3:9",
"type": "",
"value": "128"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5545:3:9"
},
"nodeType": "YulFunctionCall",
"src": "5545:19:9"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "5537:4:9"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_22f7af55a509c3b14f0d528f087748dec8a8bf425135e3f5dc28c6a31ec6d812__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "5315:9:9",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "5329:4:9",
"type": ""
}
],
"src": "5164:406:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5749:228:9",
"statements": [
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5766:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5777:2:9",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "5759:6:9"
},
"nodeType": "YulFunctionCall",
"src": "5759:21:9"
},
"nodeType": "YulExpressionStatement",
"src": "5759:21:9"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5800:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5811:2:9",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5796:3:9"
},
"nodeType": "YulFunctionCall",
"src": "5796:18:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5816:2:9",
"type": "",
"value": "38"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "5789:6:9"
},
"nodeType": "YulFunctionCall",
"src": "5789:30:9"
},
"nodeType": "YulExpressionStatement",
"src": "5789:30:9"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5839:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5850:2:9",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5835:3:9"
},
"nodeType": "YulFunctionCall",
"src": "5835:18:9"
},
{
"kind": "string",
"nodeType": "YulLiteral",
"src": "5855:34:9",
"type": "",
"value": "Ownable: new owner is the zero a"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "5828:6:9"
},
"nodeType": "YulFunctionCall",
"src": "5828:62:9"
},
"nodeType": "YulExpressionStatement",
"src": "5828:62:9"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5910:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5921:2:9",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5906:3:9"
},
"nodeType": "YulFunctionCall",
"src": "5906:18:9"
},
{
"kind": "string",
"nodeType": "YulLiteral",
"src": "5926:8:9",
"type": "",
"value": "ddress"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "5899:6:9"
},
"nodeType": "YulFunctionCall",
"src": "5899:36:9"
},
"nodeType": "YulExpressionStatement",
"src": "5899:36:9"
},
{
"nodeType": "YulAssignment",
"src": "5944:27:9",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5956:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5967:3:9",
"type": "",
"value": "128"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5952:3:9"
},
"nodeType": "YulFunctionCall",
"src": "5952:19:9"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "5944:4:9"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "5726:9:9",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "5740:4:9",
"type": ""
}
],
"src": "5575:402:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6156:224:9",
"statements": [
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "6173:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6184:2:9",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "6166:6:9"
},
"nodeType": "YulFunctionCall",
"src": "6166:21:9"
},
"nodeType": "YulExpressionStatement",
"src": "6166:21:9"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "6207:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6218:2:9",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6203:3:9"
},
"nodeType": "YulFunctionCall",
"src": "6203:18:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6223:2:9",
"type": "",
"value": "34"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "6196:6:9"
},
"nodeType": "YulFunctionCall",
"src": "6196:30:9"
},
"nodeType": "YulExpressionStatement",
"src": "6196:30:9"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "6246:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6257:2:9",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6242:3:9"
},
"nodeType": "YulFunctionCall",
"src": "6242:18:9"
},
{
"kind": "string",
"nodeType": "YulLiteral",
"src": "6262:34:9",
"type": "",
"value": "ERC20: approve to the zero addre"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "6235:6:9"
},
"nodeType": "YulFunctionCall",
"src": "6235:62:9"
},
"nodeType": "YulExpressionStatement",
"src": "6235:62:9"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "6317:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6328:2:9",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6313:3:9"
},
"nodeType": "YulFunctionCall",
"src": "6313:18:9"
},
{
"kind": "string",
"nodeType": "YulLiteral",
"src": "6333:4:9",
"type": "",
"value": "ss"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "6306:6:9"
},
"nodeType": "YulFunctionCall",
"src": "6306:32:9"
},
"nodeType": "YulExpressionStatement",
"src": "6306:32:9"
},
{
"nodeType": "YulAssignment",
"src": "6347:27:9",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "6359:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6370:3:9",
"type": "",
"value": "128"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6355:3:9"
},
"nodeType": "YulFunctionCall",
"src": "6355:19:9"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "6347:4:9"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "6133:9:9",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "6147:4:9",
"type": ""
}
],
"src": "5982:398:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6559:177:9",
"statements": [
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "6576:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6587:2:9",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "6569:6:9"
},
"nodeType": "YulFunctionCall",
"src": "6569:21:9"
},
"nodeType": "YulExpressionStatement",
"src": "6569:21:9"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "6610:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6621:2:9",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6606:3:9"
},
"nodeType": "YulFunctionCall",
"src": "6606:18:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6626:2:9",
"type": "",
"value": "27"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "6599:6:9"
},
"nodeType": "YulFunctionCall",
"src": "6599:30:9"
},
"nodeType": "YulExpressionStatement",
"src": "6599:30:9"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "6649:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6660:2:9",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6645:3:9"
},
"nodeType": "YulFunctionCall",
"src": "6645:18:9"
},
{
"kind": "string",
"nodeType": "YulLiteral",
"src": "6665:29:9",
"type": "",
"value": "Account is already excluded"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "6638:6:9"
},
"nodeType": "YulFunctionCall",
"src": "6638:57:9"
},
"nodeType": "YulExpressionStatement",
"src": "6638:57:9"
},
{
"nodeType": "YulAssignment",
"src": "6704:26:9",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "6716:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6727:2:9",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6712:3:9"
},
"nodeType": "YulFunctionCall",
"src": "6712:18:9"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "6704:4:9"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_40ff67f743a73c63981ce97facdb4b14324f60afa0e3049344c62414448ff258__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "6536:9:9",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "6550:4:9",
"type": ""
}
],
"src": "6385:351:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6915:171:9",
"statements": [
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "6932:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6943:2:9",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "6925:6:9"
},
"nodeType": "YulFunctionCall",
"src": "6925:21:9"
},
"nodeType": "YulExpressionStatement",
"src": "6925:21:9"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "6966:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6977:2:9",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6962:3:9"
},
"nodeType": "YulFunctionCall",
"src": "6962:18:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6982:2:9",
"type": "",
"value": "21"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "6955:6:9"
},
"nodeType": "YulFunctionCall",
"src": "6955:30:9"
},
"nodeType": "YulExpressionStatement",
"src": "6955:30:9"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "7005:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7016:2:9",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7001:3:9"
},
"nodeType": "YulFunctionCall",
"src": "7001:18:9"
},
{
"kind": "string",
"nodeType": "YulLiteral",
"src": "7021:23:9",
"type": "",
"value": "Total fee is over 25%"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "6994:6:9"
},
"nodeType": "YulFunctionCall",
"src": "6994:51:9"
},
"nodeType": "YulExpressionStatement",
"src": "6994:51:9"
},
{
"nodeType": "YulAssignment",
"src": "7054:26:9",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "7066:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7077:2:9",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7062:3:9"
},
"nodeType": "YulFunctionCall",
"src": "7062:18:9"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "7054:4:9"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_5934f4898c552614209bdadb34ca76f71881c07b22c5c529611e5c3fba9f09dc__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "6892:9:9",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "6906:4:9",
"type": ""
}
],
"src": "6741:345:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "7265:181:9",
"statements": [
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "7282:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7293:2:9",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "7275:6:9"
},
"nodeType": "YulFunctionCall",
"src": "7275:21:9"
},
"nodeType": "YulExpressionStatement",
"src": "7275:21:9"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "7316:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7327:2:9",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7312:3:9"
},
"nodeType": "YulFunctionCall",
"src": "7312:18:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7332:2:9",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "7305:6:9"
},
"nodeType": "YulFunctionCall",
"src": "7305:30:9"
},
"nodeType": "YulExpressionStatement",
"src": "7305:30:9"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "7355:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7366:2:9",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7351:3:9"
},
"nodeType": "YulFunctionCall",
"src": "7351:18:9"
},
{
"kind": "string",
"nodeType": "YulLiteral",
"src": "7371:33:9",
"type": "",
"value": "Amount must be less than supply"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "7344:6:9"
},
"nodeType": "YulFunctionCall",
"src": "7344:61:9"
},
"nodeType": "YulExpressionStatement",
"src": "7344:61:9"
},
{
"nodeType": "YulAssignment",
"src": "7414:26:9",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "7426:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7437:2:9",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7422:3:9"
},
"nodeType": "YulFunctionCall",
"src": "7422:18:9"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "7414:4:9"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_6c3d5d630711c57d95621b0547fb0a19eab6922a3a0e7e9054d9f9c5458b757b__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "7242:9:9",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "7256:4:9",
"type": ""
}
],
"src": "7091:355:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "7625:182:9",
"statements": [
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "7642:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7653:2:9",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "7635:6:9"
},
"nodeType": "YulFunctionCall",
"src": "7635:21:9"
},
"nodeType": "YulExpressionStatement",
"src": "7635:21:9"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "7676:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7687:2:9",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7672:3:9"
},
"nodeType": "YulFunctionCall",
"src": "7672:18:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7692:2:9",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "7665:6:9"
},
"nodeType": "YulFunctionCall",
"src": "7665:30:9"
},
"nodeType": "YulExpressionStatement",
"src": "7665:30:9"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "7715:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7726:2:9",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7711:3:9"
},
"nodeType": "YulFunctionCall",
"src": "7711:18:9"
},
{
"kind": "string",
"nodeType": "YulLiteral",
"src": "7731:34:9",
"type": "",
"value": "Ownable: caller is not the owner"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "7704:6:9"
},
"nodeType": "YulFunctionCall",
"src": "7704:62:9"
},
"nodeType": "YulExpressionStatement",
"src": "7704:62:9"
},
{
"nodeType": "YulAssignment",
"src": "7775:26:9",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "7787:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7798:2:9",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7783:3:9"
},
"nodeType": "YulFunctionCall",
"src": "7783:18:9"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "7775:4:9"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "7602:9:9",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "7616:4:9",
"type": ""
}
],
"src": "7451:356:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "7986:231:9",
"statements": [
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "8003:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8014:2:9",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "7996:6:9"
},
"nodeType": "YulFunctionCall",
"src": "7996:21:9"
},
"nodeType": "YulExpressionStatement",
"src": "7996:21:9"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "8037:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8048:2:9",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8033:3:9"
},
"nodeType": "YulFunctionCall",
"src": "8033:18:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8053:2:9",
"type": "",
"value": "41"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "8026:6:9"
},
"nodeType": "YulFunctionCall",
"src": "8026:30:9"
},
"nodeType": "YulExpressionStatement",
"src": "8026:30:9"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "8076:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8087:2:9",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8072:3:9"
},
"nodeType": "YulFunctionCall",
"src": "8072:18:9"
},
{
"kind": "string",
"nodeType": "YulLiteral",
"src": "8092:34:9",
"type": "",
"value": "Transfer amount must be greater "
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "8065:6:9"
},
"nodeType": "YulFunctionCall",
"src": "8065:62:9"
},
"nodeType": "YulExpressionStatement",
"src": "8065:62:9"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "8147:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8158:2:9",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8143:3:9"
},
"nodeType": "YulFunctionCall",
"src": "8143:18:9"
},
{
"kind": "string",
"nodeType": "YulLiteral",
"src": "8163:11:9",
"type": "",
"value": "than zero"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "8136:6:9"
},
"nodeType": "YulFunctionCall",
"src": "8136:39:9"
},
"nodeType": "YulExpressionStatement",
"src": "8136:39:9"
},
{
"nodeType": "YulAssignment",
"src": "8184:27:9",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "8196:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8207:3:9",
"type": "",
"value": "128"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8192:3:9"
},
"nodeType": "YulFunctionCall",
"src": "8192:19:9"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "8184:4:9"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_9edb5ab58321f35d2386ea65721c9b107daa2c273610fc16d394af2a320ba785__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "7963:9:9",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "7977:4:9",
"type": ""
}
],
"src": "7812:405:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "8396:227:9",
"statements": [
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "8413:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8424:2:9",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "8406:6:9"
},
"nodeType": "YulFunctionCall",
"src": "8406:21:9"
},
"nodeType": "YulExpressionStatement",
"src": "8406:21:9"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "8447:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8458:2:9",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8443:3:9"
},
"nodeType": "YulFunctionCall",
"src": "8443:18:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8463:2:9",
"type": "",
"value": "37"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "8436:6:9"
},
"nodeType": "YulFunctionCall",
"src": "8436:30:9"
},
"nodeType": "YulExpressionStatement",
"src": "8436:30:9"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "8486:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8497:2:9",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8482:3:9"
},
"nodeType": "YulFunctionCall",
"src": "8482:18:9"
},
{
"kind": "string",
"nodeType": "YulLiteral",
"src": "8502:34:9",
"type": "",
"value": "ERC20: transfer from the zero ad"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "8475:6:9"
},
"nodeType": "YulFunctionCall",
"src": "8475:62:9"
},
"nodeType": "YulExpressionStatement",
"src": "8475:62:9"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "8557:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8568:2:9",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8553:3:9"
},
"nodeType": "YulFunctionCall",
"src": "8553:18:9"
},
{
"kind": "string",
"nodeType": "YulLiteral",
"src": "8573:7:9",
"type": "",
"value": "dress"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "8546:6:9"
},
"nodeType": "YulFunctionCall",
"src": "8546:35:9"
},
"nodeType": "YulExpressionStatement",
"src": "8546:35:9"
},
{
"nodeType": "YulAssignment",
"src": "8590:27:9",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "8602:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8613:3:9",
"type": "",
"value": "128"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8598:3:9"
},
"nodeType": "YulFunctionCall",
"src": "8598:19:9"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "8590:4:9"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "8373:9:9",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "8387:4:9",
"type": ""
}
],
"src": "8222:401:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "8802:226:9",
"statements": [
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "8819:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8830:2:9",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "8812:6:9"
},
"nodeType": "YulFunctionCall",
"src": "8812:21:9"
},
"nodeType": "YulExpressionStatement",
"src": "8812:21:9"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "8853:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8864:2:9",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8849:3:9"
},
"nodeType": "YulFunctionCall",
"src": "8849:18:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8869:2:9",
"type": "",
"value": "36"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "8842:6:9"
},
"nodeType": "YulFunctionCall",
"src": "8842:30:9"
},
"nodeType": "YulExpressionStatement",
"src": "8842:30:9"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "8892:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8903:2:9",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8888:3:9"
},
"nodeType": "YulFunctionCall",
"src": "8888:18:9"
},
{
"kind": "string",
"nodeType": "YulLiteral",
"src": "8908:34:9",
"type": "",
"value": "ERC20: approve from the zero add"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "8881:6:9"
},
"nodeType": "YulFunctionCall",
"src": "8881:62:9"
},
"nodeType": "YulExpressionStatement",
"src": "8881:62:9"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "8963:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8974:2:9",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8959:3:9"
},
"nodeType": "YulFunctionCall",
"src": "8959:18:9"
},
{
"kind": "string",
"nodeType": "YulLiteral",
"src": "8979:6:9",
"type": "",
"value": "ress"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "8952:6:9"
},
"nodeType": "YulFunctionCall",
"src": "8952:34:9"
},
"nodeType": "YulExpressionStatement",
"src": "8952:34:9"
},
{
"nodeType": "YulAssignment",
"src": "8995:27:9",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "9007:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9018:3:9",
"type": "",
"value": "128"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "9003:3:9"
},
"nodeType": "YulFunctionCall",
"src": "9003:19:9"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "8995:4:9"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "8779:9:9",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "8793:4:9",
"type": ""
}
],
"src": "8628:400:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "9207:234:9",
"statements": [
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "9224:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9235:2:9",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "9217:6:9"
},
"nodeType": "YulFunctionCall",
"src": "9217:21:9"
},
"nodeType": "YulExpressionStatement",
"src": "9217:21:9"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "9258:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9269:2:9",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "9254:3:9"
},
"nodeType": "YulFunctionCall",
"src": "9254:18:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9274:2:9",
"type": "",
"value": "44"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "9247:6:9"
},
"nodeType": "YulFunctionCall",
"src": "9247:30:9"
},
"nodeType": "YulExpressionStatement",
"src": "9247:30:9"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "9297:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9308:2:9",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "9293:3:9"
},
"nodeType": "YulFunctionCall",
"src": "9293:18:9"
},
{
"kind": "string",
"nodeType": "YulLiteral",
"src": "9313:34:9",
"type": "",
"value": "Excluded addresses cannot call t"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "9286:6:9"
},
"nodeType": "YulFunctionCall",
"src": "9286:62:9"
},
"nodeType": "YulExpressionStatement",
"src": "9286:62:9"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "9368:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9379:2:9",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "9364:3:9"
},
"nodeType": "YulFunctionCall",
"src": "9364:18:9"
},
{
"kind": "string",
"nodeType": "YulLiteral",
"src": "9384:14:9",
"type": "",
"value": "his function"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "9357:6:9"
},
"nodeType": "YulFunctionCall",
"src": "9357:42:9"
},
"nodeType": "YulExpressionStatement",
"src": "9357:42:9"
},
{
"nodeType": "YulAssignment",
"src": "9408:27:9",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "9420:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9431:3:9",
"type": "",
"value": "128"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "9416:3:9"
},
"nodeType": "YulFunctionCall",
"src": "9416:19:9"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "9408:4:9"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_ecefcaf5fbcf9ca6dcdb02298ba1da96f4ead317b0a4779917ecb2e5e7dc3ac4__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "9184:9:9",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "9198:4:9",
"type": ""
}
],
"src": "9033:408:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "9547:76:9",
"statements": [
{
"nodeType": "YulAssignment",
"src": "9557:26:9",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "9569:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9580:2:9",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "9565:3:9"
},
"nodeType": "YulFunctionCall",
"src": "9565:18:9"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "9557:4:9"
}
]
},
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "9599:9:9"
},
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "9610:6:9"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "9592:6:9"
},
"nodeType": "YulFunctionCall",
"src": "9592:25:9"
},
"nodeType": "YulExpressionStatement",
"src": "9592:25:9"
}
]
},
"name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "9516:9:9",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "9527:6:9",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "9538:4:9",
"type": ""
}
],
"src": "9446:177:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "9899:712:9",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "9909:33:9",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "9927:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9938:3:9",
"type": "",
"value": "160"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "9923:3:9"
},
"nodeType": "YulFunctionCall",
"src": "9923:19:9"
},
"variables": [
{
"name": "tail_1",
"nodeType": "YulTypedName",
"src": "9913:6:9",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "9958:9:9"
},
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "9969:6:9"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "9951:6:9"
},
"nodeType": "YulFunctionCall",
"src": "9951:25:9"
},
"nodeType": "YulExpressionStatement",
"src": "9951:25:9"
},
{
"nodeType": "YulVariableDeclaration",
"src": "9985:12:9",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "9995:2:9",
"type": "",
"value": "32"
},
"variables": [
{
"name": "_1",
"nodeType": "YulTypedName",
"src": "9989:2:9",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "10017:9:9"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "10028:2:9"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "10013:3:9"
},
"nodeType": "YulFunctionCall",
"src": "10013:18:9"
},
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "10033:6:9"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "10006:6:9"
},
"nodeType": "YulFunctionCall",
"src": "10006:34:9"
},
"nodeType": "YulExpressionStatement",
"src": "10006:34:9"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "10060:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10071:2:9",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "10056:3:9"
},
"nodeType": "YulFunctionCall",
"src": "10056:18:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10076:3:9",
"type": "",
"value": "160"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "10049:6:9"
},
"nodeType": "YulFunctionCall",
"src": "10049:31:9"
},
"nodeType": "YulExpressionStatement",
"src": "10049:31:9"
},
{
"nodeType": "YulVariableDeclaration",
"src": "10089:17:9",
"value": {
"name": "tail_1",
"nodeType": "YulIdentifier",
"src": "10100:6:9"
},
"variables": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "10093:3:9",
"type": ""
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "10115:27:9",
"value": {
"arguments": [
{
"name": "value2",
"nodeType": "YulIdentifier",
"src": "10135:6:9"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "10129:5:9"
},
"nodeType": "YulFunctionCall",
"src": "10129:13:9"
},
"variables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "10119:6:9",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "tail_1",
"nodeType": "YulIdentifier",
"src": "10158:6:9"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "10166:6:9"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "10151:6:9"
},
"nodeType": "YulFunctionCall",
"src": "10151:22:9"
},
"nodeType": "YulExpressionStatement",
"src": "10151:22:9"
},
{
"nodeType": "YulAssignment",
"src": "10182:26:9",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "10193:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10204:3:9",
"type": "",
"value": "192"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "10189:3:9"
},
"nodeType": "YulFunctionCall",
"src": "10189:19:9"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "10182:3:9"
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "10217:29:9",
"value": {
"arguments": [
{
"name": "value2",
"nodeType": "YulIdentifier",
"src": "10235:6:9"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "10243:2:9"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "10231:3:9"
},
"nodeType": "YulFunctionCall",
"src": "10231:15:9"
},
"variables": [
{
"name": "srcPtr",
"nodeType": "YulTypedName",
"src": "10221:6:9",
"type": ""
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "10255:13:9",
"value": {
"name": "tail",
"nodeType": "YulIdentifier",
"src": "10264:4:9"
},
"variables": [
{
"name": "i",
"nodeType": "YulTypedName",
"src": "10259:1:9",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "10326:146:9",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "10347:3:9"
},
{
"arguments": [
{
"arguments": [
{
"name": "srcPtr",
"nodeType": "YulIdentifier",
"src": "10362:6:9"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "10356:5:9"
},
"nodeType": "YulFunctionCall",
"src": "10356:13:9"
},
{
"arguments": [
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10379:3:9",
"type": "",
"value": "160"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10384:1:9",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "10375:3:9"
},
"nodeType": "YulFunctionCall",
"src": "10375:11:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10388:1:9",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "10371:3:9"
},
"nodeType": "YulFunctionCall",
"src": "10371:19:9"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "10352:3:9"
},
"nodeType": "YulFunctionCall",
"src": "10352:39:9"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "10340:6:9"
},
"nodeType": "YulFunctionCall",
"src": "10340:52:9"
},
"nodeType": "YulExpressionStatement",
"src": "10340:52:9"
},
{
"nodeType": "YulAssignment",
"src": "10405:19:9",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "10416:3:9"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "10421:2:9"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "10412:3:9"
},
"nodeType": "YulFunctionCall",
"src": "10412:12:9"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "10405:3:9"
}
]
},
{
"nodeType": "YulAssignment",
"src": "10437:25:9",
"value": {
"arguments": [
{
"name": "srcPtr",
"nodeType": "YulIdentifier",
"src": "10451:6:9"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "10459:2:9"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "10447:3:9"
},
"nodeType": "YulFunctionCall",
"src": "10447:15:9"
},
"variableNames": [
{
"name": "srcPtr",
"nodeType": "YulIdentifier",
"src": "10437:6:9"
}
]
}
]
},
"condition": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "10288:1:9"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "10291:6:9"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "10285:2:9"
},
"nodeType": "YulFunctionCall",
"src": "10285:13:9"
},
"nodeType": "YulForLoop",
"post": {
"nodeType": "YulBlock",
"src": "10299:18:9",
"statements": [
{
"nodeType": "YulAssignment",
"src": "10301:14:9",
"value": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "10310:1:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10313:1:9",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "10306:3:9"
},
"nodeType": "YulFunctionCall",
"src": "10306:9:9"
},
"variableNames": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "10301:1:9"
}
]
}
]
},
"pre": {
"nodeType": "YulBlock",
"src": "10281:3:9",
"statements": []
},
"src": "10277:195:9"
},
{
"nodeType": "YulAssignment",
"src": "10481:11:9",
"value": {
"name": "pos",
"nodeType": "YulIdentifier",
"src": "10489:3:9"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "10481:4:9"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "10512:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10523:2:9",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "10508:3:9"
},
"nodeType": "YulFunctionCall",
"src": "10508:18:9"
},
{
"arguments": [
{
"name": "value3",
"nodeType": "YulIdentifier",
"src": "10532:6:9"
},
{
"arguments": [
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10548:3:9",
"type": "",
"value": "160"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10553:1:9",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "10544:3:9"
},
"nodeType": "YulFunctionCall",
"src": "10544:11:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10557:1:9",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "10540:3:9"
},
"nodeType": "YulFunctionCall",
"src": "10540:19:9"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "10528:3:9"
},
"nodeType": "YulFunctionCall",
"src": "10528:32:9"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "10501:6:9"
},
"nodeType": "YulFunctionCall",
"src": "10501:60:9"
},
"nodeType": "YulExpressionStatement",
"src": "10501:60:9"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "10581:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10592:3:9",
"type": "",
"value": "128"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "10577:3:9"
},
"nodeType": "YulFunctionCall",
"src": "10577:19:9"
},
{
"name": "value4",
"nodeType": "YulIdentifier",
"src": "10598:6:9"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "10570:6:9"
},
"nodeType": "YulFunctionCall",
"src": "10570:35:9"
},
"nodeType": "YulExpressionStatement",
"src": "10570:35:9"
}
]
},
"name": "abi_encode_tuple_t_uint256_t_rational_0_by_1_t_array$_t_address_$dyn_memory_ptr_t_address_t_uint256__to_t_uint256_t_uint256_t_array$_t_address_$dyn_memory_ptr_t_address_t_uint256__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "9836:9:9",
"type": ""
},
{
"name": "value4",
"nodeType": "YulTypedName",
"src": "9847:6:9",
"type": ""
},
{
"name": "value3",
"nodeType": "YulTypedName",
"src": "9855:6:9",
"type": ""
},
{
"name": "value2",
"nodeType": "YulTypedName",
"src": "9863:6:9",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "9871:6:9",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "9879:6:9",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "9890:4:9",
"type": ""
}
],
"src": "9628:983:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "10773:162:9",
"statements": [
{
"nodeType": "YulAssignment",
"src": "10783:26:9",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "10795:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10806:2:9",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "10791:3:9"
},
"nodeType": "YulFunctionCall",
"src": "10791:18:9"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "10783:4:9"
}
]
},
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "10825:9:9"
},
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "10836:6:9"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "10818:6:9"
},
"nodeType": "YulFunctionCall",
"src": "10818:25:9"
},
"nodeType": "YulExpressionStatement",
"src": "10818:25:9"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "10863:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10874:2:9",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "10859:3:9"
},
"nodeType": "YulFunctionCall",
"src": "10859:18:9"
},
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "10879:6:9"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "10852:6:9"
},
"nodeType": "YulFunctionCall",
"src": "10852:34:9"
},
"nodeType": "YulExpressionStatement",
"src": "10852:34:9"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "10906:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10917:2:9",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "10902:3:9"
},
"nodeType": "YulFunctionCall",
"src": "10902:18:9"
},
{
"name": "value2",
"nodeType": "YulIdentifier",
"src": "10922:6:9"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "10895:6:9"
},
"nodeType": "YulFunctionCall",
"src": "10895:34:9"
},
"nodeType": "YulExpressionStatement",
"src": "10895:34:9"
}
]
},
"name": "abi_encode_tuple_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "10726:9:9",
"type": ""
},
{
"name": "value2",
"nodeType": "YulTypedName",
"src": "10737:6:9",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "10745:6:9",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "10753:6:9",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "10764:4:9",
"type": ""
}
],
"src": "10616:319:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "11037:87:9",
"statements": [
{
"nodeType": "YulAssignment",
"src": "11047:26:9",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "11059:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11070:2:9",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "11055:3:9"
},
"nodeType": "YulFunctionCall",
"src": "11055:18:9"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "11047:4:9"
}
]
},
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "11089:9:9"
},
{
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "11104:6:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11112:4:9",
"type": "",
"value": "0xff"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "11100:3:9"
},
"nodeType": "YulFunctionCall",
"src": "11100:17:9"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "11082:6:9"
},
"nodeType": "YulFunctionCall",
"src": "11082:36:9"
},
"nodeType": "YulExpressionStatement",
"src": "11082:36:9"
}
]
},
"name": "abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "11006:9:9",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "11017:6:9",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "11028:4:9",
"type": ""
}
],
"src": "10940:184:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "11177:80:9",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "11204:22:9",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x11",
"nodeType": "YulIdentifier",
"src": "11206:16:9"
},
"nodeType": "YulFunctionCall",
"src": "11206:18:9"
},
"nodeType": "YulExpressionStatement",
"src": "11206:18:9"
}
]
},
"condition": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "11193:1:9"
},
{
"arguments": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "11200:1:9"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "11196:3:9"
},
"nodeType": "YulFunctionCall",
"src": "11196:6:9"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "11190:2:9"
},
"nodeType": "YulFunctionCall",
"src": "11190:13:9"
},
"nodeType": "YulIf",
"src": "11187:2:9"
},
{
"nodeType": "YulAssignment",
"src": "11235:16:9",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "11246:1:9"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "11249:1:9"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "11242:3:9"
},
"nodeType": "YulFunctionCall",
"src": "11242:9:9"
},
"variableNames": [
{
"name": "sum",
"nodeType": "YulIdentifier",
"src": "11235:3:9"
}
]
}
]
},
"name": "checked_add_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "x",
"nodeType": "YulTypedName",
"src": "11160:1:9",
"type": ""
},
{
"name": "y",
"nodeType": "YulTypedName",
"src": "11163:1:9",
"type": ""
}
],
"returnVariables": [
{
"name": "sum",
"nodeType": "YulTypedName",
"src": "11169:3:9",
"type": ""
}
],
"src": "11129:128:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "11308:171:9",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "11339:111:9",
"statements": [
{
"expression": {
"arguments": [
{
"name": "r",
"nodeType": "YulIdentifier",
"src": "11360:1:9"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11367:3:9",
"type": "",
"value": "224"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11372:10:9",
"type": "",
"value": "0x4e487b71"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "11363:3:9"
},
"nodeType": "YulFunctionCall",
"src": "11363:20:9"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "11353:6:9"
},
"nodeType": "YulFunctionCall",
"src": "11353:31:9"
},
"nodeType": "YulExpressionStatement",
"src": "11353:31:9"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11404:1:9",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11407:4:9",
"type": "",
"value": "0x12"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "11397:6:9"
},
"nodeType": "YulFunctionCall",
"src": "11397:15:9"
},
"nodeType": "YulExpressionStatement",
"src": "11397:15:9"
},
{
"expression": {
"arguments": [
{
"name": "r",
"nodeType": "YulIdentifier",
"src": "11432:1:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11435:4:9",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "11425:6:9"
},
"nodeType": "YulFunctionCall",
"src": "11425:15:9"
},
"nodeType": "YulExpressionStatement",
"src": "11425:15:9"
}
]
},
"condition": {
"arguments": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "11328:1:9"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "11321:6:9"
},
"nodeType": "YulFunctionCall",
"src": "11321:9:9"
},
"nodeType": "YulIf",
"src": "11318:2:9"
},
{
"nodeType": "YulAssignment",
"src": "11459:14:9",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "11468:1:9"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "11471:1:9"
}
],
"functionName": {
"name": "div",
"nodeType": "YulIdentifier",
"src": "11464:3:9"
},
"nodeType": "YulFunctionCall",
"src": "11464:9:9"
},
"variableNames": [
{
"name": "r",
"nodeType": "YulIdentifier",
"src": "11459:1:9"
}
]
}
]
},
"name": "checked_div_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "x",
"nodeType": "YulTypedName",
"src": "11293:1:9",
"type": ""
},
{
"name": "y",
"nodeType": "YulTypedName",
"src": "11296:1:9",
"type": ""
}
],
"returnVariables": [
{
"name": "r",
"nodeType": "YulTypedName",
"src": "11302:1:9",
"type": ""
}
],
"src": "11262:217:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "11536:116:9",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "11595:22:9",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x11",
"nodeType": "YulIdentifier",
"src": "11597:16:9"
},
"nodeType": "YulFunctionCall",
"src": "11597:18:9"
},
"nodeType": "YulExpressionStatement",
"src": "11597:18:9"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "11567:1:9"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "11560:6:9"
},
"nodeType": "YulFunctionCall",
"src": "11560:9:9"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "11553:6:9"
},
"nodeType": "YulFunctionCall",
"src": "11553:17:9"
},
{
"arguments": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "11575:1:9"
},
{
"arguments": [
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11586:1:9",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "11582:3:9"
},
"nodeType": "YulFunctionCall",
"src": "11582:6:9"
},
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "11590:1:9"
}
],
"functionName": {
"name": "div",
"nodeType": "YulIdentifier",
"src": "11578:3:9"
},
"nodeType": "YulFunctionCall",
"src": "11578:14:9"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "11572:2:9"
},
"nodeType": "YulFunctionCall",
"src": "11572:21:9"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "11549:3:9"
},
"nodeType": "YulFunctionCall",
"src": "11549:45:9"
},
"nodeType": "YulIf",
"src": "11546:2:9"
},
{
"nodeType": "YulAssignment",
"src": "11626:20:9",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "11641:1:9"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "11644:1:9"
}
],
"functionName": {
"name": "mul",
"nodeType": "YulIdentifier",
"src": "11637:3:9"
},
"nodeType": "YulFunctionCall",
"src": "11637:9:9"
},
"variableNames": [
{
"name": "product",
"nodeType": "YulIdentifier",
"src": "11626:7:9"
}
]
}
]
},
"name": "checked_mul_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "x",
"nodeType": "YulTypedName",
"src": "11515:1:9",
"type": ""
},
{
"name": "y",
"nodeType": "YulTypedName",
"src": "11518:1:9",
"type": ""
}
],
"returnVariables": [
{
"name": "product",
"nodeType": "YulTypedName",
"src": "11524:7:9",
"type": ""
}
],
"src": "11484:168:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "11706:76:9",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "11728:22:9",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x11",
"nodeType": "YulIdentifier",
"src": "11730:16:9"
},
"nodeType": "YulFunctionCall",
"src": "11730:18:9"
},
"nodeType": "YulExpressionStatement",
"src": "11730:18:9"
}
]
},
"condition": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "11722:1:9"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "11725:1:9"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "11719:2:9"
},
"nodeType": "YulFunctionCall",
"src": "11719:8:9"
},
"nodeType": "YulIf",
"src": "11716:2:9"
},
{
"nodeType": "YulAssignment",
"src": "11759:17:9",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "11771:1:9"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "11774:1:9"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "11767:3:9"
},
"nodeType": "YulFunctionCall",
"src": "11767:9:9"
},
"variableNames": [
{
"name": "diff",
"nodeType": "YulIdentifier",
"src": "11759:4:9"
}
]
}
]
},
"name": "checked_sub_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "x",
"nodeType": "YulTypedName",
"src": "11688:1:9",
"type": ""
},
{
"name": "y",
"nodeType": "YulTypedName",
"src": "11691:1:9",
"type": ""
}
],
"returnVariables": [
{
"name": "diff",
"nodeType": "YulTypedName",
"src": "11697:4:9",
"type": ""
}
],
"src": "11657:125:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "11842:325:9",
"statements": [
{
"nodeType": "YulAssignment",
"src": "11852:22:9",
"value": {
"arguments": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "11866:4:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11872:1:9",
"type": "",
"value": "2"
}
],
"functionName": {
"name": "div",
"nodeType": "YulIdentifier",
"src": "11862:3:9"
},
"nodeType": "YulFunctionCall",
"src": "11862:12:9"
},
"variableNames": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "11852:6:9"
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "11883:38:9",
"value": {
"arguments": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "11913:4:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11919:1:9",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "11909:3:9"
},
"nodeType": "YulFunctionCall",
"src": "11909:12:9"
},
"variables": [
{
"name": "outOfPlaceEncoding",
"nodeType": "YulTypedName",
"src": "11887:18:9",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "11960:31:9",
"statements": [
{
"nodeType": "YulAssignment",
"src": "11962:27:9",
"value": {
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "11976:6:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11984:4:9",
"type": "",
"value": "0x7f"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "11972:3:9"
},
"nodeType": "YulFunctionCall",
"src": "11972:17:9"
},
"variableNames": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "11962:6:9"
}
]
}
]
},
"condition": {
"arguments": [
{
"name": "outOfPlaceEncoding",
"nodeType": "YulIdentifier",
"src": "11940:18:9"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "11933:6:9"
},
"nodeType": "YulFunctionCall",
"src": "11933:26:9"
},
"nodeType": "YulIf",
"src": "11930:2:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "12050:111:9",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "12071:1:9",
"type": "",
"value": "0"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "12078:3:9",
"type": "",
"value": "224"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "12083:10:9",
"type": "",
"value": "0x4e487b71"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "12074:3:9"
},
"nodeType": "YulFunctionCall",
"src": "12074:20:9"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "12064:6:9"
},
"nodeType": "YulFunctionCall",
"src": "12064:31:9"
},
"nodeType": "YulExpressionStatement",
"src": "12064:31:9"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "12115:1:9",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "12118:4:9",
"type": "",
"value": "0x22"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "12108:6:9"
},
"nodeType": "YulFunctionCall",
"src": "12108:15:9"
},
"nodeType": "YulExpressionStatement",
"src": "12108:15:9"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "12143:1:9",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "12146:4:9",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "12136:6:9"
},
"nodeType": "YulFunctionCall",
"src": "12136:15:9"
},
"nodeType": "YulExpressionStatement",
"src": "12136:15:9"
}
]
},
"condition": {
"arguments": [
{
"name": "outOfPlaceEncoding",
"nodeType": "YulIdentifier",
"src": "12006:18:9"
},
{
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "12029:6:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "12037:2:9",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "12026:2:9"
},
"nodeType": "YulFunctionCall",
"src": "12026:14:9"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "12003:2:9"
},
"nodeType": "YulFunctionCall",
"src": "12003:38:9"
},
"nodeType": "YulIf",
"src": "12000:2:9"
}
]
},
"name": "extract_byte_array_length",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "data",
"nodeType": "YulTypedName",
"src": "11822:4:9",
"type": ""
}
],
"returnVariables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "11831:6:9",
"type": ""
}
],
"src": "11787:380:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "12219:88:9",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "12250:22:9",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x11",
"nodeType": "YulIdentifier",
"src": "12252:16:9"
},
"nodeType": "YulFunctionCall",
"src": "12252:18:9"
},
"nodeType": "YulExpressionStatement",
"src": "12252:18:9"
}
]
},
"condition": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "12235:5:9"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "12246:1:9",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "12242:3:9"
},
"nodeType": "YulFunctionCall",
"src": "12242:6:9"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "12232:2:9"
},
"nodeType": "YulFunctionCall",
"src": "12232:17:9"
},
"nodeType": "YulIf",
"src": "12229:2:9"
},
{
"nodeType": "YulAssignment",
"src": "12281:20:9",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "12292:5:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "12299:1:9",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "12288:3:9"
},
"nodeType": "YulFunctionCall",
"src": "12288:13:9"
},
"variableNames": [
{
"name": "ret",
"nodeType": "YulIdentifier",
"src": "12281:3:9"
}
]
}
]
},
"name": "increment_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "12201:5:9",
"type": ""
}
],
"returnVariables": [
{
"name": "ret",
"nodeType": "YulTypedName",
"src": "12211:3:9",
"type": ""
}
],
"src": "12172:135:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "12344:95:9",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "12361:1:9",
"type": "",
"value": "0"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "12368:3:9",
"type": "",
"value": "224"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "12373:10:9",
"type": "",
"value": "0x4e487b71"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "12364:3:9"
},
"nodeType": "YulFunctionCall",
"src": "12364:20:9"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "12354:6:9"
},
"nodeType": "YulFunctionCall",
"src": "12354:31:9"
},
"nodeType": "YulExpressionStatement",
"src": "12354:31:9"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "12401:1:9",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "12404:4:9",
"type": "",
"value": "0x11"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "12394:6:9"
},
"nodeType": "YulFunctionCall",
"src": "12394:15:9"
},
"nodeType": "YulExpressionStatement",
"src": "12394:15:9"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "12425:1:9",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "12428:4:9",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "12418:6:9"
},
"nodeType": "YulFunctionCall",
"src": "12418:15:9"
},
"nodeType": "YulExpressionStatement",
"src": "12418:15:9"
}
]
},
"name": "panic_error_0x11",
"nodeType": "YulFunctionDefinition",
"src": "12312:127:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "12491:86:9",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "12555:16:9",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "12564:1:9",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "12567:1:9",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "12557:6:9"
},
"nodeType": "YulFunctionCall",
"src": "12557:12:9"
},
"nodeType": "YulExpressionStatement",
"src": "12557:12:9"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "12514:5:9"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "12525:5:9"
},
{
"arguments": [
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "12540:3:9",
"type": "",
"value": "160"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "12545:1:9",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "12536:3:9"
},
"nodeType": "YulFunctionCall",
"src": "12536:11:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "12549:1:9",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "12532:3:9"
},
"nodeType": "YulFunctionCall",
"src": "12532:19:9"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "12521:3:9"
},
"nodeType": "YulFunctionCall",
"src": "12521:31:9"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "12511:2:9"
},
"nodeType": "YulFunctionCall",
"src": "12511:42:9"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "12504:6:9"
},
"nodeType": "YulFunctionCall",
"src": "12504:50:9"
},
"nodeType": "YulIf",
"src": "12501:2:9"
}
]
},
"name": "validator_revert_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "12480:5:9",
"type": ""
}
],
"src": "12444:133:9"
}
]
},
"contents": "{\n { }\n function abi_decode_t_bool(offset) -> value\n {\n value := calldataload(offset)\n if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n let value := calldataload(headStart)\n validator_revert_t_address(value)\n value0 := value\n }\n function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n let value := mload(headStart)\n validator_revert_t_address(value)\n value0 := value\n }\n function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(value1, value1) }\n let value := calldataload(headStart)\n validator_revert_t_address(value)\n value0 := value\n let value_1 := calldataload(add(headStart, 32))\n validator_revert_t_address(value_1)\n value1 := value_1\n }\n function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(value2, value2) }\n let value := calldataload(headStart)\n validator_revert_t_address(value)\n value0 := value\n let value_1 := calldataload(add(headStart, 32))\n validator_revert_t_address(value_1)\n value1 := value_1\n value2 := calldataload(add(headStart, 64))\n }\n function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n let value := calldataload(headStart)\n validator_revert_t_address(value)\n value0 := value\n value1 := calldataload(add(headStart, 32))\n }\n function abi_decode_tuple_t_bool(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n value0 := abi_decode_t_bool(headStart)\n }\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n value0 := calldataload(headStart)\n }\n function abi_decode_tuple_t_uint256t_bool(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n value0 := calldataload(headStart)\n value1 := abi_decode_t_bool(add(headStart, 32))\n }\n function abi_decode_tuple_t_uint256t_uint256t_uint256_fromMemory(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(value0, value0) }\n value0 := mload(headStart)\n value1 := mload(add(headStart, 32))\n value2 := mload(add(headStart, 64))\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n }\n function abi_encode_tuple_t_address_t_uint256_t_rational_0_by_1_t_rational_0_by_1_t_address_t_uint256__to_t_address_t_uint256_t_uint256_t_uint256_t_address_t_uint256__fromStack_reversed(headStart, value5, value4, value3, value2, value1, value0) -> tail\n {\n tail := add(headStart, 192)\n let _1 := sub(shl(160, 1), 1)\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), value1)\n mstore(add(headStart, 64), value2)\n mstore(add(headStart, 96), value3)\n mstore(add(headStart, 128), and(value4, _1))\n mstore(add(headStart, 160), value5)\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_encode_tuple_t_contract$_IUniswapV2Router02_$3451__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n }\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n let _1 := 32\n mstore(headStart, _1)\n let length := mload(value0)\n mstore(add(headStart, _1), length)\n let i := tail\n for { } lt(i, length) { i := add(i, _1) }\n {\n mstore(add(add(headStart, i), 64), mload(add(add(value0, i), _1)))\n }\n if gt(i, length)\n {\n mstore(add(add(headStart, length), 64), tail)\n }\n tail := add(add(headStart, and(add(length, 31), not(31))), 64)\n }\n function abi_encode_tuple_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 35)\n mstore(add(headStart, 64), \"ERC20: transfer to the zero addr\")\n mstore(add(headStart, 96), \"ess\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_22f7af55a509c3b14f0d528f087748dec8a8bf425135e3f5dc28c6a31ec6d812__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 42)\n mstore(add(headStart, 64), \"Amount must be less than total r\")\n mstore(add(headStart, 96), \"eflections\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 38)\n mstore(add(headStart, 64), \"Ownable: new owner is the zero a\")\n mstore(add(headStart, 96), \"ddress\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 34)\n mstore(add(headStart, 64), \"ERC20: approve to the zero addre\")\n mstore(add(headStart, 96), \"ss\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_40ff67f743a73c63981ce97facdb4b14324f60afa0e3049344c62414448ff258__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 27)\n mstore(add(headStart, 64), \"Account is already excluded\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_5934f4898c552614209bdadb34ca76f71881c07b22c5c529611e5c3fba9f09dc__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 21)\n mstore(add(headStart, 64), \"Total fee is over 25%\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_6c3d5d630711c57d95621b0547fb0a19eab6922a3a0e7e9054d9f9c5458b757b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 31)\n mstore(add(headStart, 64), \"Amount must be less than supply\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 32)\n mstore(add(headStart, 64), \"Ownable: caller is not the owner\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_9edb5ab58321f35d2386ea65721c9b107daa2c273610fc16d394af2a320ba785__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 41)\n mstore(add(headStart, 64), \"Transfer amount must be greater \")\n mstore(add(headStart, 96), \"than zero\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 37)\n mstore(add(headStart, 64), \"ERC20: transfer from the zero ad\")\n mstore(add(headStart, 96), \"dress\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 36)\n mstore(add(headStart, 64), \"ERC20: approve from the zero add\")\n mstore(add(headStart, 96), \"ress\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_ecefcaf5fbcf9ca6dcdb02298ba1da96f4ead317b0a4779917ecb2e5e7dc3ac4__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 44)\n mstore(add(headStart, 64), \"Excluded addresses cannot call t\")\n mstore(add(headStart, 96), \"his function\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_encode_tuple_t_uint256_t_rational_0_by_1_t_array$_t_address_$dyn_memory_ptr_t_address_t_uint256__to_t_uint256_t_uint256_t_array$_t_address_$dyn_memory_ptr_t_address_t_uint256__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n {\n let tail_1 := add(headStart, 160)\n mstore(headStart, value0)\n let _1 := 32\n mstore(add(headStart, _1), value1)\n mstore(add(headStart, 64), 160)\n let pos := tail_1\n let length := mload(value2)\n mstore(tail_1, length)\n pos := add(headStart, 192)\n let srcPtr := add(value2, _1)\n let i := tail\n for { } lt(i, length) { i := add(i, 1) }\n {\n mstore(pos, and(mload(srcPtr), sub(shl(160, 1), 1)))\n pos := add(pos, _1)\n srcPtr := add(srcPtr, _1)\n }\n tail := pos\n mstore(add(headStart, 96), and(value3, sub(shl(160, 1), 1)))\n mstore(add(headStart, 128), value4)\n }\n function abi_encode_tuple_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n {\n tail := add(headStart, 96)\n mstore(headStart, value0)\n mstore(add(headStart, 32), value1)\n mstore(add(headStart, 64), value2)\n }\n function abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xff))\n }\n function checked_add_t_uint256(x, y) -> sum\n {\n if gt(x, not(y)) { panic_error_0x11() }\n sum := add(x, y)\n }\n function checked_div_t_uint256(x, y) -> r\n {\n if iszero(y)\n {\n mstore(r, shl(224, 0x4e487b71))\n mstore(4, 0x12)\n revert(r, 0x24)\n }\n r := div(x, y)\n }\n function checked_mul_t_uint256(x, y) -> product\n {\n if and(iszero(iszero(x)), gt(y, div(not(0), x))) { panic_error_0x11() }\n product := mul(x, y)\n }\n function checked_sub_t_uint256(x, y) -> diff\n {\n if lt(x, y) { panic_error_0x11() }\n diff := sub(x, y)\n }\n function extract_byte_array_length(data) -> length\n {\n length := div(data, 2)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n if eq(outOfPlaceEncoding, lt(length, 32))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n }\n function increment_t_uint256(value) -> ret\n {\n if eq(value, not(0)) { panic_error_0x11() }\n ret := add(value, 1)\n }\n function panic_error_0x11()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n function validator_revert_t_address(value)\n {\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n }\n}",
"id": 9,
"language": "Yul",
"name": "#utility.yul"
}
],
"immutableReferences": {},
"linkReferences": {},
"object": "6080604052600436106102135760003560e01c80634a74bb021161011857806395d89b41116100a0578063caac79341161006f578063caac7934146105bc578063dd62ed3e146105d1578063ea2f0b37146105f1578063f2fde38b14610611578063ffa1ad74146106315761021a565b806395d89b4114610547578063a457c2d71461055c578063a9059cbb1461057c578063c49b9a801461059c5761021a565b806370a08231116100e757806370a08231146104bd578063715018a6146104dd57806388f82020146104f25780638da5cb5b146105125780638ee88c53146105275761021a565b80634a74bb021461045357806352390c02146104685780635342acb4146104885780636bc87c3a146104a85761021a565b8063313ce5671161019b5780633bd5d1731161016a5780633bd5d173146103be578063437823ec146103de5780634549b039146103fe578063457c194c1461041e57806349bd5a5e1461043e5761021a565b8063313ce567146103475780633685d4191461036957806339509351146103895780633b124fe7146103a95761021a565b80631694505e116101e25780631694505e146102bb57806318160ddd146102dd57806322976e0d146102f257806323b872dd146103075780632d838119146103275761021a565b8063061c82d01461021f57806306fdde0314610241578063095ea7b31461026c57806313114a9d146102995761021a565b3661021a57005b600080fd5b34801561022b57600080fd5b5061023f61023a36600461201d565b610646565b005b34801561024d57600080fd5b5061025661069c565b60405161026391906120e7565b60405180910390f35b34801561027857600080fd5b5061028c610287366004611fd8565b61072e565b60405161026391906120dc565b3480156102a557600080fd5b506102ae61074c565b604051610263919061243f565b3480156102c757600080fd5b506102d0610752565b604051610263919061208d565b3480156102e957600080fd5b506102ae610761565b3480156102fe57600080fd5b506102ae610767565b34801561031357600080fd5b5061028c610322366004611f98565b61076d565b34801561033357600080fd5b506102ae61034236600461201d565b6107f4565b34801561035357600080fd5b5061035c610837565b60405161026391906124ce565b34801561037557600080fd5b5061023f610384366004611f28565b610840565b34801561039557600080fd5b5061028c6103a4366004611fd8565b6109de565b3480156103b557600080fd5b506102ae610a2c565b3480156103ca57600080fd5b5061023f6103d936600461201d565b610a32565b3480156103ea57600080fd5b5061023f6103f9366004611f28565b610aef565b34801561040a57600080fd5b506102ae610419366004612035565b610b1b565b34801561042a57600080fd5b5061023f61043936600461201d565b610b7a565b34801561044a57600080fd5b506102d0610b9d565b34801561045f57600080fd5b5061028c610bac565b34801561047457600080fd5b5061023f610483366004611f28565b610bbc565b34801561049457600080fd5b5061028c6104a3366004611f28565b610cbd565b3480156104b457600080fd5b506102ae610cdb565b3480156104c957600080fd5b506102ae6104d8366004611f28565b610ce1565b3480156104e957600080fd5b5061023f610d43565b3480156104fe57600080fd5b5061028c61050d366004611f28565b610d57565b34801561051e57600080fd5b506102d0610d75565b34801561053357600080fd5b5061023f61054236600461201d565b610d84565b34801561055357600080fd5b50610256610da7565b34801561056857600080fd5b5061028c610577366004611fd8565b610db6565b34801561058857600080fd5b5061028c610597366004611fd8565b610e1e565b3480156105a857600080fd5b5061023f6105b7366004612003565b610e32565b3480156105c857600080fd5b506102d0610e8c565b3480156105dd57600080fd5b506102ae6105ec366004611f60565b610e9b565b3480156105fd57600080fd5b5061023f61060c366004611f28565b610ec6565b34801561061d57600080fd5b5061023f61062c366004611f28565b610eef565b34801561063d57600080fd5b506102ae610f26565b61064e610f4a565b600d819055601154600f546109c4919061066890846124dc565b61067291906124dc565b11156106995760405162461bcd60e51b815260040161069090612286565b60405180910390fd5b50565b6060600a80546106ab9061254a565b80601f01602080910402602001604051908101604052809291908181526020018280546106d79061254a565b80156107245780601f106106f957610100808354040283529160200191610724565b820191906000526020600020905b81548152906001019060200180831161070757829003601f168201915b5050505050905090565b600061074261073b610f89565b8484610f8d565b5060015b92915050565b60095490565b6013546001600160a01b031681565b60075490565b60115481565b600061077a848484611041565b6107ea84610786610f89565b6107e5856040518060600160405280602881526020016125cc602891396001600160a01b038a166000908152600360205260408120906107c4610f89565b6001600160a01b031681526020810191909152604001600020549190611183565b610f8d565b5060019392505050565b60006008548211156108185760405162461bcd60e51b81526004016106909061217d565b60006108226111af565b905061082e8382610f3e565b9150505b919050565b600c5460ff1690565b610848610f4a565b6001600160a01b03811660009081526005602052604090205460ff166108805760405162461bcd60e51b81526004016106909061224f565b60005b6006548110156109da57816001600160a01b0316600682815481106108b857634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b031614156109c857600680546108e390600190612533565b8154811061090157634e487b7160e01b600052603260045260246000fd5b600091825260209091200154600680546001600160a01b03909216918390811061093b57634e487b7160e01b600052603260045260246000fd5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600282526040808220829055600590925220805460ff1916905560068054806109a157634e487b7160e01b600052603160045260246000fd5b600082815260209020810160001990810180546001600160a01b03191690550190556109da565b806109d281612585565b915050610883565b5050565b60006107426109eb610f89565b846107e585600360006109fc610f89565b6001600160a01b03908116825260208083019390935260409182016000908120918c1681529252902054906111d2565b600d5481565b6000610a3c610f89565b6001600160a01b03811660009081526005602052604090205490915060ff1615610a785760405162461bcd60e51b8152600401610690906123f3565b6000610a83836111de565b5050506001600160a01b038616600090815260016020526040902054939450610ab193925084915050611239565b6001600160a01b038316600090815260016020526040902055600854610ad79082611239565b600855600954610ae790846111d2565b600955505050565b610af7610f4a565b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b6000600754831115610b3f5760405162461bcd60e51b8152600401610690906122b5565b81610b5f576000610b4f846111de565b5094965061074695505050505050565b6000610b6a846111de565b5093965061074695505050505050565b610b82610f4a565b6011819055600f54600d546109c491839161066891906124dc565b6014546001600160a01b031681565b601654600160a81b900460ff1681565b610bc4610f4a565b6001600160a01b03811660009081526005602052604090205460ff1615610bfd5760405162461bcd60e51b81526004016106909061224f565b6001600160a01b03811660009081526001602052604090205415610c57576001600160a01b038116600090815260016020526040902054610c3d906107f4565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600560205260408120805460ff191660019081179091556006805491820181559091527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0319169091179055565b6001600160a01b031660009081526004602052604090205460ff1690565b600f5481565b6001600160a01b03811660009081526005602052604081205460ff1615610d2157506001600160a01b038116600090815260026020526040902054610832565b6001600160a01b038216600090815260016020526040902054610746906107f4565b610d4b610f4a565b610d556000611245565b565b6001600160a01b031660009081526005602052604090205460ff1690565b6000546001600160a01b031690565b610d8c610f4a565b600f819055601154600d546109c491906106689084906124dc565b6060600b80546106ab9061254a565b6000610742610dc3610f89565b846107e5856040518060600160405280602581526020016125f46025913960036000610ded610f89565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190611183565b6000610742610e2b610f89565b8484611041565b610e3a610f4a565b6016805460ff60a81b1916600160a81b831515021790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15990610e819083906120dc565b60405180910390a150565b6015546001600160a01b031681565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b610ece610f4a565b6001600160a01b03166000908152600460205260409020805460ff19169055565b610ef7610f4a565b6001600160a01b038116610f1d5760405162461bcd60e51b8152600401610690906121c7565b61069981611245565b600181565b6000610f378284612514565b9392505050565b6000610f3782846124f4565b610f52610f89565b6001600160a01b0316610f63610d75565b6001600160a01b031614610d555760405162461bcd60e51b8152600401610690906122ec565b3390565b6001600160a01b038316610fb35760405162461bcd60e51b8152600401610690906123af565b6001600160a01b038216610fd95760405162461bcd60e51b81526004016106909061220d565b6001600160a01b0380841660008181526003602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061103490859061243f565b60405180910390a3505050565b6001600160a01b0383166110675760405162461bcd60e51b81526004016106909061236a565b6001600160a01b03821661108d5760405162461bcd60e51b81526004016106909061213a565b600081116110ad5760405162461bcd60e51b815260040161069090612321565b60006110b830610ce1565b601754909150811080159081906110d95750601654600160a01b900460ff16155b80156110f357506014546001600160a01b03868116911614155b80156111085750601654600160a81b900460ff165b1561111b57601754915061111b82611295565b61112483611336565b6001600160a01b03851660009081526004602052604090205460019060ff168061116657506001600160a01b03851660009081526004602052604090205460ff165b1561116f575060005b61117b8686868461139c565b505050505050565b600081848411156111a75760405162461bcd60e51b815260040161069091906120e7565b505050900390565b60008060006111bc61150a565b90925090506111cb8282610f3e565b9250505090565b6000610f3782846124dc565b60008060008060008060008060008060006111f88c6116c7565b935093509350935060008060006112198f8787876112146111af565b61171c565b919f509d509b509599509397509195509350505050919395979092949650565b6000610f378284612533565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6016805460ff60a01b1916600160a01b17905560006112b5826002610f3e565b905060006112c38383611239565b9050476112cf8361177e565b60006112db4783611239565b90506112e783826118fb565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56184828560405161131a939291906124b8565b60405180910390a150506016805460ff60a01b19169055505050565b600061135061271061134a84610190610f2b565b90610f3e565b90504781811115611397576016546040516001600160a01b039091169083156108fc029084906000818181858888f19350505050158015611395573d6000803e3d6000fd5b505b505050565b806113a9576113a96119ad565b6001600160a01b03841660009081526005602052604090205460ff1680156113ea57506001600160a01b03831660009081526005602052604090205460ff16155b156113ff576113fa8484846119f5565b6114fd565b6001600160a01b03841660009081526005602052604090205460ff1615801561144057506001600160a01b03831660009081526005602052604090205460ff165b15611450576113fa848484611b39565b6001600160a01b03841660009081526005602052604090205460ff1615801561149257506001600160a01b03831660009081526005602052604090205460ff16155b156114a2576113fa848484611bf8565b6001600160a01b03841660009081526005602052604090205460ff1680156114e257506001600160a01b03831660009081526005602052604090205460ff165b156114f2576113fa848484611c52565b6114fd848484611bf8565b8061139557611395611cdb565b6008546007546000918291825b6006548110156116955782600160006006848154811061154757634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b0316835282019290925260400190205411806115c0575081600260006006848154811061159957634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b156115d757600854600754945094505050506116c3565b61162b60016000600684815481106115ff57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020548490611239565b9250611681600260006006848154811061165557634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020548390611239565b91508061168d81612585565b915050611517565b506007546008546116a591610f3e565b8210156116bd576008546007549350935050506116c3565b90925090505b9091565b60008060008060006116d886611cef565b905060006116e587611d0c565b905060006116f288611d29565b9050600061170c8261170685818d89611239565b90611239565b9993985091965094509092505050565b600080808061172b8986610f2b565b905060006117398987610f2b565b905060006117478988610f2b565b905060006117558989610f2b565b905060006117698261170685818989611239565b949d949c50929a509298505050505050505050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106117c157634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152601354604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561181557600080fd5b505afa158015611829573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061184d9190611f44565b8160018151811061186e57634e487b7160e01b600052603260045260246000fd5b6001600160a01b0392831660209182029290920101526013546118949130911684610f8d565b60135460405163791ac94760e01b81526001600160a01b039091169063791ac947906118cd908590600090869030904290600401612448565b600060405180830381600087803b1580156118e757600080fd5b505af115801561117b573d6000803e3d6000fd5b6013546119139030906001600160a01b031684610f8d565b6013546001600160a01b031663f305d719823085600080611932610d75565b426040518863ffffffff1660e01b8152600401611954969594939291906120a1565b6060604051808303818588803b15801561196d57600080fd5b505af1158015611981573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906119a69190612060565b5050505050565b600d541580156119bd5750600f54155b80156119c95750601154155b156119d357610d55565b600d8054600e55600f8054601055601180546012556000928390559082905555565b6000806000806000806000611a09886111de565b9650965096509650965096509650611a4f88600260008d6001600160a01b03166001600160a01b031681526020019081526020016000205461123990919063ffffffff16565b6001600160a01b038b16600090815260026020908152604080832093909355600190522054611a7e9088611239565b6001600160a01b03808c1660009081526001602052604080822093909355908b1681522054611aad90876111d2565b6001600160a01b038a16600090815260016020526040902055611acf82611d5f565b611ad881611de7565b611ae28584611ef4565b886001600160a01b03168a6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051611b25919061243f565b60405180910390a350505050505050505050565b6000806000806000806000611b4d886111de565b9650965096509650965096509650611b9387600160008d6001600160a01b03166001600160a01b031681526020019081526020016000205461123990919063ffffffff16565b6001600160a01b03808c16600090815260016020908152604080832094909455918c16815260029091522054611bc990856111d2565b6001600160a01b038a16600090815260026020908152604080832093909355600190522054611aad90876111d2565b6000806000806000806000611c0c886111de565b9650965096509650965096509650611a7e87600160008d6001600160a01b03166001600160a01b031681526020019081526020016000205461123990919063ffffffff16565b6000806000806000806000611c66886111de565b9650965096509650965096509650611cac88600260008d6001600160a01b03166001600160a01b031681526020019081526020016000205461123990919063ffffffff16565b6001600160a01b038b16600090815260026020908152604080832093909355600190522054611b939088611239565b600e54600d55601054600f55601254601155565b600061074661271061134a600d5485610f2b90919063ffffffff16565b600061074661271061134a600f5485610f2b90919063ffffffff16565b6015546000906001600160a01b0316611d4457506000610832565b61074661271061134a60115485610f2b90919063ffffffff16565b6000611d696111af565b90506000611d778383610f2b565b30600090815260016020526040902054909150611d9490826111d2565b3060009081526001602090815260408083209390935560059052205460ff16156113975730600090815260026020526040902054611dd290846111d2565b30600090815260026020526040902055505050565b8015610699576000611df76111af565b90506000611e058383610f2b565b6015546001600160a01b0316600090815260016020526040902054909150611e2d90826111d2565b601580546001600160a01b03908116600090815260016020908152604080832095909555925490911681526005909152205460ff1615611ea8576015546001600160a01b0316600090815260026020526040902054611e8c90846111d2565b6015546001600160a01b03166000908152600260205260409020555b6015546001600160a01b0316611ebc610f89565b6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611034919061243f565b600854611f019083611239565b600855600954611f1190826111d2565b6009555050565b8035801515811461083257600080fd5b600060208284031215611f39578081fd5b8135610f37816125b6565b600060208284031215611f55578081fd5b8151610f37816125b6565b60008060408385031215611f72578081fd5b8235611f7d816125b6565b91506020830135611f8d816125b6565b809150509250929050565b600080600060608486031215611fac578081fd5b8335611fb7816125b6565b92506020840135611fc7816125b6565b929592945050506040919091013590565b60008060408385031215611fea578182fd5b8235611ff5816125b6565b946020939093013593505050565b600060208284031215612014578081fd5b610f3782611f18565b60006020828403121561202e578081fd5b5035919050565b60008060408385031215612047578182fd5b8235915061205760208401611f18565b90509250929050565b600080600060608486031215612074578283fd5b8351925060208401519150604084015190509250925092565b6001600160a01b0391909116815260200190565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b901515815260200190565b6000602080835283518082850152825b81811015612113578581018301518582016040015282016120f7565b818111156121245783604083870101525b50601f01601f1916929092016040019392505050565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b6020808252602a908201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260408201526965666c656374696f6e7360b01b606082015260800190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b60208082526022908201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604082015261737360f01b606082015260800190565b6020808252601b908201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604082015260600190565b602080825260159082015274546f74616c20666565206973206f7665722032352560581b604082015260600190565b6020808252601f908201527f416d6f756e74206d757374206265206c657373207468616e20737570706c7900604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526029908201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206040820152687468616e207a65726f60b81b606082015260800190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526024908201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646040820152637265737360e01b606082015260800190565b6020808252602c908201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460408201526b3434b990333ab731ba34b7b760a11b606082015260800190565b90815260200190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b818110156124975784516001600160a01b031683529383019391830191600101612472565b50506001600160a01b03969096166060850152505050608001529392505050565b9283526020830191909152604082015260600190565b60ff91909116815260200190565b600082198211156124ef576124ef6125a0565b500190565b60008261250f57634e487b7160e01b81526012600452602481fd5b500490565b600081600019048311821515161561252e5761252e6125a0565b500290565b600082821015612545576125456125a0565b500390565b60028104600182168061255e57607f821691505b6020821081141561257f57634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415612599576125996125a0565b5060010190565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b038116811461069957600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220ab8292dd21b86cfdb0512d32809e8ef4616b51da42b937937beb1d52b86d056364736f6c63430008010033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x213 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4A74BB02 GT PUSH2 0x118 JUMPI DUP1 PUSH4 0x95D89B41 GT PUSH2 0xA0 JUMPI DUP1 PUSH4 0xCAAC7934 GT PUSH2 0x6F JUMPI DUP1 PUSH4 0xCAAC7934 EQ PUSH2 0x5BC JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x5D1 JUMPI DUP1 PUSH4 0xEA2F0B37 EQ PUSH2 0x5F1 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x611 JUMPI DUP1 PUSH4 0xFFA1AD74 EQ PUSH2 0x631 JUMPI PUSH2 0x21A JUMP JUMPDEST DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x547 JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x55C JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x57C JUMPI DUP1 PUSH4 0xC49B9A80 EQ PUSH2 0x59C JUMPI PUSH2 0x21A JUMP JUMPDEST DUP1 PUSH4 0x70A08231 GT PUSH2 0xE7 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x4BD JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x4DD JUMPI DUP1 PUSH4 0x88F82020 EQ PUSH2 0x4F2 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x512 JUMPI DUP1 PUSH4 0x8EE88C53 EQ PUSH2 0x527 JUMPI PUSH2 0x21A JUMP JUMPDEST DUP1 PUSH4 0x4A74BB02 EQ PUSH2 0x453 JUMPI DUP1 PUSH4 0x52390C02 EQ PUSH2 0x468 JUMPI DUP1 PUSH4 0x5342ACB4 EQ PUSH2 0x488 JUMPI DUP1 PUSH4 0x6BC87C3A EQ PUSH2 0x4A8 JUMPI PUSH2 0x21A JUMP JUMPDEST DUP1 PUSH4 0x313CE567 GT PUSH2 0x19B JUMPI DUP1 PUSH4 0x3BD5D173 GT PUSH2 0x16A JUMPI DUP1 PUSH4 0x3BD5D173 EQ PUSH2 0x3BE JUMPI DUP1 PUSH4 0x437823EC EQ PUSH2 0x3DE JUMPI DUP1 PUSH4 0x4549B039 EQ PUSH2 0x3FE JUMPI DUP1 PUSH4 0x457C194C EQ PUSH2 0x41E JUMPI DUP1 PUSH4 0x49BD5A5E EQ PUSH2 0x43E JUMPI PUSH2 0x21A JUMP JUMPDEST DUP1 PUSH4 0x313CE567 EQ PUSH2 0x347 JUMPI DUP1 PUSH4 0x3685D419 EQ PUSH2 0x369 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x389 JUMPI DUP1 PUSH4 0x3B124FE7 EQ PUSH2 0x3A9 JUMPI PUSH2 0x21A JUMP JUMPDEST DUP1 PUSH4 0x1694505E GT PUSH2 0x1E2 JUMPI DUP1 PUSH4 0x1694505E EQ PUSH2 0x2BB JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x2DD JUMPI DUP1 PUSH4 0x22976E0D EQ PUSH2 0x2F2 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x307 JUMPI DUP1 PUSH4 0x2D838119 EQ PUSH2 0x327 JUMPI PUSH2 0x21A JUMP JUMPDEST DUP1 PUSH4 0x61C82D0 EQ PUSH2 0x21F JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x241 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x26C JUMPI DUP1 PUSH4 0x13114A9D EQ PUSH2 0x299 JUMPI PUSH2 0x21A JUMP JUMPDEST CALLDATASIZE PUSH2 0x21A JUMPI STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x22B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x23F PUSH2 0x23A CALLDATASIZE PUSH1 0x4 PUSH2 0x201D JUMP JUMPDEST PUSH2 0x646 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x24D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x256 PUSH2 0x69C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x263 SWAP2 SWAP1 PUSH2 0x20E7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x278 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x28C PUSH2 0x287 CALLDATASIZE PUSH1 0x4 PUSH2 0x1FD8 JUMP JUMPDEST PUSH2 0x72E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x263 SWAP2 SWAP1 PUSH2 0x20DC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2AE PUSH2 0x74C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x263 SWAP2 SWAP1 PUSH2 0x243F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2D0 PUSH2 0x752 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x263 SWAP2 SWAP1 PUSH2 0x208D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2AE PUSH2 0x761 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2AE PUSH2 0x767 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x313 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x28C PUSH2 0x322 CALLDATASIZE PUSH1 0x4 PUSH2 0x1F98 JUMP JUMPDEST PUSH2 0x76D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x333 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2AE PUSH2 0x342 CALLDATASIZE PUSH1 0x4 PUSH2 0x201D JUMP JUMPDEST PUSH2 0x7F4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x353 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x35C PUSH2 0x837 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x263 SWAP2 SWAP1 PUSH2 0x24CE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x375 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x23F PUSH2 0x384 CALLDATASIZE PUSH1 0x4 PUSH2 0x1F28 JUMP JUMPDEST PUSH2 0x840 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x395 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x28C PUSH2 0x3A4 CALLDATASIZE PUSH1 0x4 PUSH2 0x1FD8 JUMP JUMPDEST PUSH2 0x9DE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2AE PUSH2 0xA2C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x23F PUSH2 0x3D9 CALLDATASIZE PUSH1 0x4 PUSH2 0x201D JUMP JUMPDEST PUSH2 0xA32 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x23F PUSH2 0x3F9 CALLDATASIZE PUSH1 0x4 PUSH2 0x1F28 JUMP JUMPDEST PUSH2 0xAEF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x40A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2AE PUSH2 0x419 CALLDATASIZE PUSH1 0x4 PUSH2 0x2035 JUMP JUMPDEST PUSH2 0xB1B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x42A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x23F PUSH2 0x439 CALLDATASIZE PUSH1 0x4 PUSH2 0x201D JUMP JUMPDEST PUSH2 0xB7A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x44A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2D0 PUSH2 0xB9D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x45F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x28C PUSH2 0xBAC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x474 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x23F PUSH2 0x483 CALLDATASIZE PUSH1 0x4 PUSH2 0x1F28 JUMP JUMPDEST PUSH2 0xBBC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x494 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x28C PUSH2 0x4A3 CALLDATASIZE PUSH1 0x4 PUSH2 0x1F28 JUMP JUMPDEST PUSH2 0xCBD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2AE PUSH2 0xCDB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2AE PUSH2 0x4D8 CALLDATASIZE PUSH1 0x4 PUSH2 0x1F28 JUMP JUMPDEST PUSH2 0xCE1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x23F PUSH2 0xD43 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x28C PUSH2 0x50D CALLDATASIZE PUSH1 0x4 PUSH2 0x1F28 JUMP JUMPDEST PUSH2 0xD57 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x51E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2D0 PUSH2 0xD75 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x533 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x23F PUSH2 0x542 CALLDATASIZE PUSH1 0x4 PUSH2 0x201D JUMP JUMPDEST PUSH2 0xD84 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x553 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x256 PUSH2 0xDA7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x568 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x28C PUSH2 0x577 CALLDATASIZE PUSH1 0x4 PUSH2 0x1FD8 JUMP JUMPDEST PUSH2 0xDB6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x588 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x28C PUSH2 0x597 CALLDATASIZE PUSH1 0x4 PUSH2 0x1FD8 JUMP JUMPDEST PUSH2 0xE1E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x23F PUSH2 0x5B7 CALLDATASIZE PUSH1 0x4 PUSH2 0x2003 JUMP JUMPDEST PUSH2 0xE32 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2D0 PUSH2 0xE8C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2AE PUSH2 0x5EC CALLDATASIZE PUSH1 0x4 PUSH2 0x1F60 JUMP JUMPDEST PUSH2 0xE9B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x23F PUSH2 0x60C CALLDATASIZE PUSH1 0x4 PUSH2 0x1F28 JUMP JUMPDEST PUSH2 0xEC6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x61D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x23F PUSH2 0x62C CALLDATASIZE PUSH1 0x4 PUSH2 0x1F28 JUMP JUMPDEST PUSH2 0xEEF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x63D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2AE PUSH2 0xF26 JUMP JUMPDEST PUSH2 0x64E PUSH2 0xF4A JUMP JUMPDEST PUSH1 0xD DUP2 SWAP1 SSTORE PUSH1 0x11 SLOAD PUSH1 0xF SLOAD PUSH2 0x9C4 SWAP2 SWAP1 PUSH2 0x668 SWAP1 DUP5 PUSH2 0x24DC JUMP JUMPDEST PUSH2 0x672 SWAP2 SWAP1 PUSH2 0x24DC JUMP JUMPDEST GT ISZERO PUSH2 0x699 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x690 SWAP1 PUSH2 0x2286 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0xA DUP1 SLOAD PUSH2 0x6AB SWAP1 PUSH2 0x254A JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x6D7 SWAP1 PUSH2 0x254A JUMP JUMPDEST DUP1 ISZERO PUSH2 0x724 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x6F9 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x724 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x707 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x742 PUSH2 0x73B PUSH2 0xF89 JUMP JUMPDEST DUP5 DUP5 PUSH2 0xF8D JUMP JUMPDEST POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x9 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x7 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x11 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x77A DUP5 DUP5 DUP5 PUSH2 0x1041 JUMP JUMPDEST PUSH2 0x7EA DUP5 PUSH2 0x786 PUSH2 0xF89 JUMP JUMPDEST PUSH2 0x7E5 DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x25CC PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP1 PUSH2 0x7C4 PUSH2 0xF89 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x1183 JUMP JUMPDEST PUSH2 0xF8D JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x8 SLOAD DUP3 GT ISZERO PUSH2 0x818 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x690 SWAP1 PUSH2 0x217D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x822 PUSH2 0x11AF JUMP JUMPDEST SWAP1 POP PUSH2 0x82E DUP4 DUP3 PUSH2 0xF3E JUMP JUMPDEST SWAP2 POP POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0xC SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x848 PUSH2 0xF4A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x880 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x690 SWAP1 PUSH2 0x224F JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x6 SLOAD DUP2 LT ISZERO PUSH2 0x9DA JUMPI DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x6 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x8B8 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x9C8 JUMPI PUSH1 0x6 DUP1 SLOAD PUSH2 0x8E3 SWAP1 PUSH1 0x1 SWAP1 PUSH2 0x2533 JUMP JUMPDEST DUP2 SLOAD DUP2 LT PUSH2 0x901 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x6 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 DUP4 SWAP1 DUP2 LT PUSH2 0x93B JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP2 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND OR SWAP1 SSTORE SWAP2 DUP5 AND DUP2 MSTORE PUSH1 0x2 DUP3 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP3 SWAP1 SSTORE PUSH1 0x5 SWAP1 SWAP3 MSTORE KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE PUSH1 0x6 DUP1 SLOAD DUP1 PUSH2 0x9A1 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x31 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 SWAP1 KECCAK256 DUP2 ADD PUSH1 0x0 NOT SWAP1 DUP2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SSTORE ADD SWAP1 SSTORE PUSH2 0x9DA JUMP JUMPDEST DUP1 PUSH2 0x9D2 DUP2 PUSH2 0x2585 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x883 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x742 PUSH2 0x9EB PUSH2 0xF89 JUMP JUMPDEST DUP5 PUSH2 0x7E5 DUP6 PUSH1 0x3 PUSH1 0x0 PUSH2 0x9FC PUSH2 0xF89 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP13 AND DUP2 MSTORE SWAP3 MSTORE SWAP1 KECCAK256 SLOAD SWAP1 PUSH2 0x11D2 JUMP JUMPDEST PUSH1 0xD SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA3C PUSH2 0xF89 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 SWAP2 POP PUSH1 0xFF AND ISZERO PUSH2 0xA78 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x690 SWAP1 PUSH2 0x23F3 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA83 DUP4 PUSH2 0x11DE JUMP JUMPDEST POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP4 SWAP5 POP PUSH2 0xAB1 SWAP4 SWAP3 POP DUP5 SWAP2 POP POP PUSH2 0x1239 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH1 0x8 SLOAD PUSH2 0xAD7 SWAP1 DUP3 PUSH2 0x1239 JUMP JUMPDEST PUSH1 0x8 SSTORE PUSH1 0x9 SLOAD PUSH2 0xAE7 SWAP1 DUP5 PUSH2 0x11D2 JUMP JUMPDEST PUSH1 0x9 SSTORE POP POP POP JUMP JUMPDEST PUSH2 0xAF7 PUSH2 0xF4A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x7 SLOAD DUP4 GT ISZERO PUSH2 0xB3F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x690 SWAP1 PUSH2 0x22B5 JUMP JUMPDEST DUP2 PUSH2 0xB5F JUMPI PUSH1 0x0 PUSH2 0xB4F DUP5 PUSH2 0x11DE JUMP JUMPDEST POP SWAP5 SWAP7 POP PUSH2 0x746 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB6A DUP5 PUSH2 0x11DE JUMP JUMPDEST POP SWAP4 SWAP7 POP PUSH2 0x746 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0xB82 PUSH2 0xF4A JUMP JUMPDEST PUSH1 0x11 DUP2 SWAP1 SSTORE PUSH1 0xF SLOAD PUSH1 0xD SLOAD PUSH2 0x9C4 SWAP2 DUP4 SWAP2 PUSH2 0x668 SWAP2 SWAP1 PUSH2 0x24DC JUMP JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x1 PUSH1 0xA8 SHL SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0xBC4 PUSH2 0xF4A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0xBFD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x690 SWAP1 PUSH2 0x224F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO PUSH2 0xC57 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xC3D SWAP1 PUSH2 0x7F4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x6 DUP1 SLOAD SWAP2 DUP3 ADD DUP2 SSTORE SWAP1 SWAP2 MSTORE PUSH32 0xF652222313E28459528D920B65115C16C04F3EFC82AAEDC97BE59F3F377C0D3F ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0xF SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0xD21 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x832 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x746 SWAP1 PUSH2 0x7F4 JUMP JUMPDEST PUSH2 0xD4B PUSH2 0xF4A JUMP JUMPDEST PUSH2 0xD55 PUSH1 0x0 PUSH2 0x1245 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0xD8C PUSH2 0xF4A JUMP JUMPDEST PUSH1 0xF DUP2 SWAP1 SSTORE PUSH1 0x11 SLOAD PUSH1 0xD SLOAD PUSH2 0x9C4 SWAP2 SWAP1 PUSH2 0x668 SWAP1 DUP5 SWAP1 PUSH2 0x24DC JUMP JUMPDEST PUSH1 0x60 PUSH1 0xB DUP1 SLOAD PUSH2 0x6AB SWAP1 PUSH2 0x254A JUMP JUMPDEST PUSH1 0x0 PUSH2 0x742 PUSH2 0xDC3 PUSH2 0xF89 JUMP JUMPDEST DUP5 PUSH2 0x7E5 DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x25F4 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x3 PUSH1 0x0 PUSH2 0xDED PUSH2 0xF89 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP14 AND DUP2 MSTORE SWAP3 MSTORE SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x1183 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x742 PUSH2 0xE2B PUSH2 0xF89 JUMP JUMPDEST DUP5 DUP5 PUSH2 0x1041 JUMP JUMPDEST PUSH2 0xE3A PUSH2 0xF4A JUMP JUMPDEST PUSH1 0x16 DUP1 SLOAD PUSH1 0xFF PUSH1 0xA8 SHL NOT AND PUSH1 0x1 PUSH1 0xA8 SHL DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0x53726DFCAF90650AA7EB35524F4D3220F07413C8D6CB404CC8C18BF5591BC159 SWAP1 PUSH2 0xE81 SWAP1 DUP4 SWAP1 PUSH2 0x20DC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x15 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0xECE PUSH2 0xF4A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xEF7 PUSH2 0xF4A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xF1D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x690 SWAP1 PUSH2 0x21C7 JUMP JUMPDEST PUSH2 0x699 DUP2 PUSH2 0x1245 JUMP JUMPDEST PUSH1 0x1 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF37 DUP3 DUP5 PUSH2 0x2514 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF37 DUP3 DUP5 PUSH2 0x24F4 JUMP JUMPDEST PUSH2 0xF52 PUSH2 0xF89 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xF63 PUSH2 0xD75 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xD55 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x690 SWAP1 PUSH2 0x22EC JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0xFB3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x690 SWAP1 PUSH2 0x23AF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xFD9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x690 SWAP1 PUSH2 0x220D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 SWAP1 SWAP2 MSTORE SWAP1 DUP2 SWAP1 KECCAK256 DUP5 SWAP1 SSTORE MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP1 PUSH2 0x1034 SWAP1 DUP6 SWAP1 PUSH2 0x243F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x1067 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x690 SWAP1 PUSH2 0x236A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x108D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x690 SWAP1 PUSH2 0x213A JUMP JUMPDEST PUSH1 0x0 DUP2 GT PUSH2 0x10AD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x690 SWAP1 PUSH2 0x2321 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x10B8 ADDRESS PUSH2 0xCE1 JUMP JUMPDEST PUSH1 0x17 SLOAD SWAP1 SWAP2 POP DUP2 LT DUP1 ISZERO SWAP1 DUP2 SWAP1 PUSH2 0x10D9 JUMPI POP PUSH1 0x16 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x10F3 JUMPI POP PUSH1 0x14 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND SWAP2 AND EQ ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x1108 JUMPI POP PUSH1 0x16 SLOAD PUSH1 0x1 PUSH1 0xA8 SHL SWAP1 DIV PUSH1 0xFF AND JUMPDEST ISZERO PUSH2 0x111B JUMPI PUSH1 0x17 SLOAD SWAP2 POP PUSH2 0x111B DUP3 PUSH2 0x1295 JUMP JUMPDEST PUSH2 0x1124 DUP4 PUSH2 0x1336 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 SWAP1 PUSH1 0xFF AND DUP1 PUSH2 0x1166 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST ISZERO PUSH2 0x116F JUMPI POP PUSH1 0x0 JUMPDEST PUSH2 0x117B DUP7 DUP7 DUP7 DUP5 PUSH2 0x139C JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x11A7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x690 SWAP2 SWAP1 PUSH2 0x20E7 JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x11BC PUSH2 0x150A JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x11CB DUP3 DUP3 PUSH2 0xF3E JUMP JUMPDEST SWAP3 POP POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF37 DUP3 DUP5 PUSH2 0x24DC JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x11F8 DUP13 PUSH2 0x16C7 JUMP JUMPDEST SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1219 DUP16 DUP8 DUP8 DUP8 PUSH2 0x1214 PUSH2 0x11AF JUMP JUMPDEST PUSH2 0x171C JUMP JUMPDEST SWAP2 SWAP16 POP SWAP14 POP SWAP12 POP SWAP6 SWAP10 POP SWAP4 SWAP8 POP SWAP2 SWAP6 POP SWAP4 POP POP POP POP SWAP2 SWAP4 SWAP6 SWAP8 SWAP1 SWAP3 SWAP5 SWAP7 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF37 DUP3 DUP5 PUSH2 0x2533 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x16 DUP1 SLOAD PUSH1 0xFF PUSH1 0xA0 SHL NOT AND PUSH1 0x1 PUSH1 0xA0 SHL OR SWAP1 SSTORE PUSH1 0x0 PUSH2 0x12B5 DUP3 PUSH1 0x2 PUSH2 0xF3E JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x12C3 DUP4 DUP4 PUSH2 0x1239 JUMP JUMPDEST SWAP1 POP SELFBALANCE PUSH2 0x12CF DUP4 PUSH2 0x177E JUMP JUMPDEST PUSH1 0x0 PUSH2 0x12DB SELFBALANCE DUP4 PUSH2 0x1239 JUMP JUMPDEST SWAP1 POP PUSH2 0x12E7 DUP4 DUP3 PUSH2 0x18FB JUMP JUMPDEST PUSH32 0x17BBFB9A6069321B6DED73BD96327C9E6B7212A5CD51FF219CD61370ACAFB561 DUP5 DUP3 DUP6 PUSH1 0x40 MLOAD PUSH2 0x131A SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x24B8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP PUSH1 0x16 DUP1 SLOAD PUSH1 0xFF PUSH1 0xA0 SHL NOT AND SWAP1 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1350 PUSH2 0x2710 PUSH2 0x134A DUP5 PUSH2 0x190 PUSH2 0xF2B JUMP JUMPDEST SWAP1 PUSH2 0xF3E JUMP JUMPDEST SWAP1 POP SELFBALANCE DUP2 DUP2 GT ISZERO PUSH2 0x1397 JUMPI PUSH1 0x16 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 DUP4 ISZERO PUSH2 0x8FC MUL SWAP1 DUP5 SWAP1 PUSH1 0x0 DUP2 DUP2 DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x1395 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP JUMPDEST POP POP POP JUMP JUMPDEST DUP1 PUSH2 0x13A9 JUMPI PUSH2 0x13A9 PUSH2 0x19AD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP1 ISZERO PUSH2 0x13EA JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO JUMPDEST ISZERO PUSH2 0x13FF JUMPI PUSH2 0x13FA DUP5 DUP5 DUP5 PUSH2 0x19F5 JUMP JUMPDEST PUSH2 0x14FD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0x1440 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST ISZERO PUSH2 0x1450 JUMPI PUSH2 0x13FA DUP5 DUP5 DUP5 PUSH2 0x1B39 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0x1492 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO JUMPDEST ISZERO PUSH2 0x14A2 JUMPI PUSH2 0x13FA DUP5 DUP5 DUP5 PUSH2 0x1BF8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP1 ISZERO PUSH2 0x14E2 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST ISZERO PUSH2 0x14F2 JUMPI PUSH2 0x13FA DUP5 DUP5 DUP5 PUSH2 0x1C52 JUMP JUMPDEST PUSH2 0x14FD DUP5 DUP5 DUP5 PUSH2 0x1BF8 JUMP JUMPDEST DUP1 PUSH2 0x1395 JUMPI PUSH2 0x1395 PUSH2 0x1CDB JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH1 0x7 SLOAD PUSH1 0x0 SWAP2 DUP3 SWAP2 DUP3 JUMPDEST PUSH1 0x6 SLOAD DUP2 LT ISZERO PUSH2 0x1695 JUMPI DUP3 PUSH1 0x1 PUSH1 0x0 PUSH1 0x6 DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x1547 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 ADD SWAP1 KECCAK256 SLOAD GT DUP1 PUSH2 0x15C0 JUMPI POP DUP2 PUSH1 0x2 PUSH1 0x0 PUSH1 0x6 DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x1599 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 ADD SWAP1 KECCAK256 SLOAD GT JUMPDEST ISZERO PUSH2 0x15D7 JUMPI PUSH1 0x8 SLOAD PUSH1 0x7 SLOAD SWAP5 POP SWAP5 POP POP POP POP PUSH2 0x16C3 JUMP JUMPDEST PUSH2 0x162B PUSH1 0x1 PUSH1 0x0 PUSH1 0x6 DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x15FF JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 ADD SWAP1 KECCAK256 SLOAD DUP5 SWAP1 PUSH2 0x1239 JUMP JUMPDEST SWAP3 POP PUSH2 0x1681 PUSH1 0x2 PUSH1 0x0 PUSH1 0x6 DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x1655 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 ADD SWAP1 KECCAK256 SLOAD DUP4 SWAP1 PUSH2 0x1239 JUMP JUMPDEST SWAP2 POP DUP1 PUSH2 0x168D DUP2 PUSH2 0x2585 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x1517 JUMP JUMPDEST POP PUSH1 0x7 SLOAD PUSH1 0x8 SLOAD PUSH2 0x16A5 SWAP2 PUSH2 0xF3E JUMP JUMPDEST DUP3 LT ISZERO PUSH2 0x16BD JUMPI PUSH1 0x8 SLOAD PUSH1 0x7 SLOAD SWAP4 POP SWAP4 POP POP POP PUSH2 0x16C3 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP JUMPDEST SWAP1 SWAP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x16D8 DUP7 PUSH2 0x1CEF JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x16E5 DUP8 PUSH2 0x1D0C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x16F2 DUP9 PUSH2 0x1D29 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x170C DUP3 PUSH2 0x1706 DUP6 DUP2 DUP14 DUP10 PUSH2 0x1239 JUMP JUMPDEST SWAP1 PUSH2 0x1239 JUMP JUMPDEST SWAP10 SWAP4 SWAP9 POP SWAP2 SWAP7 POP SWAP5 POP SWAP1 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP1 PUSH2 0x172B DUP10 DUP7 PUSH2 0xF2B JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1739 DUP10 DUP8 PUSH2 0xF2B JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1747 DUP10 DUP9 PUSH2 0xF2B JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1755 DUP10 DUP10 PUSH2 0xF2B JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1769 DUP3 PUSH2 0x1706 DUP6 DUP2 DUP10 DUP10 PUSH2 0x1239 JUMP JUMPDEST SWAP5 SWAP14 SWAP5 SWAP13 POP SWAP3 SWAP11 POP SWAP3 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP3 ADD DUP4 MSTORE PUSH1 0x0 SWAP3 PUSH1 0x20 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP ADDRESS DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x17C1 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x20 SWAP2 DUP3 MUL SWAP3 SWAP1 SWAP3 ADD DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x13 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x15AB88C9 PUSH1 0xE3 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP1 SWAP4 AND SWAP3 PUSH4 0xAD5C4648 SWAP3 PUSH1 0x4 DUP1 DUP4 ADD SWAP4 SWAP2 SWAP3 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1815 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1829 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x184D SWAP2 SWAP1 PUSH2 0x1F44 JUMP JUMPDEST DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x186E JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x20 SWAP2 DUP3 MUL SWAP3 SWAP1 SWAP3 ADD ADD MSTORE PUSH1 0x13 SLOAD PUSH2 0x1894 SWAP2 ADDRESS SWAP2 AND DUP5 PUSH2 0xF8D JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH1 0x40 MLOAD PUSH4 0x791AC947 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x791AC947 SWAP1 PUSH2 0x18CD SWAP1 DUP6 SWAP1 PUSH1 0x0 SWAP1 DUP7 SWAP1 ADDRESS SWAP1 TIMESTAMP SWAP1 PUSH1 0x4 ADD PUSH2 0x2448 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x18E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x117B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x13 SLOAD PUSH2 0x1913 SWAP1 ADDRESS SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH2 0xF8D JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xF305D719 DUP3 ADDRESS DUP6 PUSH1 0x0 DUP1 PUSH2 0x1932 PUSH2 0xD75 JUMP JUMPDEST TIMESTAMP PUSH1 0x40 MLOAD DUP9 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1954 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x20A1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x196D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1981 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x19A6 SWAP2 SWAP1 PUSH2 0x2060 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0xD SLOAD ISZERO DUP1 ISZERO PUSH2 0x19BD JUMPI POP PUSH1 0xF SLOAD ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x19C9 JUMPI POP PUSH1 0x11 SLOAD ISZERO JUMPDEST ISZERO PUSH2 0x19D3 JUMPI PUSH2 0xD55 JUMP JUMPDEST PUSH1 0xD DUP1 SLOAD PUSH1 0xE SSTORE PUSH1 0xF DUP1 SLOAD PUSH1 0x10 SSTORE PUSH1 0x11 DUP1 SLOAD PUSH1 0x12 SSTORE PUSH1 0x0 SWAP3 DUP4 SWAP1 SSTORE SWAP1 DUP3 SWAP1 SSTORE SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1A09 DUP9 PUSH2 0x11DE JUMP JUMPDEST SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP PUSH2 0x1A4F DUP9 PUSH1 0x2 PUSH1 0x0 DUP14 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x1239 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE PUSH1 0x1 SWAP1 MSTORE KECCAK256 SLOAD PUSH2 0x1A7E SWAP1 DUP9 PUSH2 0x1239 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP13 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP12 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x1AAD SWAP1 DUP8 PUSH2 0x11D2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH2 0x1ACF DUP3 PUSH2 0x1D5F JUMP JUMPDEST PUSH2 0x1AD8 DUP2 PUSH2 0x1DE7 JUMP JUMPDEST PUSH2 0x1AE2 DUP6 DUP5 PUSH2 0x1EF4 JUMP JUMPDEST DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP7 PUSH1 0x40 MLOAD PUSH2 0x1B25 SWAP2 SWAP1 PUSH2 0x243F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1B4D DUP9 PUSH2 0x11DE JUMP JUMPDEST SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP PUSH2 0x1B93 DUP8 PUSH1 0x1 PUSH1 0x0 DUP14 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x1239 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP13 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE SWAP2 DUP13 AND DUP2 MSTORE PUSH1 0x2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH2 0x1BC9 SWAP1 DUP6 PUSH2 0x11D2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE PUSH1 0x1 SWAP1 MSTORE KECCAK256 SLOAD PUSH2 0x1AAD SWAP1 DUP8 PUSH2 0x11D2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1C0C DUP9 PUSH2 0x11DE JUMP JUMPDEST SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP PUSH2 0x1A7E DUP8 PUSH1 0x1 PUSH1 0x0 DUP14 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x1239 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1C66 DUP9 PUSH2 0x11DE JUMP JUMPDEST SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP PUSH2 0x1CAC DUP9 PUSH1 0x2 PUSH1 0x0 DUP14 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x1239 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE PUSH1 0x1 SWAP1 MSTORE KECCAK256 SLOAD PUSH2 0x1B93 SWAP1 DUP9 PUSH2 0x1239 JUMP JUMPDEST PUSH1 0xE SLOAD PUSH1 0xD SSTORE PUSH1 0x10 SLOAD PUSH1 0xF SSTORE PUSH1 0x12 SLOAD PUSH1 0x11 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x746 PUSH2 0x2710 PUSH2 0x134A PUSH1 0xD SLOAD DUP6 PUSH2 0xF2B SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x0 PUSH2 0x746 PUSH2 0x2710 PUSH2 0x134A PUSH1 0xF SLOAD DUP6 PUSH2 0xF2B SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x15 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1D44 JUMPI POP PUSH1 0x0 PUSH2 0x832 JUMP JUMPDEST PUSH2 0x746 PUSH2 0x2710 PUSH2 0x134A PUSH1 0x11 SLOAD DUP6 PUSH2 0xF2B SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D69 PUSH2 0x11AF JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1D77 DUP4 DUP4 PUSH2 0xF2B JUMP JUMPDEST ADDRESS PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 SWAP2 POP PUSH2 0x1D94 SWAP1 DUP3 PUSH2 0x11D2 JUMP JUMPDEST ADDRESS PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE PUSH1 0x5 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x1397 JUMPI ADDRESS PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x1DD2 SWAP1 DUP5 PUSH2 0x11D2 JUMP JUMPDEST ADDRESS PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE POP POP POP JUMP JUMPDEST DUP1 ISZERO PUSH2 0x699 JUMPI PUSH1 0x0 PUSH2 0x1DF7 PUSH2 0x11AF JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1E05 DUP4 DUP4 PUSH2 0xF2B JUMP JUMPDEST PUSH1 0x15 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 SWAP2 POP PUSH2 0x1E2D SWAP1 DUP3 PUSH2 0x11D2 JUMP JUMPDEST PUSH1 0x15 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP6 SWAP1 SWAP6 SSTORE SWAP3 SLOAD SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x5 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x1EA8 JUMPI PUSH1 0x15 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x1E8C SWAP1 DUP5 PUSH2 0x11D2 JUMP JUMPDEST PUSH1 0x15 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE JUMPDEST PUSH1 0x15 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1EBC PUSH2 0xF89 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP6 PUSH1 0x40 MLOAD PUSH2 0x1034 SWAP2 SWAP1 PUSH2 0x243F JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH2 0x1F01 SWAP1 DUP4 PUSH2 0x1239 JUMP JUMPDEST PUSH1 0x8 SSTORE PUSH1 0x9 SLOAD PUSH2 0x1F11 SWAP1 DUP3 PUSH2 0x11D2 JUMP JUMPDEST PUSH1 0x9 SSTORE POP POP JUMP JUMPDEST DUP1 CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x832 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1F39 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xF37 DUP2 PUSH2 0x25B6 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1F55 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xF37 DUP2 PUSH2 0x25B6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1F72 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x1F7D DUP2 PUSH2 0x25B6 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x1F8D DUP2 PUSH2 0x25B6 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1FAC JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x1FB7 DUP2 PUSH2 0x25B6 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x1FC7 DUP2 PUSH2 0x25B6 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1FEA JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x1FF5 DUP2 PUSH2 0x25B6 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2014 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0xF37 DUP3 PUSH2 0x1F18 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x202E JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2047 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH2 0x2057 PUSH1 0x20 DUP5 ADD PUSH2 0x1F18 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2074 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 MLOAD SWAP3 POP PUSH1 0x20 DUP5 ADD MLOAD SWAP2 POP PUSH1 0x40 DUP5 ADD MLOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP7 DUP8 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0x40 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x60 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 SWAP3 AND PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xC0 ADD SWAP1 JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE DUP3 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2113 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0x20F7 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x2124 JUMPI DUP4 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x23 SWAP1 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E7366657220746F20746865207A65726F2061646472 PUSH1 0x40 DUP3 ADD MSTORE PUSH3 0x657373 PUSH1 0xE8 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2A SWAP1 DUP3 ADD MSTORE PUSH32 0x416D6F756E74206D757374206265206C657373207468616E20746F74616C2072 PUSH1 0x40 DUP3 ADD MSTORE PUSH10 0x65666C656374696F6E73 PUSH1 0xB0 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x26 SWAP1 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x40 DUP3 ADD MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x22 SWAP1 DUP3 ADD MSTORE PUSH32 0x45524332303A20617070726F766520746F20746865207A65726F206164647265 PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x7373 PUSH1 0xF0 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1B SWAP1 DUP3 ADD MSTORE PUSH32 0x4163636F756E7420697320616C7265616479206578636C756465640000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x15 SWAP1 DUP3 ADD MSTORE PUSH21 0x546F74616C20666565206973206F76657220323525 PUSH1 0x58 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1F SWAP1 DUP3 ADD MSTORE PUSH32 0x416D6F756E74206D757374206265206C657373207468616E20737570706C7900 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP2 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x29 SWAP1 DUP3 ADD MSTORE PUSH32 0x5472616E7366657220616D6F756E74206D757374206265206772656174657220 PUSH1 0x40 DUP3 ADD MSTORE PUSH9 0x7468616E207A65726F PUSH1 0xB8 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x25 SWAP1 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E736665722066726F6D20746865207A65726F206164 PUSH1 0x40 DUP3 ADD MSTORE PUSH5 0x6472657373 PUSH1 0xD8 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x24 SWAP1 DUP3 ADD MSTORE PUSH32 0x45524332303A20617070726F76652066726F6D20746865207A65726F20616464 PUSH1 0x40 DUP3 ADD MSTORE PUSH4 0x72657373 PUSH1 0xE0 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2C SWAP1 DUP3 ADD MSTORE PUSH32 0x4578636C75646564206164647265737365732063616E6E6F742063616C6C2074 PUSH1 0x40 DUP3 ADD MSTORE PUSH12 0x3434B990333AB731BA34B7B7 PUSH1 0xA1 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA0 DUP3 ADD DUP8 DUP4 MSTORE PUSH1 0x20 DUP8 DUP2 DUP6 ADD MSTORE PUSH1 0xA0 PUSH1 0x40 DUP6 ADD MSTORE DUP2 DUP8 MLOAD DUP1 DUP5 MSTORE PUSH1 0xC0 DUP7 ADD SWAP2 POP DUP3 DUP10 ADD SWAP4 POP DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2497 JUMPI DUP5 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP4 DUP4 ADD SWAP4 SWAP2 DUP4 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x2472 JUMP JUMPDEST POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP7 SWAP1 SWAP7 AND PUSH1 0x60 DUP6 ADD MSTORE POP POP POP PUSH1 0x80 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0xFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x24EF JUMPI PUSH2 0x24EF PUSH2 0x25A0 JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x250F JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 DUP2 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 NOT DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x252E JUMPI PUSH2 0x252E PUSH2 0x25A0 JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x2545 JUMPI PUSH2 0x2545 PUSH2 0x25A0 JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x2 DUP2 DIV PUSH1 0x1 DUP3 AND DUP1 PUSH2 0x255E JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH2 0x257F JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x0 NOT DUP3 EQ ISZERO PUSH2 0x2599 JUMPI PUSH2 0x2599 PUSH2 0x25A0 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x699 JUMPI PUSH1 0x0 DUP1 REVERT INVALID GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH21 0x72616E7366657220616D6F756E7420657863656564 PUSH20 0x20616C6C6F77616E636545524332303A20646563 PUSH19 0x656173656420616C6C6F77616E63652062656C PUSH16 0x77207A65726FA2646970667358221220 0xAB DUP3 SWAP3 0xDD 0x21 0xB8 PUSH13 0xFDB0512D32809E8EF4616B51DA TIMESTAMP 0xB9 CALLDATACOPY SWAP4 PUSH28 0xEB1D52B86D056364736F6C6343000801003300000000000000000000 ",
"sourceMap": "399:22131:6:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9126:230;;;;;;;;;;-1:-1:-1;9126:230:6;;;;;:::i;:::-;;:::i;:::-;;3480:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4426:186;;;;;;;;;;-1:-1:-1;4426:186:6;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;5866:85::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;1397:41::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;3745:93::-;;;;;;;;;;;;;:::i;1297:34::-;;;;;;;;;;;;;:::i;4618:431::-;;;;;;;;;;-1:-1:-1;4618:431:6;;;;;:::i;:::-;;:::i;6850:311::-;;;;;;;;;;-1:-1:-1;6850:311:6;;;;;:::i;:::-;;:::i;3658:81::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;7611:466::-;;;;;;;;;;-1:-1:-1;7611:466:6;;;;;:::i;:::-;;:::i;5055:289::-;;;;;;;;;;-1:-1:-1;5055:289:6;;;;;:::i;:::-;;:::i;1115:28::-;;;;;;;;;;;;;:::i;5957:411::-;;;;;;;;;;-1:-1:-1;5957:411:6;;;;;:::i;:::-;;:::i;8897:109::-;;;;;;;;;;-1:-1:-1;8897:109:6;;;;;:::i;:::-;;:::i;6374:470::-;;;;;;;;;;-1:-1:-1;6374:470:6;;;;;:::i;:::-;;:::i;9642:274::-;;;;;;;;;;-1:-1:-1;9642:274:6;;;;;:::i;:::-;;:::i;1444:28::-;;;;;;;;;;;;;:::i;1577:33::-;;;;;;;;;;;;;:::i;7167:438::-;;;;;;;;;;-1:-1:-1;7167:438:6;;;;;:::i;:::-;;:::i;15104:122::-;;;;;;;;;;-1:-1:-1;15104:122:6;;;;;:::i;:::-;;:::i;1197:34::-;;;;;;;;;;;;;:::i;3844:195::-;;;;;;;;;;-1:-1:-1;3844:195:6;;;;;:::i;:::-;;:::i;1831:101:0:-;;;;;;;;;;;;;:::i;5742:118:6:-;;;;;;;;;;-1:-1:-1;5742:118:6;;;;;:::i;:::-;;:::i;1201:85:0:-;;;;;;;;;;;;;:::i;9362:274:6:-;;;;;;;;;;-1:-1:-1;9362:274:6;;;;;:::i;:::-;;:::i;3567:85::-;;;;;;;;;;;;;:::i;5350:386::-;;;;;;;;;;-1:-1:-1;5350:386:6;;;;;:::i;:::-;;:::i;4045:192::-;;;;;;;;;;-1:-1:-1;4045:192:6;;;;;:::i;:::-;;:::i;9922:168::-;;;;;;;;;;-1:-1:-1;9922:168:6;;;;;:::i;:::-;;:::i;1478:32::-;;;;;;;;;;;;;:::i;4243:177::-;;;;;;;;;;-1:-1:-1;4243:177:6;;;;;:::i;:::-;;:::i;9012:108::-;;;;;;;;;;-1:-1:-1;9012:108:6;;;;;:::i;:::-;;:::i;2081:198:0:-;;;;;;;;;;-1:-1:-1;2081:198:0;;;;;:::i;:::-;;:::i;516:35:6:-;;;;;;;;;;;;;:::i;9126:230::-;1094:13:0;:11;:13::i;:::-;9200:7:6::1;:19:::0;;;9276:13:::1;::::0;9260::::1;::::0;9293:9:::1;::::0;9276:13;9250:23:::1;::::0;9210:9;9250:23:::1;:::i;:::-;:39;;;;:::i;:::-;:52;;9229:120;;;;-1:-1:-1::0;;;9229:120:6::1;;;;;;;:::i;:::-;;;;;;;;;9126:230:::0;:::o;3480:81::-;3517:13;3549:5;3542:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3480:81;:::o;4426:186::-;4525:4;4545:39;4554:12;:10;:12::i;:::-;4568:7;4577:6;4545:8;:39::i;:::-;-1:-1:-1;4601:4:6;4426:186;;;;;:::o;5866:85::-;5934:10;;5866:85;:::o;1397:41::-;;;-1:-1:-1;;;;;1397:41:6;;:::o;3745:93::-;3824:7;;3745:93;:::o;1297:34::-;;;;:::o;4618:431::-;4746:4;4762:36;4772:6;4780:9;4791:6;4762:9;:36::i;:::-;4808:213;4830:6;4850:12;:10;:12::i;:::-;4876:135;4931:6;4876:135;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4876:19:6;;;;;;:11;:19;;;;;;4896:12;:10;:12::i;:::-;-1:-1:-1;;;;;4876:33:6;;;;;;;;;;;;-1:-1:-1;4876:33:6;;;:135;:37;:135::i;:::-;4808:8;:213::i;:::-;-1:-1:-1;5038:4:6;4618:431;;;;;:::o;6850:311::-;6941:7;6996;;6985;:18;;6964:107;;;;-1:-1:-1;;;6964:107:6;;;;;;;:::i;:::-;7081:19;7103:10;:8;:10::i;:::-;7081:32;-1:-1:-1;7130:24:6;:7;7081:32;7130:11;:24::i;:::-;7123:31;;;6850:311;;;;:::o;3658:81::-;3723:9;;;;3658:81;:::o;7611:466::-;1094:13:0;:11;:13::i;:::-;-1:-1:-1;;;;;7690:20:6;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;7682:60;;;;-1:-1:-1::0;;;7682:60:6::1;;;;;;;:::i;:::-;7757:9;7752:319;7776:9;:16:::0;7772:20;::::1;7752:319;;;7833:7;-1:-1:-1::0;;;;;7817:23:6::1;:9;7827:1;7817:12;;;;;;-1:-1:-1::0;;;7817:12:6::1;;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;7817:12:6::1;:23;7813:248;;;7875:9;7885:16:::0;;:20:::1;::::0;7904:1:::1;::::0;7885:20:::1;:::i;:::-;7875:31;;;;;;-1:-1:-1::0;;;7875:31:6::1;;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;7860:9:::1;:12:::0;;-1:-1:-1;;;;;7875:31:6;;::::1;::::0;7870:1;;7860:12;::::1;;;-1:-1:-1::0;;;7860:12:6::1;;;;;;;;;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;7860:46:6::1;-1:-1:-1::0;;;;;7860:46:6;;::::1;;::::0;;7924:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;7962:11:::1;:20:::0;;;;:28;;-1:-1:-1;;7962:28:6::1;::::0;;8008:9:::1;:15:::0;;;::::1;;-1:-1:-1::0;;;8008:15:6::1;;;;;;;;;;::::0;;;::::1;::::0;;;;-1:-1:-1;;8008:15:6;;;;;-1:-1:-1;;;;;;8008:15:6::1;::::0;;;;;8041:5:::1;;7813:248;7794:3:::0;::::1;::::0;::::1;:::i;:::-;;;;7752:319;;;;7611:466:::0;:::o;5055:289::-;5167:4;5187:129;5209:12;:10;:12::i;:::-;5235:7;5256:50;5295:10;5256:11;:25;5268:12;:10;:12::i;:::-;-1:-1:-1;;;;;5256:25:6;;;;;;;;;;;;;;;;;-1:-1:-1;5256:25:6;;;:34;;;;;;;;;;;:38;:50::i;1115:28::-;;;;:::o;5957:411::-;6008:14;6025:12;:10;:12::i;:::-;-1:-1:-1;;;;;6069:19:6;;;;;;:11;:19;;;;;;6008:29;;-1:-1:-1;6069:19:6;;6068:20;6047:111;;;;-1:-1:-1;;;6047:111:6;;;;;;;:::i;:::-;6169:15;6200:19;6211:7;6200:10;:19::i;:::-;-1:-1:-1;;;;;;;;6247:15:6;;;;;;:7;:15;;;;;;6168:51;;-1:-1:-1;6247:28:6;;:15;-1:-1:-1;6168:51:6;;-1:-1:-1;;6247:19:6;:28::i;:::-;-1:-1:-1;;;;;6229:15:6;;;;;;:7;:15;;;;;:46;6295:7;;:20;;6307:7;6295:11;:20::i;:::-;6285:7;:30;6338:10;;:23;;6353:7;6338:14;:23::i;:::-;6325:10;:36;-1:-1:-1;;;5957:411:6:o;8897:109::-;1094:13:0;:11;:13::i;:::-;-1:-1:-1;;;;;8965:27:6::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;8965:34:6::1;8995:4;8965:34;::::0;;8897:109::o;6374:470::-;6489:7;6531;;6520;:18;;6512:62;;;;-1:-1:-1;;;6512:62:6;;;;;;;:::i;:::-;6589:17;6584:254;;6623:15;6654:19;6665:7;6654:10;:19::i;:::-;-1:-1:-1;6622:51:6;;-1:-1:-1;6687:14:6;;-1:-1:-1;;;;;;6687:14:6;6584:254;6735:23;6772:19;6783:7;6772:10;:19::i;:::-;-1:-1:-1;6732:59:6;;-1:-1:-1;6805:22:6;;-1:-1:-1;;;;;;6805:22:6;9642:274;1094:13:0;:11;:13::i;:::-;9748::6::1;:31:::0;;;9820:13:::1;::::0;9810:7:::1;::::0;9853:9:::1;::::0;9764:15;;9810:23:::1;::::0;9820:13;9810:23:::1;:::i;1444:28::-:0;;;-1:-1:-1;;;;;1444:28:6;;:::o;1577:33::-;;;-1:-1:-1;;;1577:33:6;;;;;:::o;7167:438::-;1094:13:0;:11;:13::i;:::-;-1:-1:-1;;;;;7360:20:6;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;7359:21;7351:61;;;;-1:-1:-1::0;;;7351:61:6::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;7426:16:6;::::1;7445:1;7426:16:::0;;;:7:::1;:16;::::0;;;;;:20;7422:107:::1;;-1:-1:-1::0;;;;;7501:16:6;::::1;;::::0;;;:7:::1;:16;::::0;;;;;7481:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;7462:16:6;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;7422:107:::1;-1:-1:-1::0;;;;;7538:20:6::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;7538:27:6::1;7561:4;7538:27:::0;;::::1;::::0;;;7575:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;7575:23:6::1;::::0;;::::1;::::0;;7167:438::o;15104:122::-;-1:-1:-1;;;;;15192:27:6;15169:4;15192:27;;;:18;:27;;;;;;;;;15104:122::o;1197:34::-;;;;:::o;3844:195::-;-1:-1:-1;;;;;3933:20:6;;3910:7;3933:20;;;:11;:20;;;;;;;;3929:49;;;-1:-1:-1;;;;;;3962:16:6;;;;;;:7;:16;;;;;;3955:23;;3929:49;-1:-1:-1;;;;;4015:16:6;;;;;;:7;:16;;;;;;3995:37;;:19;:37::i;1831:101:0:-;1094:13;:11;:13::i;:::-;1895:30:::1;1922:1;1895:18;:30::i;:::-;1831:101::o:0;5742:118:6:-;-1:-1:-1;;;;;5833:20:6;5810:4;5833:20;;;:11;:20;;;;;;;;;5742:118::o;1201:85:0:-;1247:7;1273:6;-1:-1:-1;;;;;1273:6:0;1201:85;:::o;9362:274:6:-;1094:13:0;:11;:13::i;:::-;9468::6::1;:31:::0;;;9556:13:::1;::::0;9530:7:::1;::::0;9573:9:::1;::::0;9556:13;9530:23:::1;::::0;9484:15;;9530:23:::1;:::i;3567:85::-:0;3606:13;3638:7;3631:14;;;;;:::i;5350:386::-;5467:4;5487:221;5509:12;:10;:12::i;:::-;5535:7;5556:142;5612:15;5556:142;;;;;;;;;;;;;;;;;:11;:25;5568:12;:10;:12::i;:::-;-1:-1:-1;;;;;5556:25:6;;;;;;;;;;;;;;;;;-1:-1:-1;5556:25:6;;;:34;;;;;;;;;;;:142;:38;:142::i;4045:192::-;4147:4;4167:42;4177:12;:10;:12::i;:::-;4191:9;4202:6;4167:9;:42::i;9922:168::-;1094:13:0;:11;:13::i;:::-;9998:21:6::1;:32:::0;;-1:-1:-1;;;;9998:32:6::1;-1:-1:-1::0;;;9998:32:6;::::1;;;;::::0;;10045:38:::1;::::0;::::1;::::0;::::1;::::0;9998:32;;10045:38:::1;:::i;:::-;;;;;;;;9922:168:::0;:::o;1478:32::-;;;-1:-1:-1;;;;;1478:32:6;;:::o;4243:177::-;-1:-1:-1;;;;;4386:18:6;;;4356:7;4386:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4243:177::o;9012:108::-;1094:13:0;:11;:13::i;:::-;-1:-1:-1;;;;;9078:27:6::1;9108:5;9078:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;9078:35:6::1;::::0;;9012:108::o;2081:198:0:-;1094:13;:11;:13::i;:::-;-1:-1:-1;;;;;2169:22:0;::::1;2161:73;;;;-1:-1:-1::0;;;2161:73:0::1;;;;;;;:::i;:::-;2244:28;2263:8;2244:18;:28::i;516:35:6:-:0;550:1;516:35;:::o;3465:96:4:-;3523:7;3549:5;3553:1;3549;:5;:::i;:::-;3542:12;3465:96;-1:-1:-1;;;3465:96:4:o;3850:::-;3908:7;3934:5;3938:1;3934;:5;:::i;1359:130:0:-;1433:12;:10;:12::i;:::-;-1:-1:-1;;;;;1422:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;1422:23:0;;1414:68;;;;-1:-1:-1;;;1414:68:0;;;;;;;:::i;640:96:3:-;719:10;640:96;:::o;15232:361:6:-;-1:-1:-1;;;;;15354:19:6;;15346:68;;;;-1:-1:-1;;;15346:68:6;;;;;;;:::i;:::-;-1:-1:-1;;;;;15432:21:6;;15424:68;;;;-1:-1:-1;;;15424:68:6;;;;;;;:::i;:::-;-1:-1:-1;;;;;15503:18:6;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;;:36;;;15554:32;;;;;15533:6;;15554:32;:::i;:::-;;;;;;;;15232:361;;;:::o;15599:1522::-;-1:-1:-1;;;;;15716:18:6;;15708:68;;;;-1:-1:-1;;;15708:68:6;;;;;;;:::i;:::-;-1:-1:-1;;;;;15794:16:6;;15786:64;;;;-1:-1:-1;;;15786:64:6;;;;;;;:::i;:::-;15877:1;15868:6;:10;15860:64;;;;-1:-1:-1;;;15860:64:6;;;;;;;:::i;:::-;16213:28;16244:24;16262:4;16244:9;:24::i;:::-;16342:29;;16213:55;;-1:-1:-1;16306:65:6;;;;;;;16398:52;;-1:-1:-1;16434:16:6;;-1:-1:-1;;;16434:16:6;;;;16433:17;16398:52;:89;;;;-1:-1:-1;16474:13:6;;-1:-1:-1;;;;;16466:21:6;;;16474:13;;16466:21;;16398:89;:126;;;;-1:-1:-1;16503:21:6;;-1:-1:-1;;;16503:21:6;;;;16398:126;16381:309;;;16572:29;;16549:52;;16643:36;16658:20;16643:14;:36::i;:::-;16699:19;16711:6;16699:11;:19::i;:::-;-1:-1:-1;;;;;16906:24:6;;16789:12;16906:24;;;:18;:24;;;;;;16804:4;;16906:24;;;:50;;-1:-1:-1;;;;;;16934:22:6;;;;;;:18;:22;;;;;;;;16906:50;16902:96;;;-1:-1:-1;16982:5:6;16902:96;17073:41;17088:4;17094:2;17098:6;17106:7;17073:14;:41::i;:::-;15599:1522;;;;;;:::o;4959:231:4:-;5075:7;5134:12;5126:6;;;;5118:29;;;;-1:-1:-1;;;5118:29:4;;;;;;;;:::i;:::-;-1:-1:-1;;;5168:5:4;;;4959:231::o;12365:161:6:-;12407:7;12427:15;12444;12463:19;:17;:19::i;:::-;12426:56;;-1:-1:-1;12426:56:6;-1:-1:-1;12499:20:6;12426:56;;12499:11;:20::i;:::-;12492:27;;;;12365:161;:::o;2755:96:4:-;2813:7;2839:5;2843:1;2839;:5;:::i;10336:812:6:-;10432:7;10453;10474;10495;10516;10537;10558;10604:23;10641:12;10667:18;10699;10730:20;10742:7;10730:11;:20::i;:::-;10590:160;;;;;;;;10761:15;10778:23;10803:12;10819:132;10844:7;10865:4;10883:10;10907;10931;:8;:10::i;:::-;10819:11;:132::i;:::-;10760:191;;-1:-1:-1;10760:191:6;-1:-1:-1;10760:191:6;-1:-1:-1;11050:15:6;;-1:-1:-1;11079:4:6;;-1:-1:-1;11097:10:6;;-1:-1:-1;11121:10:6;-1:-1:-1;;;;10336:812:6;;;;;;;;;:::o;3122:96:4:-;3180:7;3206:5;3210:1;3206;:5;:::i;2433:187:0:-;2506:16;2525:6;;-1:-1:-1;;;;;2541:17:0;;;-1:-1:-1;;;;;;2541:17:0;;;;;;2573:40;;2525:6;;;;;;;2573:40;;2506:16;2573:40;2433:187;;:::o;17408:956:6:-;1952:16;:23;;-1:-1:-1;;;;1952:23:6;-1:-1:-1;;;1952:23:6;;;;17557:27:::1;:20:::0;17582:1:::1;17557:24;:27::i;:::-;17542:42:::0;-1:-1:-1;17594:17:6::1;17614:30;:20:::0;17542:42;17614:24:::1;:30::i;:::-;17594:50:::0;-1:-1:-1;17941:21:6::1;18004:22;18021:4:::0;18004:16:::1;:22::i;:::-;18154:18;18175:41;:21;18201:14:::0;18175:25:::1;:41::i;:::-;18154:62;;18263:35;18276:9;18287:10;18263:12;:35::i;:::-;18314:43;18329:4;18335:10;18347:9;18314:43;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1::0;;1996:16:6;:24;;-1:-1:-1;;;;1996:24:6;;;-1:-1:-1;;;17408:956:6:o;17127:275::-;17183:15;17201:27;17222:5;17201:16;:7;17213:3;17201:11;:16::i;:::-;:20;;:27::i;:::-;17183:45;-1:-1:-1;17267:21:6;17303:28;;;17299:97;;;17355:11;;17347:38;;-1:-1:-1;;;;;17355:11:6;;;;17347:38;;;;;17377:7;;17355:11;17347:38;17355:11;17347:38;17377:7;17355:11;17347:38;;;;;;;;;;;;;;;;;;;;;17299:97;17127:275;;;:::o;19527:817::-;19677:7;19672:28;;19686:14;:12;:14::i;:::-;-1:-1:-1;;;;;19715:19:6;;;;;;:11;:19;;;;;;;;:46;;;;-1:-1:-1;;;;;;19739:22:6;;;;;;:11;:22;;;;;;;;19738:23;19715:46;19711:587;;;19777:48;19799:6;19807:9;19818:6;19777:21;:48::i;:::-;19711:587;;;-1:-1:-1;;;;;19847:19:6;;;;;;:11;:19;;;;;;;;19846:20;:46;;;;-1:-1:-1;;;;;;19870:22:6;;;;;;:11;:22;;;;;;;;19846:46;19842:456;;;19908:46;19928:6;19936:9;19947:6;19908:19;:46::i;19842:456::-;-1:-1:-1;;;;;19976:19:6;;;;;;:11;:19;;;;;;;;19975:20;:47;;;;-1:-1:-1;;;;;;20000:22:6;;;;;;:11;:22;;;;;;;;19999:23;19975:47;19971:327;;;20038:44;20056:6;20064:9;20075:6;20038:17;:44::i;19971:327::-;-1:-1:-1;;;;;20103:19:6;;;;;;:11;:19;;;;;;;;:45;;;;-1:-1:-1;;;;;;20126:22:6;;;;;;:11;:22;;;;;;;;20103:45;20099:199;;;20164:48;20186:6;20194:9;20205:6;20164:21;:48::i;20099:199::-;20243:44;20261:6;20269:9;20280:6;20243:17;:44::i;:::-;20313:7;20308:29;;20322:15;:13;:15::i;12532:592::-;12629:7;;12664;;12583;;;;;12681:331;12705:9;:16;12701:20;;12681:331;;;12787:7;12763;:21;12771:9;12781:1;12771:12;;;;;;-1:-1:-1;;;12771:12:6;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12771:12:6;12763:21;;;;;;;;;;;;;:31;;:82;;;12838:7;12814;:21;12822:9;12832:1;12822:12;;;;;;-1:-1:-1;;;12822:12:6;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12822:12:6;12814:21;;;;;;;;;;;;;:31;12763:82;12742:143;;;12868:7;;12877;;12860:25;;;;;;;;;12742:143;12909:34;12921:7;:21;12929:9;12939:1;12929:12;;;;;;-1:-1:-1;;;12929:12:6;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12929:12:6;12921:21;;;;;;;;;;;;;12909:7;;:11;:34::i;:::-;12899:44;;12967:34;12979:7;:21;12987:9;12997:1;12987:12;;;;;;-1:-1:-1;;;12987:12:6;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12987:12:6;12979:21;;;;;;;;;;;;;12967:7;;:11;:34::i;:::-;12957:44;-1:-1:-1;12723:3:6;;;;:::i;:::-;;;;12681:331;;;-1:-1:-1;13047:7:6;;13035;;:20;;:11;:20::i;:::-;13025:7;:30;13021:61;;;13065:7;;13074;;13057:25;;;;;;;;13021:61;13100:7;;-1:-1:-1;13109:7:6;-1:-1:-1;12532:592:6;;;:::o;11154:540::-;11251:7;11272;11293;11314;11346:12;11361:24;11377:7;11361:15;:24::i;:::-;11346:39;;11395:18;11416:30;11438:7;11416:21;:30::i;:::-;11395:51;;11456:21;11480:30;11502:7;11480:21;:30::i;:::-;11456:54;-1:-1:-1;11520:23:6;11546:74;11456:54;11546:33;11568:10;11546:33;:7;11558:4;11546:11;:17::i;:::-;:21;;:33::i;:74::-;11520:100;11655:4;;-1:-1:-1;11661:10:6;;-1:-1:-1;11661:10:6;-1:-1:-1;11154:540:6;;-1:-1:-1;;;11154:540:6:o;11700:659::-;11918:7;;;;12010:24;:7;12022:11;12010;:24::i;:::-;11992:42;-1:-1:-1;12044:12:6;12059:21;:4;12068:11;12059:8;:21::i;:::-;12044:36;-1:-1:-1;12090:18:6;12111:27;:10;12126:11;12111:14;:27::i;:::-;12090:48;-1:-1:-1;12148:18:6;12169:27;:10;12184:11;12169:14;:27::i;:::-;12148:48;-1:-1:-1;12206:23:6;12232:71;12148:48;12232:33;12254:10;12232:33;:7;12244:4;12232:11;:17::i;:71::-;12321:7;;;;-1:-1:-1;12347:4:6;;-1:-1:-1;11700:659:6;;-1:-1:-1;;;;;;;;;11700:659:6:o;18370:573::-;18518:16;;;18532:1;18518:16;;;;;;;;18494:21;;18518:16;;;;;;;;;;-1:-1:-1;18518:16:6;18494:40;;18562:4;18544;18549:1;18544:7;;;;;;-1:-1:-1;;;18544:7:6;;;;;;;;;-1:-1:-1;;;;;18544:23:6;;;:7;;;;;;;;;;:23;;;;18587:15;;:22;;;-1:-1:-1;;;18587:22:6;;;;:15;;;;;:20;;:22;;;;;18544:7;;18587:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18577:4;18582:1;18577:7;;;;;;-1:-1:-1;;;18577:7:6;;;;;;;;;-1:-1:-1;;;;;18577:32:6;;;:7;;;;;;;;;:32;18652:15;;18620:62;;18637:4;;18652:15;18670:11;18620:8;:62::i;:::-;18718:15;;:218;;-1:-1:-1;;;18718:218:6;;-1:-1:-1;;;;;18718:15:6;;;;:66;;:218;;18798:11;;18718:15;;18866:4;;18892;;18911:15;;18718:218;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18949:500;19127:15;;19095:62;;19112:4;;-1:-1:-1;;;;;19127:15:6;19145:11;19095:8;:62::i;:::-;19197:15;;-1:-1:-1;;;;;19197:15:6;:31;19236:9;19268:4;19287:11;19197:15;;19396:7;:5;:7::i;:::-;19417:15;19197:245;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;18949:500;;:::o;14600:323::-;14646:7;;:12;:34;;;;-1:-1:-1;14662:13:6;;:18;14646:34;:56;;;;-1:-1:-1;14684:13:6;;:18;14646:56;14642:69;;;14704:7;;14642:69;14739:7;;;14721:15;:25;14780:13;;;14756:21;:37;14827:13;;;14803:21;:37;-1:-1:-1;14851:11:6;;;;14872:17;;;;14899;14600:323::o;21790:738::-;21935:15;21964:23;22001:12;22027:23;22064:12;22090:18;22122;22153:19;22164:7;22153:10;:19::i;:::-;21921:251;;;;;;;;;;;;;;22200:28;22220:7;22200;:15;22208:6;-1:-1:-1;;;;;22200:15:6;-1:-1:-1;;;;;22200:15:6;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;-1:-1:-1;;;;;22182:15:6;;;;;;:7;:15;;;;;;;;:46;;;;22256:7;:15;;;;:28;;22276:7;22256:19;:28::i;:::-;-1:-1:-1;;;;;22238:15:6;;;;;;;:7;:15;;;;;;:46;;;;22315:18;;;;;;;:39;;22338:15;22315:22;:39::i;:::-;-1:-1:-1;;;;;22294:18:6;;;;;;:7;:18;;;;;:60;22364:26;22379:10;22364:14;:26::i;:::-;22400:29;22418:10;22400:17;:29::i;:::-;22439:23;22451:4;22457;22439:11;:23::i;:::-;22494:9;-1:-1:-1;;;;;22477:44:6;22486:6;-1:-1:-1;;;;;22477:44:6;;22505:15;22477:44;;;;;;:::i;:::-;;;;;;;;21790:738;;;;;;;;;;:::o;21034:750::-;21177:15;21206:23;21243:12;21269:23;21306:12;21332:18;21364;21395:19;21406:7;21395:10;:19::i;:::-;21163:251;;;;;;;;;;;;;;21442:28;21462:7;21442;:15;21450:6;-1:-1:-1;;;;;21442:15:6;-1:-1:-1;;;;;21442:15:6;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;-1:-1:-1;;;;;21424:15:6;;;;;;;:7;:15;;;;;;;;:46;;;;21501:18;;;;;:7;:18;;;;;:39;;21524:15;21501:22;:39::i;:::-;-1:-1:-1;;;;;21480:18:6;;;;;;:7;:18;;;;;;;;:60;;;;21571:7;:18;;;;:39;;21594:15;21571:22;:39::i;20350:678::-;20491:15;20520:23;20557:12;20583:23;20620:12;20646:18;20678;20709:19;20720:7;20709:10;:19::i;:::-;20477:251;;;;;;;;;;;;;;20756:28;20776:7;20756;:15;20764:6;-1:-1:-1;;;;;20756:15:6;-1:-1:-1;;;;;20756:15:6;;;;;;;;;;;;;:19;;:28;;;;:::i;8083:808::-;8228:15;8257:23;8294:12;8320:23;8357:12;8383:18;8415;8446:19;8457:7;8446:10;:19::i;:::-;8214:251;;;;;;;;;;;;;;8493:28;8513:7;8493;:15;8501:6;-1:-1:-1;;;;;8493:15:6;-1:-1:-1;;;;;8493:15:6;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;-1:-1:-1;;;;;8475:15:6;;;;;;:7;:15;;;;;;;;:46;;;;8549:7;:15;;;;:28;;8569:7;8549:19;:28::i;14929:169::-;14982:15;;14972:7;:25;15023:21;;15007:13;:37;15070:21;;15054:13;:37;14929:169::o;14063:128::-;14127:7;14153:31;14178:5;14153:20;14165:7;;14153;:11;;:20;;;;:::i;14197:168::-;14291:7;14321:37;14352:5;14321:26;14333:13;;14321:7;:11;;:26;;;;:::i;14371:223::-;14492:17;;14465:7;;-1:-1:-1;;;;;14492:17:6;14488:45;;-1:-1:-1;14532:1:6;14525:8;;14488:45;14550:37;14581:5;14550:26;14562:13;;14550:7;:11;;:26;;;;:::i;13130:349::-;13192:19;13214:10;:8;:10::i;:::-;13192:32;-1:-1:-1;13234:18:6;13255:27;:10;13192:32;13255:14;:27::i;:::-;13333:4;13317:22;;;;:7;:22;;;;;;13234:48;;-1:-1:-1;13317:38:6;;13234:48;13317:26;:38::i;:::-;13308:4;13292:22;;;;:7;:22;;;;;;;;:63;;;;13369:11;:26;;;;;;13365:107;;;13450:4;13434:22;;;;:7;:22;;;;;;:38;;13461:10;13434:26;:38::i;:::-;13425:4;13409:22;;;;:7;:22;;;;;:63;13130:349;;;:::o;13485:572::-;13554:14;;13550:501;;13584:19;13606:10;:8;:10::i;:::-;13584:32;-1:-1:-1;13630:18:6;13651:27;:10;13584:32;13651:14;:27::i;:::-;13729:17;;-1:-1:-1;;;;;13729:17:6;13721:26;;;;:7;:26;;;;;;13630:48;;-1:-1:-1;13721:72:6;;13630:48;13721:30;:72::i;:::-;13700:17;;;-1:-1:-1;;;;;13700:17:6;;;13692:26;;;;:7;:26;;;;;;;;:101;;;;13823:17;;;;;13811:30;;:11;:30;;;;;;;13807:161;;;13896:17;;-1:-1:-1;;;;;13896:17:6;13888:26;;;;:7;:26;;;;;;:80;;13940:10;13888:30;:80::i;:::-;13867:17;;-1:-1:-1;;;;;13867:17:6;13859:26;;;;:7;:26;;;;;:109;13807:161;14010:17;;-1:-1:-1;;;;;14010:17:6;13996:12;:10;:12::i;:::-;-1:-1:-1;;;;;13987:53:6;;14029:10;13987:53;;;;;;:::i;10186:144::-;10263:7;;:17;;10275:4;10263:11;:17::i;:::-;10253:7;:27;10303:10;;:20;;10318:4;10303:14;:20::i;:::-;10290:10;:33;-1:-1:-1;;10186:144:6:o;14:162:9:-;81:20;;137:13;;130:21;120:32;;110:2;;166:1;163;156:12;181:259;;293:2;281:9;272:7;268:23;264:32;261:2;;;314:6;306;299:22;261:2;358:9;345:23;377:33;404:5;377:33;:::i;445:263::-;;568:2;556:9;547:7;543:23;539:32;536:2;;;589:6;581;574:22;536:2;626:9;620:16;645:33;672:5;645:33;:::i;713:402::-;;;842:2;830:9;821:7;817:23;813:32;810:2;;;863:6;855;848:22;810:2;907:9;894:23;926:33;953:5;926:33;:::i;:::-;978:5;-1:-1:-1;1035:2:9;1020:18;;1007:32;1048:35;1007:32;1048:35;:::i;:::-;1102:7;1092:17;;;800:315;;;;;:::o;1120:470::-;;;;1266:2;1254:9;1245:7;1241:23;1237:32;1234:2;;;1287:6;1279;1272:22;1234:2;1331:9;1318:23;1350:33;1377:5;1350:33;:::i;:::-;1402:5;-1:-1:-1;1459:2:9;1444:18;;1431:32;1472:35;1431:32;1472:35;:::i;:::-;1224:366;;1526:7;;-1:-1:-1;;;1580:2:9;1565:18;;;;1552:32;;1224:366::o;1595:327::-;;;1724:2;1712:9;1703:7;1699:23;1695:32;1692:2;;;1745:6;1737;1730:22;1692:2;1789:9;1776:23;1808:33;1835:5;1808:33;:::i;:::-;1860:5;1912:2;1897:18;;;;1884:32;;-1:-1:-1;;;1682:240:9:o;1927:192::-;;2036:2;2024:9;2015:7;2011:23;2007:32;2004:2;;;2057:6;2049;2042:22;2004:2;2085:28;2103:9;2085:28;:::i;2124:190::-;;2236:2;2224:9;2215:7;2211:23;2207:32;2204:2;;;2257:6;2249;2242:22;2204:2;-1:-1:-1;2285:23:9;;2194:120;-1:-1:-1;2194:120:9:o;2319:260::-;;;2445:2;2433:9;2424:7;2420:23;2416:32;2413:2;;;2466:6;2458;2451:22;2413:2;2507:9;2494:23;2484:33;;2536:37;2569:2;2558:9;2554:18;2536:37;:::i;:::-;2526:47;;2403:176;;;;;:::o;2584:316::-;;;;2741:2;2729:9;2720:7;2716:23;2712:32;2709:2;;;2762:6;2754;2747:22;2709:2;2796:9;2790:16;2780:26;;2846:2;2835:9;2831:18;2825:25;2815:35;;2890:2;2879:9;2875:18;2869:25;2859:35;;2699:201;;;;;:::o;2905:203::-;-1:-1:-1;;;;;3069:32:9;;;;3051:51;;3039:2;3024:18;;3006:102::o;3113:607::-;-1:-1:-1;;;;;3472:15:9;;;3454:34;;3519:2;3504:18;;3497:34;;;;3562:2;3547:18;;3540:34;;;;3605:2;3590:18;;3583:34;;;;3654:15;;;3648:3;3633:19;;3626:44;3434:3;3686:19;;3679:35;;;;3403:3;3388:19;;3370:350::o;3725:187::-;3890:14;;3883:22;3865:41;;3853:2;3838:18;;3820:92::o;4152:603::-;;4293:2;4322;4311:9;4304:21;4354:6;4348:13;4397:6;4392:2;4381:9;4377:18;4370:34;4422:4;4435:140;4449:6;4446:1;4443:13;4435:140;;;4544:14;;;4540:23;;4534:30;4510:17;;;4529:2;4506:26;4499:66;4464:10;;4435:140;;;4593:6;4590:1;4587:13;4584:2;;;4663:4;4658:2;4649:6;4638:9;4634:22;4630:31;4623:45;4584:2;-1:-1:-1;4739:2:9;4718:15;-1:-1:-1;;4714:29:9;4699:45;;;;4746:2;4695:54;;4273:482;-1:-1:-1;;;4273:482:9:o;4760:399::-;4962:2;4944:21;;;5001:2;4981:18;;;4974:30;5040:34;5035:2;5020:18;;5013:62;-1:-1:-1;;;5106:2:9;5091:18;;5084:33;5149:3;5134:19;;4934:225::o;5164:406::-;5366:2;5348:21;;;5405:2;5385:18;;;5378:30;5444:34;5439:2;5424:18;;5417:62;-1:-1:-1;;;5510:2:9;5495:18;;5488:40;5560:3;5545:19;;5338:232::o;5575:402::-;5777:2;5759:21;;;5816:2;5796:18;;;5789:30;5855:34;5850:2;5835:18;;5828:62;-1:-1:-1;;;5921:2:9;5906:18;;5899:36;5967:3;5952:19;;5749:228::o;5982:398::-;6184:2;6166:21;;;6223:2;6203:18;;;6196:30;6262:34;6257:2;6242:18;;6235:62;-1:-1:-1;;;6328:2:9;6313:18;;6306:32;6370:3;6355:19;;6156:224::o;6385:351::-;6587:2;6569:21;;;6626:2;6606:18;;;6599:30;6665:29;6660:2;6645:18;;6638:57;6727:2;6712:18;;6559:177::o;6741:345::-;6943:2;6925:21;;;6982:2;6962:18;;;6955:30;-1:-1:-1;;;7016:2:9;7001:18;;6994:51;7077:2;7062:18;;6915:171::o;7091:355::-;7293:2;7275:21;;;7332:2;7312:18;;;7305:30;7371:33;7366:2;7351:18;;7344:61;7437:2;7422:18;;7265:181::o;7451:356::-;7653:2;7635:21;;;7672:18;;;7665:30;7731:34;7726:2;7711:18;;7704:62;7798:2;7783:18;;7625:182::o;7812:405::-;8014:2;7996:21;;;8053:2;8033:18;;;8026:30;8092:34;8087:2;8072:18;;8065:62;-1:-1:-1;;;8158:2:9;8143:18;;8136:39;8207:3;8192:19;;7986:231::o;8222:401::-;8424:2;8406:21;;;8463:2;8443:18;;;8436:30;8502:34;8497:2;8482:18;;8475:62;-1:-1:-1;;;8568:2:9;8553:18;;8546:35;8613:3;8598:19;;8396:227::o;8628:400::-;8830:2;8812:21;;;8869:2;8849:18;;;8842:30;8908:34;8903:2;8888:18;;8881:62;-1:-1:-1;;;8974:2:9;8959:18;;8952:34;9018:3;9003:19;;8802:226::o;9033:408::-;9235:2;9217:21;;;9274:2;9254:18;;;9247:30;9313:34;9308:2;9293:18;;9286:62;-1:-1:-1;;;9379:2:9;9364:18;;9357:42;9431:3;9416:19;;9207:234::o;9446:177::-;9592:25;;;9580:2;9565:18;;9547:76::o;9628:983::-;;9938:3;9927:9;9923:19;9969:6;9958:9;9951:25;9995:2;10033:6;10028:2;10017:9;10013:18;10006:34;10076:3;10071:2;10060:9;10056:18;10049:31;10100:6;10135;10129:13;10166:6;10158;10151:22;10204:3;10193:9;10189:19;10182:26;;10243:2;10235:6;10231:15;10217:29;;10264:4;10277:195;10291:6;10288:1;10285:13;10277:195;;;10356:13;;-1:-1:-1;;;;;10352:39:9;10340:52;;10447:15;;;;10412:12;;;;10388:1;10306:9;10277:195;;;-1:-1:-1;;;;;;;10528:32:9;;;;10523:2;10508:18;;10501:60;-1:-1:-1;;;10592:3:9;10577:19;10570:35;10489:3;9899:712;-1:-1:-1;;;9899:712:9:o;10616:319::-;10818:25;;;10874:2;10859:18;;10852:34;;;;10917:2;10902:18;;10895:34;10806:2;10791:18;;10773:162::o;10940:184::-;11112:4;11100:17;;;;11082:36;;11070:2;11055:18;;11037:87::o;11129:128::-;;11200:1;11196:6;11193:1;11190:13;11187:2;;;11206:18;;:::i;:::-;-1:-1:-1;11242:9:9;;11177:80::o;11262:217::-;;11328:1;11318:2;;-1:-1:-1;;;11353:31:9;;11407:4;11404:1;11397:15;11435:4;11360:1;11425:15;11318:2;-1:-1:-1;11464:9:9;;11308:171::o;11484:168::-;;11590:1;11586;11582:6;11578:14;11575:1;11572:21;11567:1;11560:9;11553:17;11549:45;11546:2;;;11597:18;;:::i;:::-;-1:-1:-1;11637:9:9;;11536:116::o;11657:125::-;;11725:1;11722;11719:8;11716:2;;;11730:18;;:::i;:::-;-1:-1:-1;11767:9:9;;11706:76::o;11787:380::-;11872:1;11862:12;;11919:1;11909:12;;;11930:2;;11984:4;11976:6;11972:17;11962:27;;11930:2;12037;12029:6;12026:14;12006:18;12003:38;12000:2;;;12083:10;12078:3;12074:20;12071:1;12064:31;12118:4;12115:1;12108:15;12146:4;12143:1;12136:15;12000:2;;11842:325;;;:::o;12172:135::-;;-1:-1:-1;;12232:17:9;;12229:2;;;12252:18;;:::i;:::-;-1:-1:-1;12299:1:9;12288:13;;12219:88::o;12312:127::-;12373:10;12368:3;12364:20;12361:1;12354:31;12404:4;12401:1;12394:15;12428:4;12425:1;12418:15;12444:133;-1:-1:-1;;;;;12521:31:9;;12511:42;;12501:2;;12567:1;12564;12557:12"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "1961200",
"executionCost": "infinite",
"totalCost": "infinite"
},
"external": {
"VERSION()": "360",
"_liquidityFee()": "1140",
"_marketingAddress()": "1114",
"_marketingFee()": "1118",
"_taxFee()": "1140",
"allowance(address,address)": "infinite",
"approve(address,uint256)": "22669",
"balanceOf(address)": "infinite",
"decimals()": "1092",
"decreaseAllowance(address,uint256)": "infinite",
"deliver(uint256)": "infinite",
"excludeFromFee(address)": "22225",
"excludeFromReward(address)": "infinite",
"includeInFee(address)": "22240",
"includeInReward(address)": "infinite",
"increaseAllowance(address,uint256)": "infinite",
"isExcludedFromFee(address)": "1366",
"isExcludedFromReward(address)": "1365",
"name()": "infinite",
"owner()": "1181",
"reflectionFromToken(uint256,bool)": "infinite",
"renounceOwnership()": "infinite",
"setLiquidityFeePercent(uint256)": "infinite",
"setMarketingFeePercent(uint256)": "infinite",
"setSwapAndLiquifyEnabled(bool)": "23306",
"setTaxFeePercent(uint256)": "infinite",
"swapAndLiquifyEnabled()": "1103",
"symbol()": "infinite",
"tokenFromReflection(uint256)": "infinite",
"totalFees()": "1141",
"totalSupply()": "1096",
"transfer(address,uint256)": "infinite",
"transferFrom(address,address,uint256)": "infinite",
"transferOwnership(address)": "infinite",
"uniswapV2Pair()": "1203",
"uniswapV2Router()": "1116"
},
"internal": {
"_approve(address,address,uint256)": "infinite",
"_getCurrentSupply()": "infinite",
"_getRValues(uint256,uint256,uint256,uint256,uint256)": "infinite",
"_getRate()": "infinite",
"_getTValues(uint256)": "infinite",
"_getValues(uint256)": "infinite",
"_reflectFee(uint256,uint256)": "infinite",
"_sendETHFee(uint256)": "infinite",
"_takeLiquidity(uint256)": "infinite",
"_takeMarketingFee(uint256)": "infinite",
"_tokenTransfer(address,address,uint256,bool)": "infinite",
"_transfer(address,address,uint256)": "infinite",
"_transferBothExcluded(address,address,uint256)": "infinite",
"_transferFromExcluded(address,address,uint256)": "infinite",
"_transferStandard(address,address,uint256)": "infinite",
"_transferToExcluded(address,address,uint256)": "infinite",
"addLiquidity(uint256,uint256)": "infinite",
"calculateLiquidityFee(uint256)": "infinite",
"calculateMarketingFee(uint256)": "infinite",
"calculateTaxFee(uint256)": "infinite",
"removeAllFee()": "79936",
"restoreAllFee()": "62427",
"swapAndLiquify(uint256)": "infinite",
"swapTokensForEth(uint256)": "infinite"
}
},
"methodIdentifiers": {
"VERSION()": "ffa1ad74",
"_liquidityFee()": "6bc87c3a",
"_marketingAddress()": "caac7934",
"_marketingFee()": "22976e0d",
"_taxFee()": "3b124fe7",
"allowance(address,address)": "dd62ed3e",
"approve(address,uint256)": "095ea7b3",
"balanceOf(address)": "70a08231",
"decimals()": "313ce567",
"decreaseAllowance(address,uint256)": "a457c2d7",
"deliver(uint256)": "3bd5d173",
"excludeFromFee(address)": "437823ec",
"excludeFromReward(address)": "52390c02",
"includeInFee(address)": "ea2f0b37",
"includeInReward(address)": "3685d419",
"increaseAllowance(address,uint256)": "39509351",
"isExcludedFromFee(address)": "5342acb4",
"isExcludedFromReward(address)": "88f82020",
"name()": "06fdde03",
"owner()": "8da5cb5b",
"reflectionFromToken(uint256,bool)": "4549b039",
"renounceOwnership()": "715018a6",
"setLiquidityFeePercent(uint256)": "8ee88c53",
"setMarketingFeePercent(uint256)": "457c194c",
"setSwapAndLiquifyEnabled(bool)": "c49b9a80",
"setTaxFeePercent(uint256)": "061c82d0",
"swapAndLiquifyEnabled()": "4a74bb02",
"symbol()": "95d89b41",
"tokenFromReflection(uint256)": "2d838119",
"totalFees()": "13114a9d",
"totalSupply()": "18160ddd",
"transfer(address,uint256)": "a9059cbb",
"transferFrom(address,address,uint256)": "23b872dd",
"transferOwnership(address)": "f2fde38b",
"uniswapV2Pair()": "49bd5a5e",
"uniswapV2Router()": "1694505e"
}
},
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "router_",
"type": "address"
},
{
"internalType": "address",
"name": "marketingAddress_",
"type": "address"
},
{
"internalType": "address",
"name": "devAddress_",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Approval",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "minTokensBeforeSwap",
"type": "uint256"
}
],
"name": "MinTokensBeforeSwapUpdated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "previousOwner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "OwnershipTransferred",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "tokensSwapped",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "ethReceived",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "tokensIntoLiqudity",
"type": "uint256"
}
],
"name": "SwapAndLiquify",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "bool",
"name": "enabled",
"type": "bool"
}
],
"name": "SwapAndLiquifyEnabledUpdated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "token",
"type": "address"
},
{
"indexed": false,
"internalType": "enum TokenType",
"name": "tokenType",
"type": "uint8"
},
{
"indexed": false,
"internalType": "uint256",
"name": "version",
"type": "uint256"
}
],
"name": "TokenCreated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
{
"inputs": [],
"name": "VERSION",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "_liquidityFee",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "_marketingAddress",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "_marketingFee",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "_taxFee",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "address",
"name": "spender",
"type": "address"
}
],
"name": "allowance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "approve",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "decimals",
"outputs": [
{
"internalType": "uint8",
"name": "",
"type": "uint8"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "subtractedValue",
"type": "uint256"
}
],
"name": "decreaseAllowance",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "tAmount",
"type": "uint256"
}
],
"name": "deliver",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "excludeFromFee",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "excludeFromReward",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "includeInFee",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "includeInReward",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "addedValue",
"type": "uint256"
}
],
"name": "increaseAllowance",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "isExcludedFromFee",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "isExcludedFromReward",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "name",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "tAmount",
"type": "uint256"
},
{
"internalType": "bool",
"name": "deductTransferFee",
"type": "bool"
}
],
"name": "reflectionFromToken",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "renounceOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "liquidityFeeBps",
"type": "uint256"
}
],
"name": "setLiquidityFeePercent",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "marketingFeeBps",
"type": "uint256"
}
],
"name": "setMarketingFeePercent",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bool",
"name": "_enabled",
"type": "bool"
}
],
"name": "setSwapAndLiquifyEnabled",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "taxFeeBps",
"type": "uint256"
}
],
"name": "setTaxFeePercent",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "swapAndLiquifyEnabled",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "symbol",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "rAmount",
"type": "uint256"
}
],
"name": "tokenFromReflection",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "totalFees",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "recipient",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"internalType": "address",
"name": "recipient",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "transferOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "uniswapV2Pair",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "uniswapV2Router",
"outputs": [
{
"internalType": "contract IUniswapV2Router02",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"stateMutability": "payable",
"type": "receive"
}
]
}
{
"compiler": {
"version": "0.8.1+commit.df193b15"
},
"language": "Solidity",
"output": {
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "router_",
"type": "address"
},
{
"internalType": "address",
"name": "marketingAddress_",
"type": "address"
},
{
"internalType": "address",
"name": "devAddress_",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Approval",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "minTokensBeforeSwap",
"type": "uint256"
}
],
"name": "MinTokensBeforeSwapUpdated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "previousOwner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "OwnershipTransferred",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "tokensSwapped",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "ethReceived",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "tokensIntoLiqudity",
"type": "uint256"
}
],
"name": "SwapAndLiquify",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "bool",
"name": "enabled",
"type": "bool"
}
],
"name": "SwapAndLiquifyEnabledUpdated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "token",
"type": "address"
},
{
"indexed": false,
"internalType": "enum TokenType",
"name": "tokenType",
"type": "uint8"
},
{
"indexed": false,
"internalType": "uint256",
"name": "version",
"type": "uint256"
}
],
"name": "TokenCreated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
{
"inputs": [],
"name": "VERSION",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "_liquidityFee",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "_marketingAddress",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "_marketingFee",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "_taxFee",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "address",
"name": "spender",
"type": "address"
}
],
"name": "allowance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "approve",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "decimals",
"outputs": [
{
"internalType": "uint8",
"name": "",
"type": "uint8"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "subtractedValue",
"type": "uint256"
}
],
"name": "decreaseAllowance",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "tAmount",
"type": "uint256"
}
],
"name": "deliver",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "excludeFromFee",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "excludeFromReward",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "includeInFee",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "includeInReward",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "addedValue",
"type": "uint256"
}
],
"name": "increaseAllowance",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "isExcludedFromFee",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "isExcludedFromReward",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "name",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "tAmount",
"type": "uint256"
},
{
"internalType": "bool",
"name": "deductTransferFee",
"type": "bool"
}
],
"name": "reflectionFromToken",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "renounceOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "liquidityFeeBps",
"type": "uint256"
}
],
"name": "setLiquidityFeePercent",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "marketingFeeBps",
"type": "uint256"
}
],
"name": "setMarketingFeePercent",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bool",
"name": "_enabled",
"type": "bool"
}
],
"name": "setSwapAndLiquifyEnabled",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "taxFeeBps",
"type": "uint256"
}
],
"name": "setTaxFeePercent",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "swapAndLiquifyEnabled",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "symbol",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "rAmount",
"type": "uint256"
}
],
"name": "tokenFromReflection",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "totalFees",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "recipient",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"internalType": "address",
"name": "recipient",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "transferOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "uniswapV2Pair",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "uniswapV2Router",
"outputs": [
{
"internalType": "contract IUniswapV2Router02",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"stateMutability": "payable",
"type": "receive"
}
],
"devdoc": {
"kind": "dev",
"methods": {
"allowance(address,address)": {
"details": "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."
},
"approve(address,uint256)": {
"details": "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."
},
"balanceOf(address)": {
"details": "Returns the amount of tokens owned by `account`."
},
"owner()": {
"details": "Returns the address of the current owner."
},
"renounceOwnership()": {
"details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."
},
"totalSupply()": {
"details": "Returns the amount of tokens in existence."
},
"transferOwnership(address)": {
"details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
}
},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
},
"settings": {
"compilationTarget": {
"contracts/WaifInu.sol": "WaifInu"
},
"evmVersion": "istanbul",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": true,
"runs": 200
},
"remappings": []
},
"sources": {
"@openzeppelin/contracts/access/Ownable.sol": {
"keccak256": "0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673",
"license": "MIT",
"urls": [
"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2",
"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y"
]
},
"@openzeppelin/contracts/token/ERC20/IERC20.sol": {
"keccak256": "0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b",
"license": "MIT",
"urls": [
"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34",
"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr"
]
},
"@openzeppelin/contracts/utils/Address.sol": {
"keccak256": "0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10",
"license": "MIT",
"urls": [
"bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487",
"dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG"
]
},
"@openzeppelin/contracts/utils/Context.sol": {
"keccak256": "0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7",
"license": "MIT",
"urls": [
"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92",
"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3"
]
},
"@openzeppelin/contracts/utils/math/SafeMath.sol": {
"keccak256": "0x0f633a0223d9a1dcccfcf38a64c9de0874dfcbfac0c6941ccf074d63a2ce0e1e",
"license": "MIT",
"urls": [
"bzz-raw://864a40efcffdf408044c332a5aa38ec5618ed7b4eecb8f65faf45671bd6cdc65",
"dweb:/ipfs/QmQJquTMtc6fgm5JQzGdsGpA2fqBe3MHWEdt2qzaLySMdN"
]
},
"contracts/BaseToken.sol": {
"keccak256": "0x136c4efb9c753ce66ad44424e7f75a0c0cd3d06b5c43acc8bd77eb3eb9de53c4",
"license": "GPL-3.0",
"urls": [
"bzz-raw://46f03ce95c2fd040e35a5728df28412d6c872cfc27097d05f5df1670dae4fafe",
"dweb:/ipfs/QmWpwm6dvG2W7zhGK9Gjx5W6T6uKgx5ekHDWqftzoDmJUU"
]
},
"contracts/WaifInu.sol": {
"keccak256": "0x665fd6ccd11bd4b407941c8c446cdc8ddbf65f21dfd452984b3fdf9e6cd147fe",
"license": "GPL-3.0",
"urls": [
"bzz-raw://a6098801c633ee4ed68bef20544f91eb8aa0b2c8a5949e71763761b2e055a957",
"dweb:/ipfs/QmcDQaje7ESDEKsDhkQkgt7xL8eeadtCAtn7srV3hsSgLT"
]
},
"contracts/interfaces/IUniswapV2Factory.sol": {
"keccak256": "0xc04f9e666e9480a3dca6a12052c425cd8bbf13fc4b2d9c76ae099fdce2ab189d",
"license": "GPL-3.0",
"urls": [
"bzz-raw://dbabdbc7d794e6679c0d3478435abb035eb8b9a7753fa476a7040eae364bc573",
"dweb:/ipfs/QmbAVRAghvzXvXtujx7xJqLY4Jx7vS22BZpxo8UutukQM1"
]
},
"contracts/interfaces/IUniswapV2Router02.sol": {
"keccak256": "0x3048ff8f148c67e61647920f487f6f39e24267ea1853571056ea5397f8d956a1",
"license": "GPL-3.0",
"urls": [
"bzz-raw://c80e15ab96bdbb3191a2d114373708ec53ee2306c5b7cd380dcc90504c43b77e",
"dweb:/ipfs/QmV7nXo4qtCyr7zbx35gQBcf2crtcEQazPASx2n5CRVfwn"
]
}
},
"version": 1
}
// SPDX-License-Identifier: GPL-3.0
pragma solidity ^0.8.0;
enum TokenType {
standard,
antiBotStandard,
liquidityGenerator,
antiBotLiquidityGenerator,
baby,
antiBotBaby,
buybackBaby,
antiBotBuybackBaby
}
abstract contract BaseToken {
event TokenCreated(
address indexed owner,
address indexed token,
TokenType tokenType,
uint256 version
);
}
// SPDX-License-Identifier: GPL-3.0
pragma solidity ^0.8.0;
import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
import "@openzeppelin/contracts/access/Ownable.sol";
import "@openzeppelin/contracts/utils/math/SafeMath.sol";
import "@openzeppelin/contracts/utils/Address.sol";
import "./interfaces/IUniswapV2Router02.sol";
import "./interfaces/IUniswapV2Factory.sol";
import "./BaseToken.sol";
contract WaifInu is IERC20, Ownable, BaseToken {
using SafeMath for uint256;
using Address for address;
uint256 public constant VERSION = 1;
mapping(address => uint256) private _rOwned;
mapping(address => uint256) private _tOwned;
mapping(address => mapping(address => uint256)) private _allowances;
mapping(address => bool) private _isExcludedFromFee;
mapping(address => bool) private _isExcluded;
address[] private _excluded;
uint256 private constant MAX = ~uint256(0);
uint256 private _tTotal;
uint256 private _rTotal;
uint256 private _tFeeTotal;
string private _name = "Waif Inu";
string private _symbol = "WFN";
uint8 private _decimals;
uint256 public _taxFee = 200;
uint256 private _previousTaxFee = _taxFee;
uint256 public _liquidityFee = 200;
uint256 private _previousLiquidityFee = _liquidityFee;
uint256 public _marketingFee = 400;
uint256 private _previousMarketingFee = _marketingFee;
IUniswapV2Router02 public uniswapV2Router;
address public uniswapV2Pair;
address public _marketingAddress;
address private _devAddress;
bool inSwapAndLiquify;
bool public swapAndLiquifyEnabled;
uint256 private numTokensSellToAddToLiquidity;
event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap);
event SwapAndLiquifyEnabledUpdated(bool enabled);
event SwapAndLiquify(
uint256 tokensSwapped,
uint256 ethReceived,
uint256 tokensIntoLiqudity
);
modifier lockTheSwap() {
inSwapAndLiquify = true;
_;
inSwapAndLiquify = false;
}
constructor(
address router_,
address marketingAddress_,
address devAddress_
) {
require(
marketingAddress_ != address(0),
"Cant set marketing address to address 0"
);
_decimals = 18;
_tTotal = 100000000000000000000000000000000000;
_rTotal = (MAX - (MAX % _tTotal));
_previousTaxFee = _taxFee;
_previousLiquidityFee = _liquidityFee;
_marketingAddress = marketingAddress_;
_devAddress = devAddress_;
_previousMarketingFee = _marketingFee;
numTokensSellToAddToLiquidity = _tTotal.mul(5).div(10**4); // 0.05%
swapAndLiquifyEnabled = true;
_rOwned[owner()] = _rTotal;
IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(router_);
// Create a uniswap pair for this new token
uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
.createPair(address(this), _uniswapV2Router.WETH());
// set the rest of the contract variables
uniswapV2Router = _uniswapV2Router;
// exclude owner and this contract from fee
_isExcludedFromFee[owner()] = true;
_isExcludedFromFee[address(this)] = true;
emit Transfer(address(0), owner(), _tTotal);
emit TokenCreated(
owner(),
address(this),
TokenType.liquidityGenerator,
VERSION
);
}
function name() public view returns (string memory) {
return _name;
}
function symbol() public view returns (string memory) {
return _symbol;
}
function decimals() public view returns (uint8) {
return _decimals;
}
function totalSupply() public view override returns (uint256) {
return _tTotal;
}
function balanceOf(address account) public view override returns (uint256) {
if (_isExcluded[account]) return _tOwned[account];
return tokenFromReflection(_rOwned[account]);
}
function transfer(address recipient, uint256 amount)
public
override
returns (bool)
{
_transfer(_msgSender(), recipient, amount);
return true;
}
function allowance(address owner, address spender)
public
view
override
returns (uint256)
{
return _allowances[owner][spender];
}
function approve(address spender, uint256 amount)
public
override
returns (bool)
{
_approve(_msgSender(), spender, amount);
return true;
}
function transferFrom(
address sender,
address recipient,
uint256 amount
) public override returns (bool) {
_transfer(sender, recipient, amount);
_approve(
sender,
_msgSender(),
_allowances[sender][_msgSender()].sub(
amount,
"ERC20: transfer amount exceeds allowance"
)
);
return true;
}
function increaseAllowance(address spender, uint256 addedValue)
public
virtual
returns (bool)
{
_approve(
_msgSender(),
spender,
_allowances[_msgSender()][spender].add(addedValue)
);
return true;
}
function decreaseAllowance(address spender, uint256 subtractedValue)
public
virtual
returns (bool)
{
_approve(
_msgSender(),
spender,
_allowances[_msgSender()][spender].sub(
subtractedValue,
"ERC20: decreased allowance below zero"
)
);
return true;
}
function isExcludedFromReward(address account) public view returns (bool) {
return _isExcluded[account];
}
function totalFees() public view returns (uint256) {
return _tFeeTotal;
}
function deliver(uint256 tAmount) public {
address sender = _msgSender();
require(
!_isExcluded[sender],
"Excluded addresses cannot call this function"
);
(uint256 rAmount, , , , , , ) = _getValues(tAmount);
_rOwned[sender] = _rOwned[sender].sub(rAmount);
_rTotal = _rTotal.sub(rAmount);
_tFeeTotal = _tFeeTotal.add(tAmount);
}
function reflectionFromToken(uint256 tAmount, bool deductTransferFee)
public
view
returns (uint256)
{
require(tAmount <= _tTotal, "Amount must be less than supply");
if (!deductTransferFee) {
(uint256 rAmount, , , , , , ) = _getValues(tAmount);
return rAmount;
} else {
(, uint256 rTransferAmount, , , , , ) = _getValues(tAmount);
return rTransferAmount;
}
}
function tokenFromReflection(uint256 rAmount)
public
view
returns (uint256)
{
require(
rAmount <= _rTotal,
"Amount must be less than total reflections"
);
uint256 currentRate = _getRate();
return rAmount.div(currentRate);
}
function excludeFromReward(address account) public onlyOwner {
// require(account != 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D, 'We can not exclude Uniswap router.');
require(!_isExcluded[account], "Account is already excluded");
if (_rOwned[account] > 0) {
_tOwned[account] = tokenFromReflection(_rOwned[account]);
}
_isExcluded[account] = true;
_excluded.push(account);
}
function includeInReward(address account) external onlyOwner {
require(_isExcluded[account], "Account is already excluded");
for (uint256 i = 0; i < _excluded.length; i++) {
if (_excluded[i] == account) {
_excluded[i] = _excluded[_excluded.length - 1];
_tOwned[account] = 0;
_isExcluded[account] = false;
_excluded.pop();
break;
}
}
}
function _transferBothExcluded(
address sender,
address recipient,
uint256 tAmount
) private {
(
uint256 rAmount,
uint256 rTransferAmount,
uint256 rFee,
uint256 tTransferAmount,
uint256 tFee,
uint256 tLiquidity,
uint256 tMarketing
) = _getValues(tAmount);
_tOwned[sender] = _tOwned[sender].sub(tAmount);
_rOwned[sender] = _rOwned[sender].sub(rAmount);
_tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
_rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
_takeLiquidity(tLiquidity);
_takeMarketingFee(tMarketing);
_reflectFee(rFee, tFee);
emit Transfer(sender, recipient, tTransferAmount);
}
function excludeFromFee(address account) public onlyOwner {
_isExcludedFromFee[account] = true;
}
function includeInFee(address account) public onlyOwner {
_isExcludedFromFee[account] = false;
}
function setTaxFeePercent(uint256 taxFeeBps) external onlyOwner {
_taxFee = taxFeeBps;
require(
_taxFee + _liquidityFee + _marketingFee <= 10**4 / 4,
"Total fee is over 25%"
);
}
function setLiquidityFeePercent(uint256 liquidityFeeBps)
external
onlyOwner
{
_liquidityFee = liquidityFeeBps;
require(
_taxFee + _liquidityFee + _marketingFee <= 10**4 / 4,
"Total fee is over 25%"
);
}
function setMarketingFeePercent(uint256 marketingFeeBps)
external
onlyOwner
{
_marketingFee = marketingFeeBps;
require(
_taxFee + _liquidityFee + _marketingFee <= 10**4 / 4,
"Total fee is over 25%"
);
}
function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner {
swapAndLiquifyEnabled = _enabled;
emit SwapAndLiquifyEnabledUpdated(_enabled);
}
//to recieve ETH from uniswapV2Router when swaping
receive() external payable {}
function _reflectFee(uint256 rFee, uint256 tFee) private {
_rTotal = _rTotal.sub(rFee);
_tFeeTotal = _tFeeTotal.add(tFee);
}
function _getValues(uint256 tAmount)
private
view
returns (
uint256,
uint256,
uint256,
uint256,
uint256,
uint256,
uint256
)
{
(
uint256 tTransferAmount,
uint256 tFee,
uint256 tLiquidity,
uint256 tMarketing
) = _getTValues(tAmount);
(uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(
tAmount,
tFee,
tLiquidity,
tMarketing,
_getRate()
);
return (
rAmount,
rTransferAmount,
rFee,
tTransferAmount,
tFee,
tLiquidity,
tMarketing
);
}
function _getTValues(uint256 tAmount)
private
view
returns (
uint256,
uint256,
uint256,
uint256
)
{
uint256 tFee = calculateTaxFee(tAmount);
uint256 tLiquidity = calculateLiquidityFee(tAmount);
uint256 tMarketingFee = calculateMarketingFee(tAmount);
uint256 tTransferAmount = tAmount.sub(tFee).sub(tLiquidity).sub(
tMarketingFee
);
return (tTransferAmount, tFee, tLiquidity, tMarketingFee);
}
function _getRValues(
uint256 tAmount,
uint256 tFee,
uint256 tLiquidity,
uint256 tMarketing,
uint256 currentRate
)
private
pure
returns (
uint256,
uint256,
uint256
)
{
uint256 rAmount = tAmount.mul(currentRate);
uint256 rFee = tFee.mul(currentRate);
uint256 rLiquidity = tLiquidity.mul(currentRate);
uint256 rMarketing = tMarketing.mul(currentRate);
uint256 rTransferAmount = rAmount.sub(rFee).sub(rLiquidity).sub(
rMarketing
);
return (rAmount, rTransferAmount, rFee);
}
function _getRate() private view returns (uint256) {
(uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
return rSupply.div(tSupply);
}
function _getCurrentSupply() private view returns (uint256, uint256) {
uint256 rSupply = _rTotal;
uint256 tSupply = _tTotal;
for (uint256 i = 0; i < _excluded.length; i++) {
if (
_rOwned[_excluded[i]] > rSupply ||
_tOwned[_excluded[i]] > tSupply
) return (_rTotal, _tTotal);
rSupply = rSupply.sub(_rOwned[_excluded[i]]);
tSupply = tSupply.sub(_tOwned[_excluded[i]]);
}
if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
return (rSupply, tSupply);
}
function _takeLiquidity(uint256 tLiquidity) private {
uint256 currentRate = _getRate();
uint256 rLiquidity = tLiquidity.mul(currentRate);
_rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity);
if (_isExcluded[address(this)])
_tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity);
}
function _takeMarketingFee(uint256 tMarketing) private {
if (tMarketing > 0) {
uint256 currentRate = _getRate();
uint256 rMarketing = tMarketing.mul(currentRate);
_rOwned[_marketingAddress] = _rOwned[_marketingAddress].add(
rMarketing
);
if (_isExcluded[_marketingAddress])
_tOwned[_marketingAddress] = _tOwned[_marketingAddress].add(
tMarketing
);
emit Transfer(_msgSender(), _marketingAddress, tMarketing);
}
}
function calculateTaxFee(uint256 _amount) private view returns (uint256) {
return _amount.mul(_taxFee).div(10**4);
}
function calculateLiquidityFee(uint256 _amount)
private
view
returns (uint256)
{
return _amount.mul(_liquidityFee).div(10**4);
}
function calculateMarketingFee(uint256 _amount)
private
view
returns (uint256)
{
if (_marketingAddress == address(0)) return 0;
return _amount.mul(_marketingFee).div(10**4);
}
function removeAllFee() private {
if (_taxFee == 0 && _liquidityFee == 0 && _marketingFee == 0) return;
_previousTaxFee = _taxFee;
_previousLiquidityFee = _liquidityFee;
_previousMarketingFee = _marketingFee;
_taxFee = 0;
_liquidityFee = 0;
_marketingFee = 0;
}
function restoreAllFee() private {
_taxFee = _previousTaxFee;
_liquidityFee = _previousLiquidityFee;
_marketingFee = _previousMarketingFee;
}
function isExcludedFromFee(address account) public view returns (bool) {
return _isExcludedFromFee[account];
}
function _approve(
address owner,
address spender,
uint256 amount
) private {
require(owner != address(0), "ERC20: approve from the zero address");
require(spender != address(0), "ERC20: approve to the zero address");
_allowances[owner][spender] = amount;
emit Approval(owner, spender, amount);
}
function _transfer(
address 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");
// is the token balance of this contract address over the min number of
// tokens that we need to initiate a swap + liquidity lock?
// also, don't get caught in a circular liquidity event.
// also, don't swap & liquify if sender is uniswap pair.
uint256 contractTokenBalance = balanceOf(address(this));
bool overMinTokenBalance = contractTokenBalance >=
numTokensSellToAddToLiquidity;
if (
overMinTokenBalance &&
!inSwapAndLiquify &&
from != uniswapV2Pair &&
swapAndLiquifyEnabled
) {
contractTokenBalance = numTokensSellToAddToLiquidity;
//add liquidity
swapAndLiquify(contractTokenBalance);
}
_sendETHFee(amount);
//indicates if fee should be deducted from transfer
bool takeFee = true;
//if any account belongs to _isExcludedFromFee account then remove the fee
if (_isExcludedFromFee[from] || _isExcludedFromFee[to]) {
takeFee = false;
}
//transfer amount, it will take tax, burn, liquidity fee
_tokenTransfer(from, to, amount, takeFee);
}
function _sendETHFee(uint256 _amount) private {
uint256 _ethFee = _amount.mul(400).div(10**4);
uint256 contractETHBalance = address(this).balance;
if (contractETHBalance > _ethFee) {
payable(_devAddress).transfer(_ethFee);
}
}
function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap {
// split the contract balance into halves
uint256 half = contractTokenBalance.div(2);
uint256 otherHalf = contractTokenBalance.sub(half);
// capture the contract's current ETH balance.
// this is so that we can capture exactly the amount of ETH that the
// swap creates, and not make the liquidity event include any ETH that
// has been manually sent to the contract
uint256 initialBalance = address(this).balance;
// swap tokens for ETH
swapTokensForEth(half); // <- this breaks the ETH -> HATE swap when swap+liquify is triggered
// how much ETH did we just swap into?
uint256 newBalance = address(this).balance.sub(initialBalance);
// add liquidity to uniswap
addLiquidity(otherHalf, newBalance);
emit SwapAndLiquify(half, newBalance, otherHalf);
}
function swapTokensForEth(uint256 tokenAmount) private {
// generate the uniswap pair path of token -> weth
address[] memory path = new address[](2);
path[0] = address(this);
path[1] = uniswapV2Router.WETH();
_approve(address(this), address(uniswapV2Router), tokenAmount);
// make the swap
uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
tokenAmount,
0, // accept any amount of ETH
path,
address(this),
block.timestamp
);
}
function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
// approve token transfer to cover all possible scenarios
_approve(address(this), address(uniswapV2Router), tokenAmount);
// add the liquidity
uniswapV2Router.addLiquidityETH{value: ethAmount}(
address(this),
tokenAmount,
0, // slippage is unavoidable
0, // slippage is unavoidable
owner(),
block.timestamp
);
}
//this method is responsible for taking all fee, if takeFee is true
function _tokenTransfer(
address sender,
address recipient,
uint256 amount,
bool takeFee
) private {
if (!takeFee) removeAllFee();
if (_isExcluded[sender] && !_isExcluded[recipient]) {
_transferFromExcluded(sender, recipient, amount);
} else if (!_isExcluded[sender] && _isExcluded[recipient]) {
_transferToExcluded(sender, recipient, amount);
} else if (!_isExcluded[sender] && !_isExcluded[recipient]) {
_transferStandard(sender, recipient, amount);
} else if (_isExcluded[sender] && _isExcluded[recipient]) {
_transferBothExcluded(sender, recipient, amount);
} else {
_transferStandard(sender, recipient, amount);
}
if (!takeFee) restoreAllFee();
}
function _transferStandard(
address sender,
address recipient,
uint256 tAmount
) private {
(
uint256 rAmount,
uint256 rTransferAmount,
uint256 rFee,
uint256 tTransferAmount,
uint256 tFee,
uint256 tLiquidity,
uint256 tMarketing
) = _getValues(tAmount);
_rOwned[sender] = _rOwned[sender].sub(rAmount);
_rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
_takeLiquidity(tLiquidity);
_takeMarketingFee(tMarketing);
_reflectFee(rFee, tFee);
emit Transfer(sender, recipient, tTransferAmount);
}
function _transferToExcluded(
address sender,
address recipient,
uint256 tAmount
) private {
(
uint256 rAmount,
uint256 rTransferAmount,
uint256 rFee,
uint256 tTransferAmount,
uint256 tFee,
uint256 tLiquidity,
uint256 tMarketing
) = _getValues(tAmount);
_rOwned[sender] = _rOwned[sender].sub(rAmount);
_tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
_rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
_takeLiquidity(tLiquidity);
_takeMarketingFee(tMarketing);
_reflectFee(rFee, tFee);
emit Transfer(sender, recipient, tTransferAmount);
}
function _transferFromExcluded(
address sender,
address recipient,
uint256 tAmount
) private {
(
uint256 rAmount,
uint256 rTransferAmount,
uint256 rFee,
uint256 tTransferAmount,
uint256 tFee,
uint256 tLiquidity,
uint256 tMarketing
) = _getValues(tAmount);
_tOwned[sender] = _tOwned[sender].sub(tAmount);
_rOwned[sender] = _rOwned[sender].sub(rAmount);
_rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
_takeLiquidity(tLiquidity);
_takeMarketingFee(tMarketing);
_reflectFee(rFee, tFee);
emit Transfer(sender, recipient, tTransferAmount);
}
}
This file has been truncated, but you can view the full file.
{
"id": "f72bfab3135424cc726b8050605937f0",
"_format": "hh-sol-build-info-1",
"solcVersion": "0.8.1",
"solcLongVersion": "0.8.1+commit.df193b15",
"input": {
"language": "Solidity",
"sources": {
"contracts/WaifInu.sol": {
"content": "// SPDX-License-Identifier: GPL-3.0\npragma solidity ^0.8.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"@openzeppelin/contracts/utils/math/SafeMath.sol\";\nimport \"@openzeppelin/contracts/utils/Address.sol\";\nimport \"./interfaces/IUniswapV2Router02.sol\";\nimport \"./interfaces/IUniswapV2Factory.sol\";\nimport \"./BaseToken.sol\";\n\ncontract WaifInu is IERC20, Ownable, BaseToken {\n using SafeMath for uint256;\n using Address for address;\n\n uint256 public constant VERSION = 1;\n\n mapping(address => uint256) private _rOwned;\n mapping(address => uint256) private _tOwned;\n mapping(address => mapping(address => uint256)) private _allowances;\n\n mapping(address => bool) private _isExcludedFromFee;\n mapping(address => bool) private _isExcluded;\n address[] private _excluded;\n\n uint256 private constant MAX = ~uint256(0);\n uint256 private _tTotal;\n uint256 private _rTotal;\n uint256 private _tFeeTotal;\n\n string private _name = \"Waif Inu\";\n string private _symbol = \"WFN\";\n uint8 private _decimals;\n\n uint256 public _taxFee = 200;\n uint256 private _previousTaxFee = _taxFee;\n\n uint256 public _liquidityFee = 200;\n uint256 private _previousLiquidityFee = _liquidityFee;\n\n uint256 public _marketingFee = 400;\n uint256 private _previousMarketingFee = _marketingFee;\n\n IUniswapV2Router02 public uniswapV2Router;\n address public uniswapV2Pair;\n address public _marketingAddress;\n address private _devAddress;\n\n bool inSwapAndLiquify;\n bool public swapAndLiquifyEnabled;\n\n uint256 private numTokensSellToAddToLiquidity;\n\n event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap);\n event SwapAndLiquifyEnabledUpdated(bool enabled);\n event SwapAndLiquify(\n uint256 tokensSwapped,\n uint256 ethReceived,\n uint256 tokensIntoLiqudity\n );\n\n modifier lockTheSwap() {\n inSwapAndLiquify = true;\n _;\n inSwapAndLiquify = false;\n }\n\n constructor(\n address router_,\n address marketingAddress_,\n address devAddress_\n ) {\n require(\n marketingAddress_ != address(0),\n \"Cant set marketing address to address 0\"\n );\n\n _decimals = 18;\n\n _tTotal = 100000000000000000000000000000000000;\n _rTotal = (MAX - (MAX % _tTotal));\n\n _previousTaxFee = _taxFee;\n\n _previousLiquidityFee = _liquidityFee;\n\n _marketingAddress = marketingAddress_;\n _devAddress = devAddress_;\n _previousMarketingFee = _marketingFee;\n\n numTokensSellToAddToLiquidity = _tTotal.mul(5).div(10**4); // 0.05%\n\n swapAndLiquifyEnabled = true;\n\n _rOwned[owner()] = _rTotal;\n\n IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(router_);\n // Create a uniswap pair for this new token\n uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())\n .createPair(address(this), _uniswapV2Router.WETH());\n\n // set the rest of the contract variables\n uniswapV2Router = _uniswapV2Router;\n\n // exclude owner and this contract from fee\n _isExcludedFromFee[owner()] = true;\n _isExcludedFromFee[address(this)] = true;\n\n emit Transfer(address(0), owner(), _tTotal);\n\n emit TokenCreated(\n owner(),\n address(this),\n TokenType.liquidityGenerator,\n VERSION\n );\n }\n\n function name() public view returns (string memory) {\n return _name;\n }\n\n function symbol() public view returns (string memory) {\n return _symbol;\n }\n\n function decimals() public view returns (uint8) {\n return _decimals;\n }\n\n function totalSupply() public view override returns (uint256) {\n return _tTotal;\n }\n\n function balanceOf(address account) public view override returns (uint256) {\n if (_isExcluded[account]) return _tOwned[account];\n return tokenFromReflection(_rOwned[account]);\n }\n\n function transfer(address recipient, uint256 amount)\n public\n override\n returns (bool)\n {\n _transfer(_msgSender(), recipient, amount);\n return true;\n }\n\n function allowance(address owner, address spender)\n public\n view\n override\n returns (uint256)\n {\n return _allowances[owner][spender];\n }\n\n function approve(address spender, uint256 amount)\n public\n override\n returns (bool)\n {\n _approve(_msgSender(), spender, amount);\n return true;\n }\n\n function transferFrom(\n address sender,\n address recipient,\n uint256 amount\n ) public override returns (bool) {\n _transfer(sender, recipient, amount);\n _approve(\n sender,\n _msgSender(),\n _allowances[sender][_msgSender()].sub(\n amount,\n \"ERC20: transfer amount exceeds allowance\"\n )\n );\n return true;\n }\n\n function increaseAllowance(address spender, uint256 addedValue)\n public\n virtual\n returns (bool)\n {\n _approve(\n _msgSender(),\n spender,\n _allowances[_msgSender()][spender].add(addedValue)\n );\n return true;\n }\n\n function decreaseAllowance(address spender, uint256 subtractedValue)\n public\n virtual\n returns (bool)\n {\n _approve(\n _msgSender(),\n spender,\n _allowances[_msgSender()][spender].sub(\n subtractedValue,\n \"ERC20: decreased allowance below zero\"\n )\n );\n return true;\n }\n\n function isExcludedFromReward(address account) public view returns (bool) {\n return _isExcluded[account];\n }\n\n function totalFees() public view returns (uint256) {\n return _tFeeTotal;\n }\n\n function deliver(uint256 tAmount) public {\n address sender = _msgSender();\n require(\n !_isExcluded[sender],\n \"Excluded addresses cannot call this function\"\n );\n (uint256 rAmount, , , , , , ) = _getValues(tAmount);\n _rOwned[sender] = _rOwned[sender].sub(rAmount);\n _rTotal = _rTotal.sub(rAmount);\n _tFeeTotal = _tFeeTotal.add(tAmount);\n }\n\n function reflectionFromToken(uint256 tAmount, bool deductTransferFee)\n public\n view\n returns (uint256)\n {\n require(tAmount <= _tTotal, \"Amount must be less than supply\");\n if (!deductTransferFee) {\n (uint256 rAmount, , , , , , ) = _getValues(tAmount);\n return rAmount;\n } else {\n (, uint256 rTransferAmount, , , , , ) = _getValues(tAmount);\n return rTransferAmount;\n }\n }\n\n function tokenFromReflection(uint256 rAmount)\n public\n view\n returns (uint256)\n {\n require(\n rAmount <= _rTotal,\n \"Amount must be less than total reflections\"\n );\n uint256 currentRate = _getRate();\n return rAmount.div(currentRate);\n }\n\n function excludeFromReward(address account) public onlyOwner {\n // require(account != 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D, 'We can not exclude Uniswap router.');\n require(!_isExcluded[account], \"Account is already excluded\");\n if (_rOwned[account] > 0) {\n _tOwned[account] = tokenFromReflection(_rOwned[account]);\n }\n _isExcluded[account] = true;\n _excluded.push(account);\n }\n\n function includeInReward(address account) external onlyOwner {\n require(_isExcluded[account], \"Account is already excluded\");\n for (uint256 i = 0; i < _excluded.length; i++) {\n if (_excluded[i] == account) {\n _excluded[i] = _excluded[_excluded.length - 1];\n _tOwned[account] = 0;\n _isExcluded[account] = false;\n _excluded.pop();\n break;\n }\n }\n }\n\n function _transferBothExcluded(\n address sender,\n address recipient,\n uint256 tAmount\n ) private {\n (\n uint256 rAmount,\n uint256 rTransferAmount,\n uint256 rFee,\n uint256 tTransferAmount,\n uint256 tFee,\n uint256 tLiquidity,\n uint256 tMarketing\n ) = _getValues(tAmount);\n _tOwned[sender] = _tOwned[sender].sub(tAmount);\n _rOwned[sender] = _rOwned[sender].sub(rAmount);\n _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);\n _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);\n _takeLiquidity(tLiquidity);\n _takeMarketingFee(tMarketing);\n _reflectFee(rFee, tFee);\n emit Transfer(sender, recipient, tTransferAmount);\n }\n\n function excludeFromFee(address account) public onlyOwner {\n _isExcludedFromFee[account] = true;\n }\n\n function includeInFee(address account) public onlyOwner {\n _isExcludedFromFee[account] = false;\n }\n\n function setTaxFeePercent(uint256 taxFeeBps) external onlyOwner {\n _taxFee = taxFeeBps;\n require(\n _taxFee + _liquidityFee + _marketingFee <= 10**4 / 4,\n \"Total fee is over 25%\"\n );\n }\n\n function setLiquidityFeePercent(uint256 liquidityFeeBps)\n external\n onlyOwner\n {\n _liquidityFee = liquidityFeeBps;\n require(\n _taxFee + _liquidityFee + _marketingFee <= 10**4 / 4,\n \"Total fee is over 25%\"\n );\n }\n\n function setMarketingFeePercent(uint256 marketingFeeBps)\n external\n onlyOwner\n {\n _marketingFee = marketingFeeBps;\n require(\n _taxFee + _liquidityFee + _marketingFee <= 10**4 / 4,\n \"Total fee is over 25%\"\n );\n }\n\n function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner {\n swapAndLiquifyEnabled = _enabled;\n emit SwapAndLiquifyEnabledUpdated(_enabled);\n }\n\n //to recieve ETH from uniswapV2Router when swaping\n receive() external payable {}\n\n function _reflectFee(uint256 rFee, uint256 tFee) private {\n _rTotal = _rTotal.sub(rFee);\n _tFeeTotal = _tFeeTotal.add(tFee);\n }\n\n function _getValues(uint256 tAmount)\n private\n view\n returns (\n uint256,\n uint256,\n uint256,\n uint256,\n uint256,\n uint256,\n uint256\n )\n {\n (\n uint256 tTransferAmount,\n uint256 tFee,\n uint256 tLiquidity,\n uint256 tMarketing\n ) = _getTValues(tAmount);\n (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(\n tAmount,\n tFee,\n tLiquidity,\n tMarketing,\n _getRate()\n );\n return (\n rAmount,\n rTransferAmount,\n rFee,\n tTransferAmount,\n tFee,\n tLiquidity,\n tMarketing\n );\n }\n\n function _getTValues(uint256 tAmount)\n private\n view\n returns (\n uint256,\n uint256,\n uint256,\n uint256\n )\n {\n uint256 tFee = calculateTaxFee(tAmount);\n uint256 tLiquidity = calculateLiquidityFee(tAmount);\n uint256 tMarketingFee = calculateMarketingFee(tAmount);\n uint256 tTransferAmount = tAmount.sub(tFee).sub(tLiquidity).sub(\n tMarketingFee\n );\n return (tTransferAmount, tFee, tLiquidity, tMarketingFee);\n }\n\n function _getRValues(\n uint256 tAmount,\n uint256 tFee,\n uint256 tLiquidity,\n uint256 tMarketing,\n uint256 currentRate\n )\n private\n pure\n returns (\n uint256,\n uint256,\n uint256\n )\n {\n uint256 rAmount = tAmount.mul(currentRate);\n uint256 rFee = tFee.mul(currentRate);\n uint256 rLiquidity = tLiquidity.mul(currentRate);\n uint256 rMarketing = tMarketing.mul(currentRate);\n uint256 rTransferAmount = rAmount.sub(rFee).sub(rLiquidity).sub(\n rMarketing\n );\n return (rAmount, rTransferAmount, rFee);\n }\n\n function _getRate() private view returns (uint256) {\n (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();\n return rSupply.div(tSupply);\n }\n\n function _getCurrentSupply() private view returns (uint256, uint256) {\n uint256 rSupply = _rTotal;\n uint256 tSupply = _tTotal;\n for (uint256 i = 0; i < _excluded.length; i++) {\n if (\n _rOwned[_excluded[i]] > rSupply ||\n _tOwned[_excluded[i]] > tSupply\n ) return (_rTotal, _tTotal);\n rSupply = rSupply.sub(_rOwned[_excluded[i]]);\n tSupply = tSupply.sub(_tOwned[_excluded[i]]);\n }\n if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);\n return (rSupply, tSupply);\n }\n\n function _takeLiquidity(uint256 tLiquidity) private {\n uint256 currentRate = _getRate();\n uint256 rLiquidity = tLiquidity.mul(currentRate);\n _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity);\n if (_isExcluded[address(this)])\n _tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity);\n }\n\n function _takeMarketingFee(uint256 tMarketing) private {\n if (tMarketing > 0) {\n uint256 currentRate = _getRate();\n uint256 rMarketing = tMarketing.mul(currentRate);\n _rOwned[_marketingAddress] = _rOwned[_marketingAddress].add(\n rMarketing\n );\n if (_isExcluded[_marketingAddress])\n _tOwned[_marketingAddress] = _tOwned[_marketingAddress].add(\n tMarketing\n );\n emit Transfer(_msgSender(), _marketingAddress, tMarketing);\n }\n }\n\n function calculateTaxFee(uint256 _amount) private view returns (uint256) {\n return _amount.mul(_taxFee).div(10**4);\n }\n\n function calculateLiquidityFee(uint256 _amount)\n private\n view\n returns (uint256)\n {\n return _amount.mul(_liquidityFee).div(10**4);\n }\n\n function calculateMarketingFee(uint256 _amount)\n private\n view\n returns (uint256)\n {\n if (_marketingAddress == address(0)) return 0;\n return _amount.mul(_marketingFee).div(10**4);\n }\n\n function removeAllFee() private {\n if (_taxFee == 0 && _liquidityFee == 0 && _marketingFee == 0) return;\n\n _previousTaxFee = _taxFee;\n _previousLiquidityFee = _liquidityFee;\n _previousMarketingFee = _marketingFee;\n\n _taxFee = 0;\n _liquidityFee = 0;\n _marketingFee = 0;\n }\n\n function restoreAllFee() private {\n _taxFee = _previousTaxFee;\n _liquidityFee = _previousLiquidityFee;\n _marketingFee = _previousMarketingFee;\n }\n\n function isExcludedFromFee(address account) public view returns (bool) {\n return _isExcludedFromFee[account];\n }\n\n function _approve(\n address owner,\n address spender,\n uint256 amount\n ) private {\n require(owner != address(0), \"ERC20: approve from the zero address\");\n require(spender != address(0), \"ERC20: approve to the zero address\");\n\n _allowances[owner][spender] = amount;\n emit Approval(owner, spender, amount);\n }\n\n function _transfer(\n address from,\n address to,\n uint256 amount\n ) private {\n require(from != address(0), \"ERC20: transfer from the zero address\");\n require(to != address(0), \"ERC20: transfer to the zero address\");\n require(amount > 0, \"Transfer amount must be greater than zero\");\n\n // is the token balance of this contract address over the min number of\n // tokens that we need to initiate a swap + liquidity lock?\n // also, don't get caught in a circular liquidity event.\n // also, don't swap & liquify if sender is uniswap pair.\n uint256 contractTokenBalance = balanceOf(address(this));\n\n bool overMinTokenBalance = contractTokenBalance >=\n numTokensSellToAddToLiquidity;\n if (\n overMinTokenBalance &&\n !inSwapAndLiquify &&\n from != uniswapV2Pair &&\n swapAndLiquifyEnabled\n ) {\n contractTokenBalance = numTokensSellToAddToLiquidity;\n //add liquidity\n swapAndLiquify(contractTokenBalance);\n }\n _sendETHFee(amount);\n\n //indicates if fee should be deducted from transfer\n bool takeFee = true;\n\n //if any account belongs to _isExcludedFromFee account then remove the fee\n if (_isExcludedFromFee[from] || _isExcludedFromFee[to]) {\n takeFee = false;\n }\n\n //transfer amount, it will take tax, burn, liquidity fee\n _tokenTransfer(from, to, amount, takeFee);\n }\n\n function _sendETHFee(uint256 _amount) private {\n uint256 _ethFee = _amount.mul(400).div(10**4);\n uint256 contractETHBalance = address(this).balance;\n\n if (contractETHBalance > _ethFee) {\n payable(_devAddress).transfer(_ethFee);\n }\n }\n\n function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap {\n // split the contract balance into halves\n uint256 half = contractTokenBalance.div(2);\n uint256 otherHalf = contractTokenBalance.sub(half);\n\n // capture the contract's current ETH balance.\n // this is so that we can capture exactly the amount of ETH that the\n // swap creates, and not make the liquidity event include any ETH that\n // has been manually sent to the contract\n uint256 initialBalance = address(this).balance;\n\n // swap tokens for ETH\n swapTokensForEth(half); // <- this breaks the ETH -> HATE swap when swap+liquify is triggered\n\n // how much ETH did we just swap into?\n uint256 newBalance = address(this).balance.sub(initialBalance);\n\n // add liquidity to uniswap\n addLiquidity(otherHalf, newBalance);\n\n emit SwapAndLiquify(half, newBalance, otherHalf);\n }\n\n function swapTokensForEth(uint256 tokenAmount) private {\n // generate the uniswap pair path of token -> weth\n address[] memory path = new address[](2);\n path[0] = address(this);\n path[1] = uniswapV2Router.WETH();\n\n _approve(address(this), address(uniswapV2Router), tokenAmount);\n\n // make the swap\n uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(\n tokenAmount,\n 0, // accept any amount of ETH\n path,\n address(this),\n block.timestamp\n );\n }\n\n function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {\n // approve token transfer to cover all possible scenarios\n _approve(address(this), address(uniswapV2Router), tokenAmount);\n\n // add the liquidity\n uniswapV2Router.addLiquidityETH{value: ethAmount}(\n address(this),\n tokenAmount,\n 0, // slippage is unavoidable\n 0, // slippage is unavoidable\n owner(),\n block.timestamp\n );\n }\n\n //this method is responsible for taking all fee, if takeFee is true\n function _tokenTransfer(\n address sender,\n address recipient,\n uint256 amount,\n bool takeFee\n ) private {\n if (!takeFee) removeAllFee();\n\n if (_isExcluded[sender] && !_isExcluded[recipient]) {\n _transferFromExcluded(sender, recipient, amount);\n } else if (!_isExcluded[sender] && _isExcluded[recipient]) {\n _transferToExcluded(sender, recipient, amount);\n } else if (!_isExcluded[sender] && !_isExcluded[recipient]) {\n _transferStandard(sender, recipient, amount);\n } else if (_isExcluded[sender] && _isExcluded[recipient]) {\n _transferBothExcluded(sender, recipient, amount);\n } else {\n _transferStandard(sender, recipient, amount);\n }\n\n if (!takeFee) restoreAllFee();\n }\n\n function _transferStandard(\n address sender,\n address recipient,\n uint256 tAmount\n ) private {\n (\n uint256 rAmount,\n uint256 rTransferAmount,\n uint256 rFee,\n uint256 tTransferAmount,\n uint256 tFee,\n uint256 tLiquidity,\n uint256 tMarketing\n ) = _getValues(tAmount);\n _rOwned[sender] = _rOwned[sender].sub(rAmount);\n _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);\n _takeLiquidity(tLiquidity);\n _takeMarketingFee(tMarketing);\n _reflectFee(rFee, tFee);\n emit Transfer(sender, recipient, tTransferAmount);\n }\n\n function _transferToExcluded(\n address sender,\n address recipient,\n uint256 tAmount\n ) private {\n (\n uint256 rAmount,\n uint256 rTransferAmount,\n uint256 rFee,\n uint256 tTransferAmount,\n uint256 tFee,\n uint256 tLiquidity,\n uint256 tMarketing\n ) = _getValues(tAmount);\n _rOwned[sender] = _rOwned[sender].sub(rAmount);\n _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);\n _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);\n _takeLiquidity(tLiquidity);\n _takeMarketingFee(tMarketing);\n _reflectFee(rFee, tFee);\n emit Transfer(sender, recipient, tTransferAmount);\n }\n\n function _transferFromExcluded(\n address sender,\n address recipient,\n uint256 tAmount\n ) private {\n (\n uint256 rAmount,\n uint256 rTransferAmount,\n uint256 rFee,\n uint256 tTransferAmount,\n uint256 tFee,\n uint256 tLiquidity,\n uint256 tMarketing\n ) = _getValues(tAmount);\n _tOwned[sender] = _tOwned[sender].sub(tAmount);\n _rOwned[sender] = _rOwned[sender].sub(rAmount);\n _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);\n _takeLiquidity(tLiquidity);\n _takeMarketingFee(tMarketing);\n _reflectFee(rFee, tFee);\n emit Transfer(sender, recipient, tTransferAmount);\n }\n}"
},
"contracts/BaseToken.sol": {
"content": "// SPDX-License-Identifier: GPL-3.0\npragma solidity ^0.8.0;\n\nenum TokenType {\n standard,\n antiBotStandard,\n liquidityGenerator,\n antiBotLiquidityGenerator,\n baby,\n antiBotBaby,\n buybackBaby,\n antiBotBuybackBaby\n}\n\nabstract contract BaseToken {\n event TokenCreated(\n address indexed owner,\n address indexed token,\n TokenType tokenType,\n uint256 version\n );\n}"
},
"contracts/interfaces/IUniswapV2Factory.sol": {
"content": "// SPDX-License-Identifier: GPL-3.0\npragma solidity ^0.8.0;\n\ninterface IUniswapV2Factory {\n event PairCreated(\n address indexed token0,\n address indexed token1,\n address pair,\n uint256\n );\n\n function feeTo() external view returns (address);\n\n function feeToSetter() external view returns (address);\n\n function getPair(address tokenA, address tokenB)\n external\n view\n returns (address pair);\n\n function allPairs(uint256) external view returns (address pair);\n\n function allPairsLength() external view returns (uint256);\n\n function createPair(address tokenA, address tokenB)\n external\n returns (address pair);\n\n function setFeeTo(address) external;\n\n function setFeeToSetter(address) external;\n}"
},
"contracts/interfaces/IUniswapV2Router02.sol": {
"content": "// SPDX-License-Identifier: GPL-3.0\npragma solidity ^0.8.0;\n\ninterface IUniswapV2Router01 {\n function factory() external pure returns (address);\n\n function WETH() external pure returns (address);\n\n function addLiquidity(\n address tokenA,\n address tokenB,\n uint256 amountADesired,\n uint256 amountBDesired,\n uint256 amountAMin,\n uint256 amountBMin,\n address to,\n uint256 deadline\n )\n external\n returns (\n uint256 amountA,\n uint256 amountB,\n uint256 liquidity\n );\n\n function addLiquidityETH(\n address token,\n uint256 amountTokenDesired,\n uint256 amountTokenMin,\n uint256 amountETHMin,\n address to,\n uint256 deadline\n )\n external\n payable\n returns (\n uint256 amountToken,\n uint256 amountETH,\n uint256 liquidity\n );\n\n function removeLiquidity(\n address tokenA,\n address tokenB,\n uint256 liquidity,\n uint256 amountAMin,\n uint256 amountBMin,\n address to,\n uint256 deadline\n ) external returns (uint256 amountA, uint256 amountB);\n\n function removeLiquidityETH(\n address token,\n uint256 liquidity,\n uint256 amountTokenMin,\n uint256 amountETHMin,\n address to,\n uint256 deadline\n ) external returns (uint256 amountToken, uint256 amountETH);\n\n function removeLiquidityWithPermit(\n address tokenA,\n address tokenB,\n uint256 liquidity,\n uint256 amountAMin,\n uint256 amountBMin,\n address to,\n uint256 deadline,\n bool approveMax,\n uint8 v,\n bytes32 r,\n bytes32 s\n ) external returns (uint256 amountA, uint256 amountB);\n\n function removeLiquidityETHWithPermit(\n address token,\n uint256 liquidity,\n uint256 amountTokenMin,\n uint256 amountETHMin,\n address to,\n uint256 deadline,\n bool approveMax,\n uint8 v,\n bytes32 r,\n bytes32 s\n ) external returns (uint256 amountToken, uint256 amountETH);\n\n function swapExactTokensForTokens(\n uint256 amountIn,\n uint256 amountOutMin,\n address[] calldata path,\n address to,\n uint256 deadline\n ) external returns (uint256[] memory amounts);\n\n function swapTokensForExactTokens(\n uint256 amountOut,\n uint256 amountInMax,\n address[] calldata path,\n address to,\n uint256 deadline\n ) external returns (uint256[] memory amounts);\n\n function swapExactETHForTokens(\n uint256 amountOutMin,\n address[] calldata path,\n address to,\n uint256 deadline\n ) external payable returns (uint256[] memory amounts);\n\n function swapTokensForExactETH(\n uint256 amountOut,\n uint256 amountInMax,\n address[] calldata path,\n address to,\n uint256 deadline\n ) external returns (uint256[] memory amounts);\n\n function swapExactTokensForETH(\n uint256 amountIn,\n uint256 amountOutMin,\n address[] calldata path,\n address to,\n uint256 deadline\n ) external returns (uint256[] memory amounts);\n\n function swapETHForExactTokens(\n uint256 amountOut,\n address[] calldata path,\n address to,\n uint256 deadline\n ) external payable returns (uint256[] memory amounts);\n\n function quote(\n uint256 amountA,\n uint256 reserveA,\n uint256 reserveB\n ) external pure returns (uint256 amountB);\n\n function getAmountOut(\n uint256 amountIn,\n uint256 reserveIn,\n uint256 reserveOut\n ) external pure returns (uint256 amountOut);\n\n function getAmountIn(\n uint256 amountOut,\n uint256 reserveIn,\n uint256 reserveOut\n ) external pure returns (uint256 amountIn);\n\n function getAmountsOut(uint256 amountIn, address[] calldata path)\n external\n view\n returns (uint256[] memory amounts);\n\n function getAmountsIn(uint256 amountOut, address[] calldata path)\n external\n view\n returns (uint256[] memory amounts);\n}\n\ninterface IUniswapV2Router02 is IUniswapV2Router01 {\n function removeLiquidityETHSupportingFeeOnTransferTokens(\n address token,\n uint256 liquidity,\n uint256 amountTokenMin,\n uint256 amountETHMin,\n address to,\n uint256 deadline\n ) external returns (uint256 amountETH);\n\n function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(\n address token,\n uint256 liquidity,\n uint256 amountTokenMin,\n uint256 amountETHMin,\n address to,\n uint256 deadline,\n bool approveMax,\n uint8 v,\n bytes32 r,\n bytes32 s\n ) external returns (uint256 amountETH);\n\n function swapExactTokensForTokensSupportingFeeOnTransferTokens(\n uint256 amountIn,\n uint256 amountOutMin,\n address[] calldata path,\n address to,\n uint256 deadline\n ) external;\n\n function swapExactETHForTokensSupportingFeeOnTransferTokens(\n uint256 amountOutMin,\n address[] calldata path,\n address to,\n uint256 deadline\n ) external payable;\n\n function swapExactTokensForETHSupportingFeeOnTransferTokens(\n uint256 amountIn,\n uint256 amountOutMin,\n address[] calldata path,\n address to,\n uint256 deadline\n ) external;\n}"
},
"@openzeppelin/contracts/utils/Address.sol": {
"content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/Address.sol)\n\npragma solidity ^0.8.1;\n\n/**\n * @dev Collection of functions related to the address type\n */\nlibrary Address {\n /**\n * @dev Returns true if `account` is a contract.\n *\n * [IMPORTANT]\n * ====\n * It is unsafe to assume that an address for which this function returns\n * false is an externally-owned account (EOA) and not a contract.\n *\n * Among others, `isContract` will return false for the following\n * types of addresses:\n *\n * - an externally-owned account\n * - a contract in construction\n * - an address where a contract will be created\n * - an address where a contract lived, but was destroyed\n * ====\n *\n * [IMPORTANT]\n * ====\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\n *\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\n * constructor.\n * ====\n */\n function isContract(address account) internal view returns (bool) {\n // This method relies on extcodesize/address.code.length, which returns 0\n // for contracts in construction, since the code is only stored at the end\n // of the constructor execution.\n\n return account.code.length > 0;\n }\n\n /**\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n * `recipient`, forwarding all available gas and reverting on errors.\n *\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\n * imposed by `transfer`, making them unable to receive funds via\n * `transfer`. {sendValue} removes this limitation.\n *\n * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n *\n * IMPORTANT: because control is transferred to `recipient`, care must be\n * taken to not create reentrancy vulnerabilities. Consider using\n * {ReentrancyGuard} or the\n * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\n */\n function sendValue(address payable recipient, uint256 amount) internal {\n require(address(this).balance >= amount, \"Address: insufficient balance\");\n\n (bool success, ) = recipient.call{value: amount}(\"\");\n require(success, \"Address: unable to send value, recipient may have reverted\");\n }\n\n /**\n * @dev Performs a Solidity function call using a low level `call`. A\n * plain `call` is an unsafe replacement for a function call: use this\n * function instead.\n *\n * If `target` reverts with a revert reason, it is bubbled up by this\n * function (like regular Solidity function calls).\n *\n * Returns the raw returned data. To convert to the expected return value,\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n *\n * Requirements:\n *\n * - `target` must be a contract.\n * - calling `target` with `data` must not revert.\n *\n * _Available since v3.1._\n */\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\n return functionCall(target, data, \"Address: low-level call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n * `errorMessage` as a fallback revert reason when `target` reverts.\n *\n * _Available since v3.1._\n */\n function functionCall(\n address target,\n bytes memory data,\n string memory errorMessage\n ) internal returns (bytes memory) {\n return functionCallWithValue(target, data, 0, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but also transferring `value` wei to `target`.\n *\n * Requirements:\n *\n * - the calling contract must have an ETH balance of at least `value`.\n * - the called Solidity function must be `payable`.\n *\n * _Available since v3.1._\n */\n function functionCallWithValue(\n address target,\n bytes memory data,\n uint256 value\n ) internal returns (bytes memory) {\n return functionCallWithValue(target, data, value, \"Address: low-level call with value failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n * with `errorMessage` as a fallback revert reason when `target` reverts.\n *\n * _Available since v3.1._\n */\n function functionCallWithValue(\n address target,\n bytes memory data,\n uint256 value,\n string memory errorMessage\n ) internal returns (bytes memory) {\n require(address(this).balance >= value, \"Address: insufficient balance for call\");\n require(isContract(target), \"Address: call to non-contract\");\n\n (bool success, bytes memory returndata) = target.call{value: value}(data);\n return verifyCallResult(success, returndata, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a static call.\n *\n * _Available since v3.3._\n */\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\n return functionStaticCall(target, data, \"Address: low-level static call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n * but performing a static call.\n *\n * _Available since v3.3._\n */\n function functionStaticCall(\n address target,\n bytes memory data,\n string memory errorMessage\n ) internal view returns (bytes memory) {\n require(isContract(target), \"Address: static call to non-contract\");\n\n (bool success, bytes memory returndata) = target.staticcall(data);\n return verifyCallResult(success, returndata, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a delegate call.\n *\n * _Available since v3.4._\n */\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\n return functionDelegateCall(target, data, \"Address: low-level delegate call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n * but performing a delegate call.\n *\n * _Available since v3.4._\n */\n function functionDelegateCall(\n address target,\n bytes memory data,\n string memory errorMessage\n ) internal returns (bytes memory) {\n require(isContract(target), \"Address: delegate call to non-contract\");\n\n (bool success, bytes memory returndata) = target.delegatecall(data);\n return verifyCallResult(success, returndata, errorMessage);\n }\n\n /**\n * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the\n * revert reason using the provided one.\n *\n * _Available since v4.3._\n */\n function verifyCallResult(\n bool success,\n bytes memory returndata,\n string memory errorMessage\n ) internal pure returns (bytes memory) {\n if (success) {\n return returndata;\n } else {\n // Look for revert reason and bubble it up if present\n if (returndata.length > 0) {\n // The easiest way to bubble the revert reason is using memory via assembly\n /// @solidity memory-safe-assembly\n assembly {\n let returndata_size := mload(returndata)\n revert(add(32, returndata), returndata_size)\n }\n } else {\n revert(errorMessage);\n }\n }\n }\n}\n"
},
"@openzeppelin/contracts/utils/math/SafeMath.sol": {
"content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.6.0) (utils/math/SafeMath.sol)\n\npragma solidity ^0.8.0;\n\n// CAUTION\n// This version of SafeMath should only be used with Solidity 0.8 or later,\n// because it relies on the compiler's built in overflow checks.\n\n/**\n * @dev Wrappers over Solidity's arithmetic operations.\n *\n * NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler\n * now has built in overflow checking.\n */\nlibrary SafeMath {\n /**\n * @dev Returns the addition of two unsigned integers, with an overflow flag.\n *\n * _Available since v3.4._\n */\n function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {\n unchecked {\n uint256 c = a + b;\n if (c < a) return (false, 0);\n return (true, c);\n }\n }\n\n /**\n * @dev Returns the subtraction of two unsigned integers, with an overflow flag.\n *\n * _Available since v3.4._\n */\n function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {\n unchecked {\n if (b > a) return (false, 0);\n return (true, a - b);\n }\n }\n\n /**\n * @dev Returns the multiplication of two unsigned integers, with an overflow flag.\n *\n * _Available since v3.4._\n */\n function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {\n unchecked {\n // Gas optimization: this is cheaper than requiring 'a' not being zero, but the\n // benefit is lost if 'b' is also tested.\n // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522\n if (a == 0) return (true, 0);\n uint256 c = a * b;\n if (c / a != b) return (false, 0);\n return (true, c);\n }\n }\n\n /**\n * @dev Returns the division of two unsigned integers, with a division by zero flag.\n *\n * _Available since v3.4._\n */\n function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {\n unchecked {\n if (b == 0) return (false, 0);\n return (true, a / b);\n }\n }\n\n /**\n * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.\n *\n * _Available since v3.4._\n */\n function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {\n unchecked {\n if (b == 0) return (false, 0);\n return (true, a % b);\n }\n }\n\n /**\n * @dev Returns the addition of two unsigned integers, reverting on\n * overflow.\n *\n * Counterpart to Solidity's `+` operator.\n *\n * Requirements:\n *\n * - Addition cannot overflow.\n */\n function add(uint256 a, uint256 b) internal pure returns (uint256) {\n return a + b;\n }\n\n /**\n * @dev Returns the subtraction of two unsigned integers, reverting on\n * overflow (when the result is negative).\n *\n * Counterpart to Solidity's `-` operator.\n *\n * Requirements:\n *\n * - Subtraction cannot overflow.\n */\n function sub(uint256 a, uint256 b) internal pure returns (uint256) {\n return a - b;\n }\n\n /**\n * @dev Returns the multiplication of two unsigned integers, reverting on\n * overflow.\n *\n * Counterpart to Solidity's `*` operator.\n *\n * Requirements:\n *\n * - Multiplication cannot overflow.\n */\n function mul(uint256 a, uint256 b) internal pure returns (uint256) {\n return a * b;\n }\n\n /**\n * @dev Returns the integer division of two unsigned integers, reverting on\n * division by zero. The result is rounded towards zero.\n *\n * Counterpart to Solidity's `/` operator.\n *\n * Requirements:\n *\n * - The divisor cannot be zero.\n */\n function div(uint256 a, uint256 b) internal pure returns (uint256) {\n return a / b;\n }\n\n /**\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\n * reverting when dividing by zero.\n *\n * Counterpart to Solidity's `%` operator. This function uses a `revert`\n * opcode (which leaves remaining gas untouched) while Solidity uses an\n * invalid opcode to revert (consuming all remaining gas).\n *\n * Requirements:\n *\n * - The divisor cannot be zero.\n */\n function mod(uint256 a, uint256 b) internal pure returns (uint256) {\n return a % b;\n }\n\n /**\n * @dev Returns the subtraction of two unsigned integers, reverting with custom message on\n * overflow (when the result is negative).\n *\n * CAUTION: This function is deprecated because it requires allocating memory for the error\n * message unnecessarily. For custom revert reasons use {trySub}.\n *\n * Counterpart to Solidity's `-` operator.\n *\n * Requirements:\n *\n * - Subtraction cannot overflow.\n */\n function sub(\n uint256 a,\n uint256 b,\n string memory errorMessage\n ) internal pure returns (uint256) {\n unchecked {\n require(b <= a, errorMessage);\n return a - b;\n }\n }\n\n /**\n * @dev Returns the integer division of two unsigned integers, reverting with custom message on\n * division by zero. The result is rounded towards zero.\n *\n * Counterpart to Solidity's `/` operator. Note: this function uses a\n * `revert` opcode (which leaves remaining gas untouched) while Solidity\n * uses an invalid opcode to revert (consuming all remaining gas).\n *\n * Requirements:\n *\n * - The divisor cannot be zero.\n */\n function div(\n uint256 a,\n uint256 b,\n string memory errorMessage\n ) internal pure returns (uint256) {\n unchecked {\n require(b > 0, errorMessage);\n return a / b;\n }\n }\n\n /**\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\n * reverting with custom message when dividing by zero.\n *\n * CAUTION: This function is deprecated because it requires allocating memory for the error\n * message unnecessarily. For custom revert reasons use {tryMod}.\n *\n * Counterpart to Solidity's `%` operator. This function uses a `revert`\n * opcode (which leaves remaining gas untouched) while Solidity uses an\n * invalid opcode to revert (consuming all remaining gas).\n *\n * Requirements:\n *\n * - The divisor cannot be zero.\n */\n function mod(\n uint256 a,\n uint256 b,\n string memory errorMessage\n ) internal pure returns (uint256) {\n unchecked {\n require(b > 0, errorMessage);\n return a % b;\n }\n }\n}\n"
},
"@openzeppelin/contracts/access/Ownable.sol": {
"content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../utils/Context.sol\";\n\n/**\n * @dev Contract module which provides a basic access control mechanism, where\n * there is an account (an owner) that can be granted exclusive access to\n * specific functions.\n *\n * By default, the owner account will be the one that deploys the contract. This\n * can later be changed with {transferOwnership}.\n *\n * This module is used through inheritance. It will make available the modifier\n * `onlyOwner`, which can be applied to your functions to restrict their use to\n * the owner.\n */\nabstract contract Ownable is Context {\n address private _owner;\n\n event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\n\n /**\n * @dev Initializes the contract setting the deployer as the initial owner.\n */\n constructor() {\n _transferOwnership(_msgSender());\n }\n\n /**\n * @dev Throws if called by any account other than the owner.\n */\n modifier onlyOwner() {\n _checkOwner();\n _;\n }\n\n /**\n * @dev Returns the address of the current owner.\n */\n function owner() public view virtual returns (address) {\n return _owner;\n }\n\n /**\n * @dev Throws if the sender is not the owner.\n */\n function _checkOwner() internal view virtual {\n require(owner() == _msgSender(), \"Ownable: caller is not the owner\");\n }\n\n /**\n * @dev Leaves the contract without owner. It will not be possible to call\n * `onlyOwner` functions anymore. Can only be called by the current owner.\n *\n * NOTE: Renouncing ownership will leave the contract without an owner,\n * thereby removing any functionality that is only available to the owner.\n */\n function renounceOwnership() public virtual onlyOwner {\n _transferOwnership(address(0));\n }\n\n /**\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\n * Can only be called by the current owner.\n */\n function transferOwnership(address newOwner) public virtual onlyOwner {\n require(newOwner != address(0), \"Ownable: new owner is the zero address\");\n _transferOwnership(newOwner);\n }\n\n /**\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\n * Internal function without access restriction.\n */\n function _transferOwnership(address newOwner) internal virtual {\n address oldOwner = _owner;\n _owner = newOwner;\n emit OwnershipTransferred(oldOwner, newOwner);\n }\n}\n"
},
"@openzeppelin/contracts/token/ERC20/IERC20.sol": {
"content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Interface of the ERC20 standard as defined in the EIP.\n */\ninterface IERC20 {\n /**\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\n * another (`to`).\n *\n * Note that `value` may be zero.\n */\n event Transfer(address indexed from, address indexed to, uint256 value);\n\n /**\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\n * a call to {approve}. `value` is the new allowance.\n */\n event Approval(address indexed owner, address indexed spender, uint256 value);\n\n /**\n * @dev Returns the amount of tokens in existence.\n */\n function totalSupply() external view returns (uint256);\n\n /**\n * @dev Returns the amount of tokens owned by `account`.\n */\n function balanceOf(address account) external view returns (uint256);\n\n /**\n * @dev Moves `amount` tokens from the caller's account to `to`.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transfer(address to, uint256 amount) external returns (bool);\n\n /**\n * @dev Returns the remaining number of tokens that `spender` will be\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\n * zero by default.\n *\n * This value changes when {approve} or {transferFrom} are called.\n */\n function allowance(address owner, address spender) external view returns (uint256);\n\n /**\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\n * that someone may use both the old and the new allowance by unfortunate\n * transaction ordering. One possible solution to mitigate this race\n * condition is to first reduce the spender's allowance to 0 and set the\n * desired value afterwards:\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n *\n * Emits an {Approval} event.\n */\n function approve(address spender, uint256 amount) external returns (bool);\n\n /**\n * @dev Moves `amount` tokens from `from` to `to` using the\n * allowance mechanism. `amount` is then deducted from the caller's\n * allowance.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transferFrom(\n address from,\n address to,\n uint256 amount\n ) external returns (bool);\n}\n"
},
"@openzeppelin/contracts/utils/Context.sol": {
"content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */\nabstract contract Context {\n function _msgSender() internal view virtual returns (address) {\n return msg.sender;\n }\n\n function _msgData() internal view virtual returns (bytes calldata) {\n return msg.data;\n }\n}\n"
}
},
"settings": {
"optimizer": {
"enabled": true,
"runs": 200
},
"outputSelection": {
"*": {
"": [
"ast"
],
"*": [
"abi",
"metadata",
"devdoc",
"userdoc",
"storageLayout",
"evm.legacyAssembly",
"evm.bytecode",
"evm.deployedBytecode",
"evm.methodIdentifiers",
"evm.gasEstimates",
"evm.assembly"
]
}
}
}
},
"output": {
"contracts": {
"@openzeppelin/contracts/access/Ownable.sol": {
"Ownable": {
"abi": [
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "previousOwner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "OwnershipTransferred",
"type": "event"
},
{
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "renounceOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "transferOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
],
"devdoc": {
"details": "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.",
"kind": "dev",
"methods": {
"constructor": {
"details": "Initializes the contract setting the deployer as the initial owner."
},
"owner()": {
"details": "Returns the address of the current owner."
},
"renounceOwnership()": {
"details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."
},
"transferOwnership(address)": {
"details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
}
},
"version": 1
},
"evm": {
"assembly": "",
"bytecode": {
"generatedSources": [],
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"deployedBytecode": {
"generatedSources": [],
"immutableReferences": {},
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"gasEstimates": null,
"legacyAssembly": null,
"methodIdentifiers": {
"owner()": "8da5cb5b",
"renounceOwnership()": "715018a6",
"transferOwnership(address)": "f2fde38b"
}
},
"metadata": "{\"compiler\":{\"version\":\"0.8.1+commit.df193b15\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"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.\",\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Initializes the contract setting the deployer as the initial owner.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/access/Ownable.sol\":\"Ownable\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\",\"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]}},\"version\":1}",
"storageLayout": {
"storage": [
{
"astId": 7,
"contract": "@openzeppelin/contracts/access/Ownable.sol:Ownable",
"label": "_owner",
"offset": 0,
"slot": "0",
"type": "t_address"
}
],
"types": {
"t_address": {
"encoding": "inplace",
"label": "address",
"numberOfBytes": "20"
}
}
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
}
},
"@openzeppelin/contracts/token/ERC20/IERC20.sol": {
"IERC20": {
"abi": [
{
"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": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "address",
"name": "spender",
"type": "address"
}
],
"name": "allowance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "approve",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "from",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
}
],
"devdoc": {
"details": "Interface of the ERC20 standard as defined in the EIP.",
"events": {
"Approval(address,address,uint256)": {
"details": "Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance."
},
"Transfer(address,address,uint256)": {
"details": "Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero."
}
},
"kind": "dev",
"methods": {
"allowance(address,address)": {
"details": "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."
},
"approve(address,uint256)": {
"details": "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."
},
"balanceOf(address)": {
"details": "Returns the amount of tokens owned by `account`."
},
"totalSupply()": {
"details": "Returns the amount of tokens in existence."
},
"transfer(address,uint256)": {
"details": "Moves `amount` tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."
},
"transferFrom(address,address,uint256)": {
"details": "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."
}
},
"version": 1
},
"evm": {
"assembly": "",
"bytecode": {
"generatedSources": [],
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"deployedBytecode": {
"generatedSources": [],
"immutableReferences": {},
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"gasEstimates": null,
"legacyAssembly": null,
"methodIdentifiers": {
"allowance(address,address)": "dd62ed3e",
"approve(address,uint256)": "095ea7b3",
"balanceOf(address)": "70a08231",
"totalSupply()": "18160ddd",
"transfer(address,uint256)": "a9059cbb",
"transferFrom(address,address,uint256)": "23b872dd"
}
},
"metadata": "{\"compiler\":{\"version\":\"0.8.1+commit.df193b15\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"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\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC20 standard as defined in the EIP.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"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.\"},\"approve(address,uint256)\":{\"details\":\"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.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"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.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":\"IERC20\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]}},\"version\":1}",
"storageLayout": {
"storage": [],
"types": null
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
}
},
"@openzeppelin/contracts/utils/Address.sol": {
"Address": {
"abi": [],
"devdoc": {
"details": "Collection of functions related to the address type",
"kind": "dev",
"methods": {},
"version": 1
},
"evm": {
"assembly": " /* \"@openzeppelin/contracts/utils/Address.sol\":194:8305 library Address {... */\n dataSize(sub_0)\n dataOffset(sub_0)\n 0x0b\n dup3\n dup3\n dup3\n codecopy\n dup1\n mload\n 0x00\n byte\n 0x73\n eq\n tag_1\n jumpi\n mstore(0x00, shl(0xe0, 0x4e487b71))\n mstore(0x04, 0x00)\n revert(0x00, 0x24)\ntag_1:\n mstore(0x00, address)\n 0x73\n dup2\n mstore8\n dup3\n dup2\n return\nstop\n\nsub_0: assembly {\n /* \"@openzeppelin/contracts/utils/Address.sol\":194:8305 library Address {... */\n eq(address, deployTimeAddress())\n mstore(0x40, 0x80)\n 0x00\n dup1\n revert\n\n auxdata: 0xa26469706673582212201b42206843ca5a18939923818e8aa3fafef291f87a0417368d57e7ab0cbef0f964736f6c63430008010033\n}\n",
"bytecode": {
"generatedSources": [],
"linkReferences": {},
"object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212201b42206843ca5a18939923818e8aa3fafef291f87a0417368d57e7ab0cbef0f964736f6c63430008010033",
"opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SHL TIMESTAMP KECCAK256 PUSH9 0x43CA5A18939923818E DUP11 LOG3 STATICCALL INVALID CALLCODE SWAP2 0xF8 PUSH27 0x417368D57E7AB0CBEF0F964736F6C634300080100330000000000 ",
"sourceMap": "194:8111:2:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;194:8111:2;;;;;;;;;;;;;;;;;"
},
"deployedBytecode": {
"generatedSources": [],
"immutableReferences": {},
"linkReferences": {},
"object": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212201b42206843ca5a18939923818e8aa3fafef291f87a0417368d57e7ab0cbef0f964736f6c63430008010033",
"opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SHL TIMESTAMP KECCAK256 PUSH9 0x43CA5A18939923818E DUP11 LOG3 STATICCALL INVALID CALLCODE SWAP2 0xF8 PUSH27 0x417368D57E7AB0CBEF0F964736F6C634300080100330000000000 ",
"sourceMap": "194:8111:2:-:0;;;;;;;;"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "17200",
"executionCost": "103",
"totalCost": "17303"
},
"internal": {
"functionCall(address,bytes memory)": "infinite",
"functionCall(address,bytes memory,string memory)": "infinite",
"functionCallWithValue(address,bytes memory,uint256)": "infinite",
"functionCallWithValue(address,bytes memory,uint256,string memory)": "infinite",
"functionDelegateCall(address,bytes memory)": "infinite",
"functionDelegateCall(address,bytes memory,string memory)": "infinite",
"functionStaticCall(address,bytes memory)": "infinite",
"functionStaticCall(address,bytes memory,string memory)": "infinite",
"isContract(address)": "infinite",
"sendValue(address payable,uint256)": "infinite",
"verifyCallResult(bool,bytes memory,string memory)": "infinite"
}
},
"legacyAssembly": {
".code": [
{
"begin": 194,
"end": 8305,
"name": "PUSH #[$]",
"source": 2,
"value": "0000000000000000000000000000000000000000000000000000000000000000"
},
{
"begin": 194,
"end": 8305,
"name": "PUSH [$]",
"source": 2,
"value": "0000000000000000000000000000000000000000000000000000000000000000"
},
{
"begin": 194,
"end": 8305,
"name": "PUSH",
"source": 2,
"value": "B"
},
{
"begin": 194,
"end": 8305,
"name": "DUP3",
"source": 2
},
{
"begin": 194,
"end": 8305,
"name": "DUP3",
"source": 2
},
{
"begin": 194,
"end": 8305,
"name": "DUP3",
"source": 2
},
{
"begin": 194,
"end": 8305,
"name": "CODECOPY",
"source": 2
},
{
"begin": 194,
"end": 8305,
"name": "DUP1",
"source": 2
},
{
"begin": 194,
"end": 8305,
"name": "MLOAD",
"source": 2
},
{
"begin": 194,
"end": 8305,
"name": "PUSH",
"source": 2,
"value": "0"
},
{
"begin": 194,
"end": 8305,
"name": "BYTE",
"source": 2
},
{
"begin": 194,
"end": 8305,
"name": "PUSH",
"source": 2,
"value": "73"
},
{
"begin": 194,
"end": 8305,
"name": "EQ",
"source": 2
},
{
"begin": 194,
"end": 8305,
"name": "PUSH [tag]",
"source": 2,
"value": "1"
},
{
"begin": 194,
"end": 8305,
"name": "JUMPI",
"source": 2
},
{
"begin": -1,
"end": -1,
"name": "PUSH",
"source": -1,
"value": "4E487B71"
},
{
"begin": -1,
"end": -1,
"name": "PUSH",
"source": -1,
"value": "E0"
},
{
"begin": -1,
"end": -1,
"name": "SHL",
"source": -1
},
{
"begin": 194,
"end": 8305,
"name": "PUSH",
"source": 2,
"value": "0"
},
{
"begin": 194,
"end": 8305,
"name": "MSTORE",
"source": 2
},
{
"begin": 194,
"end": 8305,
"name": "PUSH",
"source": 2,
"value": "0"
},
{
"begin": 194,
"end": 8305,
"name": "PUSH",
"source": 2,
"value": "4"
},
{
"begin": 194,
"end": 8305,
"name": "MSTORE",
"source": 2
},
{
"begin": 194,
"end": 8305,
"name": "PUSH",
"source": 2,
"value": "24"
},
{
"begin": 194,
"end": 8305,
"name": "PUSH",
"source": 2,
"value": "0"
},
{
"begin": 194,
"end": 8305,
"name": "REVERT",
"source": 2
},
{
"begin": 194,
"end": 8305,
"name": "tag",
"source": 2,
"value": "1"
},
{
"begin": 194,
"end": 8305,
"name": "JUMPDEST",
"source": 2
},
{
"begin": 194,
"end": 8305,
"name": "ADDRESS",
"source": 2
},
{
"begin": 194,
"end": 8305,
"name": "PUSH",
"source": 2,
"value": "0"
},
{
"begin": 194,
"end": 8305,
"name": "MSTORE",
"source": 2
},
{
"begin": 194,
"end": 8305,
"name": "PUSH",
"source": 2,
"value": "73"
},
{
"begin": 194,
"end": 8305,
"name": "DUP2",
"source": 2
},
{
"begin": 194,
"end": 8305,
"name": "MSTORE8",
"source": 2
},
{
"begin": 194,
"end": 8305,
"name": "DUP3",
"source": 2
},
{
"begin": 194,
"end": 8305,
"name": "DUP2",
"source": 2
},
{
"begin": 194,
"end": 8305,
"name": "RETURN",
"source": 2
}
],
".data": {
"0": {
".auxdata": "a26469706673582212201b42206843ca5a18939923818e8aa3fafef291f87a0417368d57e7ab0cbef0f964736f6c63430008010033",
".code": [
{
"begin": 194,
"end": 8305,
"name": "PUSHDEPLOYADDRESS",
"source": 2
},
{
"begin": 194,
"end": 8305,
"name": "ADDRESS",
"source": 2
},
{
"begin": 194,
"end": 8305,
"name": "EQ",
"source": 2
},
{
"begin": 194,
"end": 8305,
"name": "PUSH",
"source": 2,
"value": "80"
},
{
"begin": 194,
"end": 8305,
"name": "PUSH",
"source": 2,
"value": "40"
},
{
"begin": 194,
"end": 8305,
"name": "MSTORE",
"source": 2
},
{
"begin": 194,
"end": 8305,
"name": "PUSH",
"source": 2,
"value": "0"
},
{
"begin": 194,
"end": 8305,
"name": "DUP1",
"source": 2
},
{
"begin": 194,
"end": 8305,
"name": "REVERT",
"source": 2
}
]
}
}
},
"methodIdentifiers": {}
},
"metadata": "{\"compiler\":{\"version\":\"0.8.1+commit.df193b15\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Collection of functions related to the address type\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Address.sol\":\"Address\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487\",\"dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG\"]}},\"version\":1}",
"storageLayout": {
"storage": [],
"types": null
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
}
},
"@openzeppelin/contracts/utils/Context.sol": {
"Context": {
"abi": [],
"devdoc": {
"details": "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.",
"kind": "dev",
"methods": {},
"version": 1
},
"evm": {
"assembly": "",
"bytecode": {
"generatedSources": [],
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"deployedBytecode": {
"generatedSources": [],
"immutableReferences": {},
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"gasEstimates": null,
"legacyAssembly": null,
"methodIdentifiers": {}
},
"metadata": "{\"compiler\":{\"version\":\"0.8.1+commit.df193b15\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"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.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Context.sol\":\"Context\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]}},\"version\":1}",
"storageLayout": {
"storage": [],
"types": null
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
}
},
"@openzeppelin/contracts/utils/math/SafeMath.sol": {
"SafeMath": {
"abi": [],
"devdoc": {
"details": "Wrappers over Solidity's arithmetic operations. NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler now has built in overflow checking.",
"kind": "dev",
"methods": {},
"version": 1
},
"evm": {
"assembly": " /* \"@openzeppelin/contracts/utils/math/SafeMath.sol\":482:6782 library SafeMath {... */\n dataSize(sub_0)\n dataOffset(sub_0)\n 0x0b\n dup3\n dup3\n dup3\n codecopy\n dup1\n mload\n 0x00\n byte\n 0x73\n eq\n tag_1\n jumpi\n mstore(0x00, shl(0xe0, 0x4e487b71))\n mstore(0x04, 0x00)\n revert(0x00, 0x24)\ntag_1:\n mstore(0x00, address)\n 0x73\n dup2\n mstore8\n dup3\n dup2\n return\nstop\n\nsub_0: assembly {\n /* \"@openzeppelin/contracts/utils/math/SafeMath.sol\":482:6782 library SafeMath {... */\n eq(address, deployTimeAddress())\n mstore(0x40, 0x80)\n 0x00\n dup1\n revert\n\n auxdata: 0xa2646970667358221220aaebc265343f4f1260838364587c0f227600081343fad1b2efaef491ab2816c964736f6c63430008010033\n}\n",
"bytecode": {
"generatedSources": [],
"linkReferences": {},
"object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220aaebc265343f4f1260838364587c0f227600081343fad1b2efaef491ab2816c964736f6c63430008010033",
"opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xAA 0xEB 0xC2 PUSH6 0x343F4F126083 DUP4 PUSH5 0x587C0F2276 STOP ADDMOD SGT NUMBER STATICCALL 0xD1 0xB2 0xEF 0xAE DELEGATECALL SWAP2 0xAB 0x28 AND 0xC9 PUSH5 0x736F6C6343 STOP ADDMOD ADD STOP CALLER ",
"sourceMap": "482:6300:4:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;482:6300:4;;;;;;;;;;;;;;;;;"
},
"deployedBytecode": {
"generatedSources": [],
"immutableReferences": {},
"linkReferences": {},
"object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220aaebc265343f4f1260838364587c0f227600081343fad1b2efaef491ab2816c964736f6c63430008010033",
"opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xAA 0xEB 0xC2 PUSH6 0x343F4F126083 DUP4 PUSH5 0x587C0F2276 STOP ADDMOD SGT NUMBER STATICCALL 0xD1 0xB2 0xEF 0xAE DELEGATECALL SWAP2 0xAB 0x28 AND 0xC9 PUSH5 0x736F6C6343 STOP ADDMOD ADD STOP CALLER ",
"sourceMap": "482:6300:4:-:0;;;;;;;;"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "17200",
"executionCost": "103",
"totalCost": "17303"
},
"internal": {
"add(uint256,uint256)": "infinite",
"div(uint256,uint256)": "infinite",
"div(uint256,uint256,string memory)": "infinite",
"mod(uint256,uint256)": "infinite",
"mod(uint256,uint256,string memory)": "infinite",
"mul(uint256,uint256)": "infinite",
"sub(uint256,uint256)": "infinite",
"sub(uint256,uint256,string memory)": "infinite",
"tryAdd(uint256,uint256)": "infinite",
"tryDiv(uint256,uint256)": "infinite",
"tryMod(uint256,uint256)": "infinite",
"tryMul(uint256,uint256)": "infinite",
"trySub(uint256,uint256)": "infinite"
}
},
"legacyAssembly": {
".code": [
{
"begin": 482,
"end": 6782,
"name": "PUSH #[$]",
"source": 4,
"value": "0000000000000000000000000000000000000000000000000000000000000000"
},
{
"begin": 482,
"end": 6782,
"name": "PUSH [$]",
"source": 4,
"value": "0000000000000000000000000000000000000000000000000000000000000000"
},
{
"begin": 482,
"end": 6782,
"name": "PUSH",
"source": 4,
"value": "B"
},
{
"begin": 482,
"end": 6782,
"name": "DUP3",
"source": 4
},
{
"begin": 482,
"end": 6782,
"name": "DUP3",
"source": 4
},
{
"begin": 482,
"end": 6782,
"name": "DUP3",
"source": 4
},
{
"begin": 482,
"end": 6782,
"name": "CODECOPY",
"source": 4
},
{
"begin": 482,
"end": 6782,
"name": "DUP1",
"source": 4
},
{
"begin": 482,
"end": 6782,
"name": "MLOAD",
"source": 4
},
{
"begin": 482,
"end": 6782,
"name": "PUSH",
"source": 4,
"value": "0"
},
{
"begin": 482,
"end": 6782,
"name": "BYTE",
"source": 4
},
{
"begin": 482,
"end": 6782,
"name": "PUSH",
"source": 4,
"value": "73"
},
{
"begin": 482,
"end": 6782,
"name": "EQ",
"source": 4
},
{
"begin": 482,
"end": 6782,
"name": "PUSH [tag]",
"source": 4,
"value": "1"
},
{
"begin": 482,
"end": 6782,
"name": "JUMPI",
"source": 4
},
{
"begin": -1,
"end": -1,
"name": "PUSH",
"source": -1,
"value": "4E487B71"
},
{
"begin": -1,
"end": -1,
"name": "PUSH",
"source": -1,
"value": "E0"
},
{
"begin": -1,
"end": -1,
"name": "SHL",
"source": -1
},
{
"begin": 482,
"end": 6782,
"name": "PUSH",
"source": 4,
"value": "0"
},
{
"begin": 482,
"end": 6782,
"name": "MSTORE",
"source": 4
},
{
"begin": 482,
"end": 6782,
"name": "PUSH",
"source": 4,
"value": "0"
},
{
"begin": 482,
"end": 6782,
"name": "PUSH",
"source": 4,
"value": "4"
},
{
"begin": 482,
"end": 6782,
"name": "MSTORE",
"source": 4
},
{
"begin": 482,
"end": 6782,
"name": "PUSH",
"source": 4,
"value": "24"
},
{
"begin": 482,
"end": 6782,
"name": "PUSH",
"source": 4,
"value": "0"
},
{
"begin": 482,
"end": 6782,
"name": "REVERT",
"source": 4
},
{
"begin": 482,
"end": 6782,
"name": "tag",
"source": 4,
"value": "1"
},
{
"begin": 482,
"end": 6782,
"name": "JUMPDEST",
"source": 4
},
{
"begin": 482,
"end": 6782,
"name": "ADDRESS",
"source": 4
},
{
"begin": 482,
"end": 6782,
"name": "PUSH",
"source": 4,
"value": "0"
},
{
"begin": 482,
"end": 6782,
"name": "MSTORE",
"source": 4
},
{
"begin": 482,
"end": 6782,
"name": "PUSH",
"source": 4,
"value": "73"
},
{
"begin": 482,
"end": 6782,
"name": "DUP2",
"source": 4
},
{
"begin": 482,
"end": 6782,
"name": "MSTORE8",
"source": 4
},
{
"begin": 482,
"end": 6782,
"name": "DUP3",
"source": 4
},
{
"begin": 482,
"end": 6782,
"name": "DUP2",
"source": 4
},
{
"begin": 482,
"end": 6782,
"name": "RETURN",
"source": 4
}
],
".data": {
"0": {
".auxdata": "a2646970667358221220aaebc265343f4f1260838364587c0f227600081343fad1b2efaef491ab2816c964736f6c63430008010033",
".code": [
{
"begin": 482,
"end": 6782,
"name": "PUSHDEPLOYADDRESS",
"source": 4
},
{
"begin": 482,
"end": 6782,
"name": "ADDRESS",
"source": 4
},
{
"begin": 482,
"end": 6782,
"name": "EQ",
"source": 4
},
{
"begin": 482,
"end": 6782,
"name": "PUSH",
"source": 4,
"value": "80"
},
{
"begin": 482,
"end": 6782,
"name": "PUSH",
"source": 4,
"value": "40"
},
{
"begin": 482,
"end": 6782,
"name": "MSTORE",
"source": 4
},
{
"begin": 482,
"end": 6782,
"name": "PUSH",
"source": 4,
"value": "0"
},
{
"begin": 482,
"end": 6782,
"name": "DUP1",
"source": 4
},
{
"begin": 482,
"end": 6782,
"name": "REVERT",
"source": 4
}
]
}
}
},
"methodIdentifiers": {}
},
"metadata": "{\"compiler\":{\"version\":\"0.8.1+commit.df193b15\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Wrappers over Solidity's arithmetic operations. NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler now has built in overflow checking.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/math/SafeMath.sol\":\"SafeMath\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/math/SafeMath.sol\":{\"keccak256\":\"0x0f633a0223d9a1dcccfcf38a64c9de0874dfcbfac0c6941ccf074d63a2ce0e1e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://864a40efcffdf408044c332a5aa38ec5618ed7b4eecb8f65faf45671bd6cdc65\",\"dweb:/ipfs/QmQJquTMtc6fgm5JQzGdsGpA2fqBe3MHWEdt2qzaLySMdN\"]}},\"version\":1}",
"storageLayout": {
"storage": [],
"types": null
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
}
},
"contracts/BaseToken.sol": {
"BaseToken": {
"abi": [
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "token",
"type": "address"
},
{
"indexed": false,
"internalType": "enum TokenType",
"name": "tokenType",
"type": "uint8"
},
{
"indexed": false,
"internalType": "uint256",
"name": "version",
"type": "uint256"
}
],
"name": "TokenCreated",
"type": "event"
}
],
"devdoc": {
"kind": "dev",
"methods": {},
"version": 1
},
"evm": {
"assembly": "",
"bytecode": {
"generatedSources": [],
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"deployedBytecode": {
"generatedSources": [],
"immutableReferences": {},
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"gasEstimates": null,
"legacyAssembly": null,
"methodIdentifiers": {}
},
"metadata": "{\"compiler\":{\"version\":\"0.8.1+commit.df193b15\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"enum TokenType\",\"name\":\"tokenType\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"version\",\"type\":\"uint256\"}],\"name\":\"TokenCreated\",\"type\":\"event\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/BaseToken.sol\":\"BaseToken\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/BaseToken.sol\":{\"keccak256\":\"0x136c4efb9c753ce66ad44424e7f75a0c0cd3d06b5c43acc8bd77eb3eb9de53c4\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://46f03ce95c2fd040e35a5728df28412d6c872cfc27097d05f5df1670dae4fafe\",\"dweb:/ipfs/QmWpwm6dvG2W7zhGK9Gjx5W6T6uKgx5ekHDWqftzoDmJUU\"]}},\"version\":1}",
"storageLayout": {
"storage": [],
"types": null
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
}
},
"contracts/WaifInu.sol": {
"WaifInu": {
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "router_",
"type": "address"
},
{
"internalType": "address",
"name": "marketingAddress_",
"type": "address"
},
{
"internalType": "address",
"name": "devAddress_",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Approval",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "minTokensBeforeSwap",
"type": "uint256"
}
],
"name": "MinTokensBeforeSwapUpdated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "previousOwner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "OwnershipTransferred",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "tokensSwapped",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "ethReceived",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "tokensIntoLiqudity",
"type": "uint256"
}
],
"name": "SwapAndLiquify",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "bool",
"name": "enabled",
"type": "bool"
}
],
"name": "SwapAndLiquifyEnabledUpdated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "token",
"type": "address"
},
{
"indexed": false,
"internalType": "enum TokenType",
"name": "tokenType",
"type": "uint8"
},
{
"indexed": false,
"internalType": "uint256",
"name": "version",
"type": "uint256"
}
],
"name": "TokenCreated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
{
"inputs": [],
"name": "VERSION",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "_liquidityFee",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "_marketingAddress",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "_marketingFee",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "_taxFee",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "address",
"name": "spender",
"type": "address"
}
],
"name": "allowance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "approve",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "decimals",
"outputs": [
{
"internalType": "uint8",
"name": "",
"type": "uint8"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "subtractedValue",
"type": "uint256"
}
],
"name": "decreaseAllowance",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "tAmount",
"type": "uint256"
}
],
"name": "deliver",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "excludeFromFee",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "excludeFromReward",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "includeInFee",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "includeInReward",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "addedValue",
"type": "uint256"
}
],
"name": "increaseAllowance",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "isExcludedFromFee",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "isExcludedFromReward",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "name",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "tAmount",
"type": "uint256"
},
{
"internalType": "bool",
"name": "deductTransferFee",
"type": "bool"
}
],
"name": "reflectionFromToken",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "renounceOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "liquidityFeeBps",
"type": "uint256"
}
],
"name": "setLiquidityFeePercent",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "marketingFeeBps",
"type": "uint256"
}
],
"name": "setMarketingFeePercent",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bool",
"name": "_enabled",
"type": "bool"
}
],
"name": "setSwapAndLiquifyEnabled",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "taxFeeBps",
"type": "uint256"
}
],
"name": "setTaxFeePercent",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "swapAndLiquifyEnabled",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "symbol",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "rAmount",
"type": "uint256"
}
],
"name": "tokenFromReflection",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "totalFees",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "recipient",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"internalType": "address",
"name": "recipient",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "transferOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "uniswapV2Pair",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "uniswapV2Router",
"outputs": [
{
"internalType": "contract IUniswapV2Router02",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"stateMutability": "payable",
"type": "receive"
}
],
"devdoc": {
"kind": "dev",
"methods": {
"allowance(address,address)": {
"details": "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."
},
"approve(address,uint256)": {
"details": "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."
},
"balanceOf(address)": {
"details": "Returns the amount of tokens owned by `account`."
},
"owner()": {
"details": "Returns the address of the current owner."
},
"renounceOwnership()": {
"details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."
},
"totalSupply()": {
"details": "Returns the amount of tokens in existence."
},
"transferOwnership(address)": {
"details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
}
},
"version": 1
},
"evm": {
"assembly": " /* \"contracts/WaifInu.sol\":1010:1043 string private _name = \"Waif Inu\" */\n 0xc0\n /* \"contracts/WaifInu.sol\":399:22530 contract WaifInu is IERC20, Ownable, BaseToken {... */\n 0x40\n /* \"contracts/WaifInu.sol\":1010:1043 string private _name = \"Waif Inu\" */\n mstore\n 0x08\n /* \"contracts/WaifInu.sol\":399:22530 contract WaifInu is IERC20, Ownable, BaseToken {... */\n 0x80\n /* \"contracts/WaifInu.sol\":1010:1043 string private _name = \"Waif Inu\" */\n dup2\n swap1\n mstore\n shl(0xc0, 0x5761696620496e75)\n 0xa0\n swap1\n dup2\n mstore\n tag_1\n swap2\n 0x0a\n swap2\n swap1\n tag_2\n jump\t// in\ntag_1:\n pop\n /* \"contracts/WaifInu.sol\":1049:1079 string private _symbol = \"WFN\" */\n 0x40\n dup1\n mload\n dup1\n dup3\n add\n swap1\n swap2\n mstore\n 0x03\n dup1\n dup3\n mstore\n shl(0xe9, 0x2ba327)\n 0x20\n swap1\n swap3\n add\n swap2\n dup3\n mstore\n tag_3\n swap2\n 0x0b\n swap2\n tag_2\n jump\t// in\ntag_3:\n pop\n /* \"contracts/WaifInu.sol\":1140:1143 200 */\n 0xc8\n /* \"contracts/WaifInu.sol\":1115:1143 uint256 public _taxFee = 200 */\n 0x0d\n sstore\n /* \"contracts/WaifInu.sol\":1183:1190 _taxFee */\n sload(0x0d)\n /* \"contracts/WaifInu.sol\":1149:1190 uint256 private _previousTaxFee = _taxFee */\n 0x0e\n sstore\n /* \"contracts/WaifInu.sol\":1228:1231 200 */\n 0xc8\n /* \"contracts/WaifInu.sol\":1197:1231 uint256 public _liquidityFee = 200 */\n 0x0f\n sstore\n /* \"contracts/WaifInu.sol\":1277:1290 _liquidityFee */\n sload(0x0f)\n /* \"contracts/WaifInu.sol\":1237:1290 uint256 private _previousLiquidityFee = _liquidityFee */\n 0x10\n sstore\n /* \"contracts/WaifInu.sol\":1328:1331 400 */\n 0x0190\n /* \"contracts/WaifInu.sol\":1297:1331 uint256 public _marketingFee = 400 */\n 0x11\n sstore\n /* \"contracts/WaifInu.sol\":1377:1390 _marketingFee */\n sload(0x11)\n /* \"contracts/WaifInu.sol\":1337:1390 uint256 private _previousMarketingFee = _marketingFee */\n 0x12\n sstore\n /* \"contracts/WaifInu.sol\":2033:3474 constructor(... */\n callvalue\n dup1\n iszero\n tag_4\n jumpi\n 0x00\n dup1\n revert\ntag_4:\n pop\n mload(0x40)\n sub(codesize, bytecodeSize)\n dup1\n bytecodeSize\n dup4\n codecopy\n dup2\n add\n 0x40\n dup2\n swap1\n mstore\n tag_5\n swap2\n tag_6\n jump\t// in\ntag_5:\n /* \"@openzeppelin/contracts/access/Ownable.sol\":936:968 _transferOwnership(_msgSender()) */\n tag_10\n /* \"@openzeppelin/contracts/access/Ownable.sol\":955:967 _msgSender() */\n tag_11\n /* \"@openzeppelin/contracts/access/Ownable.sol\":955:965 _msgSender */\n tag_12\n /* \"@openzeppelin/contracts/access/Ownable.sol\":955:967 _msgSender() */\n jump\t// in\ntag_11:\n /* \"@openzeppelin/contracts/access/Ownable.sol\":936:954 _transferOwnership */\n tag_13\n /* \"@openzeppelin/contracts/access/Ownable.sol\":936:968 _transferOwnership(_msgSender()) */\n jump\t// in\ntag_10:\n sub(shl(0xa0, 0x01), 0x01)\n /* \"contracts/WaifInu.sol\":2171:2202 marketingAddress_ != address(0) */\n dup3\n and\n /* \"contracts/WaifInu.sol\":2150:2267 require(... */\n tag_15\n jumpi\n mload(0x40)\n shl(0xe5, 0x461bcd)\n dup2\n mstore\n 0x04\n add\n tag_16\n swap1\n tag_17\n jump\t// in\ntag_16:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\ntag_15:\n /* \"contracts/WaifInu.sol\":2278:2287 _decimals */\n 0x0c\n /* \"contracts/WaifInu.sol\":2278:2292 _decimals = 18 */\n dup1\n sload\n not(0xff)\n and\n /* \"contracts/WaifInu.sol\":2290:2292 18 */\n 0x12\n /* \"contracts/WaifInu.sol\":2278:2292 _decimals = 18 */\n or\n swap1\n sstore\n /* \"contracts/WaifInu.sol\":2313:2349 100000000000000000000000000000000000 */\n 0x13426172c74d822b878fe800000000\n /* \"contracts/WaifInu.sol\":2303:2310 _tTotal */\n 0x07\n /* \"contracts/WaifInu.sol\":2303:2349 _tTotal = 100000000000000000000000000000000000 */\n dup2\n swap1\n sstore\n /* \"contracts/WaifInu.sol\":2377:2390 MAX % _tTotal */\n tag_18\n swap1\n not(0x00)\n tag_19\n jump\t// in\ntag_18:\n /* \"contracts/WaifInu.sol\":2370:2391 MAX - (MAX % _tTotal) */\n tag_20\n swap1\n not(0x00)\n tag_21\n jump\t// in\ntag_20:\n /* \"contracts/WaifInu.sol\":2359:2366 _rTotal */\n 0x08\n /* \"contracts/WaifInu.sol\":2359:2392 _rTotal = (MAX - (MAX % _tTotal)) */\n sstore\n /* \"contracts/WaifInu.sol\":2421:2428 _taxFee */\n sload(0x0d)\n /* \"contracts/WaifInu.sol\":2403:2418 _previousTaxFee */\n 0x0e\n /* \"contracts/WaifInu.sol\":2403:2428 _previousTaxFee = _taxFee */\n sstore\n /* \"contracts/WaifInu.sol\":2463:2476 _liquidityFee */\n sload(0x0f)\n /* \"contracts/WaifInu.sol\":2439:2460 _previousLiquidityFee */\n 0x10\n /* \"contracts/WaifInu.sol\":2439:2476 _previousLiquidityFee = _liquidityFee */\n sstore\n /* \"contracts/WaifInu.sol\":2487:2504 _marketingAddress */\n 0x15\n /* \"contracts/WaifInu.sol\":2487:2524 _marketingAddress = marketingAddress_ */\n dup1\n sload\n not(sub(shl(0xa0, 0x01), 0x01))\n swap1\n dup2\n and\n sub(shl(0xa0, 0x01), 0x01)\n dup6\n dup2\n and\n swap2\n swap1\n swap2\n or\n swap1\n swap3\n sstore\n /* \"contracts/WaifInu.sol\":2534:2545 _devAddress */\n 0x16\n /* \"contracts/WaifInu.sol\":2534:2559 _devAddress = devAddress_ */\n dup1\n sload\n swap1\n swap2\n and\n swap2\n dup4\n and\n swap2\n swap1\n swap2\n or\n swap1\n sstore\n /* \"contracts/WaifInu.sol\":2593:2606 _marketingFee */\n sload(0x11)\n /* \"contracts/WaifInu.sol\":2569:2590 _previousMarketingFee */\n 0x12\n /* \"contracts/WaifInu.sol\":2569:2606 _previousMarketingFee = _marketingFee */\n sstore\n /* \"contracts/WaifInu.sol\":2649:2656 _tTotal */\n sload(0x07)\n /* \"contracts/WaifInu.sol\":2649:2674 _tTotal.mul(5).div(10**4) */\n tag_22\n swap1\n /* \"contracts/WaifInu.sol\":2668:2673 10**4 */\n 0x2710\n swap1\n /* \"contracts/WaifInu.sol\":2649:2663 _tTotal.mul(5) */\n tag_23\n swap1\n /* \"contracts/WaifInu.sol\":2661:2662 5 */\n 0x05\n /* \"contracts/WaifInu.sol\":2649:2660 _tTotal.mul */\n tag_24\n 0x20\n swap1\n dup2\n shl\n tag_0_215\n or\n /* \"contracts/WaifInu.sol\":2649:2663 _tTotal.mul(5) */\n swap1\n shr\n jump\t// in\ntag_23:\n /* \"contracts/WaifInu.sol\":2649:2667 _tTotal.mul(5).div */\n or(tag_0_216, shl(0x20, tag_25))\n swap1\n /* \"contracts/WaifInu.sol\":2649:2674 _tTotal.mul(5).div(10**4) */\n swap2\n swap1\n 0x20\n shr\n jump\t// in\ntag_22:\n /* \"contracts/WaifInu.sol\":2617:2646 numTokensSellToAddToLiquidity */\n 0x17\n /* \"contracts/WaifInu.sol\":2617:2674 numTokensSellToAddToLiquidity = _tTotal.mul(5).div(10**4) */\n sstore\n /* \"contracts/WaifInu.sol\":2694:2715 swapAndLiquifyEnabled */\n 0x16\n /* \"contracts/WaifInu.sol\":2694:2722 swapAndLiquifyEnabled = true */\n dup1\n sload\n not(shl(0xa8, 0xff))\n and\n shl(0xa8, 0x01)\n or\n swap1\n sstore\n /* \"contracts/WaifInu.sol\":2752:2759 _rTotal */\n sload(0x08)\n /* \"contracts/WaifInu.sol\":2718:2722 true */\n 0x01\n /* \"contracts/WaifInu.sol\":2694:2722 swapAndLiquifyEnabled = true */\n 0x00\n /* \"contracts/WaifInu.sol\":2741:2748 owner() */\n tag_26\n /* \"contracts/WaifInu.sol\":2741:2746 owner */\n tag_27\n /* \"contracts/WaifInu.sol\":2741:2748 owner() */\n jump\t// in\ntag_26:\n sub(shl(0xa0, 0x01), 0x01)\n /* \"contracts/WaifInu.sol\":2733:2749 _rOwned[owner()] */\n and\n sub(shl(0xa0, 0x01), 0x01)\n and\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x00\n keccak256\n /* \"contracts/WaifInu.sol\":2733:2759 _rOwned[owner()] = _rTotal */\n dup2\n swap1\n sstore\n pop\n /* \"contracts/WaifInu.sol\":2770:2805 IUniswapV2Router02 _uniswapV2Router */\n 0x00\n /* \"contracts/WaifInu.sol\":2827:2834 router_ */\n dup4\n /* \"contracts/WaifInu.sol\":2770:2835 IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(router_) */\n swap1\n pop\n /* \"contracts/WaifInu.sol\":2931:2947 _uniswapV2Router */\n dup1\n sub(shl(0xa0, 0x01), 0x01)\n /* \"contracts/WaifInu.sol\":2931:2955 _uniswapV2Router.factory */\n and\n 0xc45a0155\n /* \"contracts/WaifInu.sol\":2931:2957 _uniswapV2Router.factory() */\n mload(0x40)\n dup2\n 0xffffffff\n and\n 0xe0\n shl\n dup2\n mstore\n 0x04\n add\n 0x20\n mload(0x40)\n dup1\n dup4\n sub\n dup2\n dup7\n dup1\n extcodesize\n iszero\n dup1\n iszero\n tag_28\n jumpi\n 0x00\n dup1\n revert\ntag_28:\n pop\n gas\n staticcall\n iszero\n dup1\n iszero\n tag_30\n jumpi\n returndatasize\n 0x00\n dup1\n returndatacopy\n revert(0x00, returndatasize)\ntag_30:\n pop\n pop\n pop\n pop\n mload(0x40)\n returndatasize\n not(0x1f)\n 0x1f\n dup3\n add\n and\n dup3\n add\n dup1\n 0x40\n mstore\n pop\n dup2\n add\n swap1\n tag_31\n swap2\n swap1\n tag_32\n jump\t// in\ntag_31:\n sub(shl(0xa0, 0x01), 0x01)\n /* \"contracts/WaifInu.sol\":2913:2982 IUniswapV2Factory(_uniswapV2Router.factory())... */\n and\n 0xc9c65396\n /* \"contracts/WaifInu.sol\":2991:2995 this */\n address\n /* \"contracts/WaifInu.sol\":2998:3014 _uniswapV2Router */\n dup4\n sub(shl(0xa0, 0x01), 0x01)\n /* \"contracts/WaifInu.sol\":2998:3019 _uniswapV2Router.WETH */\n and\n 0xad5c4648\n /* \"contracts/WaifInu.sol\":2998:3021 _uniswapV2Router.WETH() */\n mload(0x40)\n dup2\n 0xffffffff\n and\n 0xe0\n shl\n dup2\n mstore\n 0x04\n add\n 0x20\n mload(0x40)\n dup1\n dup4\n sub\n dup2\n dup7\n dup1\n extcodesize\n iszero\n dup1\n iszero\n tag_33\n jumpi\n 0x00\n dup1\n revert\ntag_33:\n pop\n gas\n staticcall\n iszero\n dup1\n iszero\n tag_35\n jumpi\n returndatasize\n 0x00\n dup1\n returndatacopy\n revert(0x00, returndatasize)\ntag_35:\n pop\n pop\n pop\n pop\n mload(0x40)\n returndatasize\n not(0x1f)\n 0x1f\n dup3\n add\n and\n dup3\n add\n dup1\n 0x40\n mstore\n pop\n dup2\n add\n swap1\n tag_36\n swap2\n swap1\n tag_32\n jump\t// in\ntag_36:\n /* \"contracts/WaifInu.sol\":2913:3022 IUniswapV2Factory(_uniswapV2Router.factory())... */\n mload(0x40)\n dup4\n 0xffffffff\n and\n 0xe0\n shl\n dup2\n mstore\n 0x04\n add\n tag_37\n swap3\n swap2\n swap1\n tag_38\n jump\t// in\ntag_37:\n 0x20\n mload(0x40)\n dup1\n dup4\n sub\n dup2\n 0x00\n dup8\n dup1\n extcodesize\n iszero\n dup1\n iszero\n tag_39\n jumpi\n 0x00\n dup1\n revert\ntag_39:\n pop\n gas\n call\n iszero\n dup1\n iszero\n tag_41\n jumpi\n returndatasize\n 0x00\n dup1\n returndatacopy\n revert(0x00, returndatasize)\ntag_41:\n pop\n pop\n pop\n pop\n mload(0x40)\n returndatasize\n not(0x1f)\n 0x1f\n dup3\n add\n and\n dup3\n add\n dup1\n 0x40\n mstore\n pop\n dup2\n add\n swap1\n tag_42\n swap2\n swap1\n tag_32\n jump\t// in\ntag_42:\n /* \"contracts/WaifInu.sol\":2897:2910 uniswapV2Pair */\n 0x14\n /* \"contracts/WaifInu.sol\":2897:3022 uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())... */\n dup1\n sload\n not(sub(shl(0xa0, 0x01), 0x01))\n swap1\n dup2\n and\n sub(shl(0xa0, 0x01), 0x01)\n swap4\n dup5\n and\n or\n swap1\n swap2\n sstore\n /* \"contracts/WaifInu.sol\":3083:3098 uniswapV2Router */\n 0x13\n /* \"contracts/WaifInu.sol\":3083:3117 uniswapV2Router = _uniswapV2Router */\n dup1\n sload\n swap1\n swap2\n and\n swap2\n dup4\n and\n swap2\n swap1\n swap2\n or\n swap1\n sstore\n 0x01\n /* \"contracts/WaifInu.sol\":3180:3198 _isExcludedFromFee */\n 0x04\n 0x00\n /* \"contracts/WaifInu.sol\":3199:3206 owner() */\n tag_43\n /* \"contracts/WaifInu.sol\":3199:3204 owner */\n tag_27\n /* \"contracts/WaifInu.sol\":3199:3206 owner() */\n jump\t// in\ntag_43:\n sub(shl(0xa0, 0x01), 0x01)\n /* \"contracts/WaifInu.sol\":3180:3207 _isExcludedFromFee[owner()] */\n and\n dup2\n mstore\n 0x20\n dup1\n dup3\n add\n swap3\n swap1\n swap3\n mstore\n 0x40\n swap1\n dup2\n add\n 0x00\n swap1\n dup2\n keccak256\n /* \"contracts/WaifInu.sol\":3180:3214 _isExcludedFromFee[owner()] = true */\n dup1\n sload\n swap5\n iszero\n iszero\n not(0xff)\n swap6\n dup7\n and\n or\n swap1\n sstore\n /* \"contracts/WaifInu.sol\":3251:3255 this */\n address\n /* \"contracts/WaifInu.sol\":3224:3257 _isExcludedFromFee[address(this)] */\n dup2\n mstore\n /* \"contracts/WaifInu.sol\":3224:3242 _isExcludedFromFee */\n 0x04\n /* \"contracts/WaifInu.sol\":3224:3257 _isExcludedFromFee[address(this)] */\n swap1\n swap3\n mstore\n swap1\n keccak256\n /* \"contracts/WaifInu.sol\":3224:3264 _isExcludedFromFee[address(this)] = true */\n dup1\n sload\n swap1\n swap2\n and\n /* \"contracts/WaifInu.sol\":3180:3214 _isExcludedFromFee[owner()] = true */\n 0x01\n /* \"contracts/WaifInu.sol\":3224:3264 _isExcludedFromFee[address(this)] = true */\n or\n swap1\n sstore\n /* \"contracts/WaifInu.sol\":3301:3308 owner() */\n tag_44\n /* \"contracts/WaifInu.sol\":3301:3306 owner */\n tag_27\n /* \"contracts/WaifInu.sol\":3301:3308 owner() */\n jump\t// in\ntag_44:\n sub(shl(0xa0, 0x01), 0x01)\n /* \"contracts/WaifInu.sol\":3280:3318 Transfer(address(0), owner(), _tTotal) */\n and\n /* \"contracts/WaifInu.sol\":3297:3298 0 */\n 0x00\n sub(shl(0xa0, 0x01), 0x01)\n /* \"contracts/WaifInu.sol\":3280:3318 Transfer(address(0), owner(), _tTotal) */\n and\n 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef\n /* \"contracts/WaifInu.sol\":3310:3317 _tTotal */\n sload(0x07)\n /* \"contracts/WaifInu.sol\":3280:3318 Transfer(address(0), owner(), _tTotal) */\n mload(0x40)\n tag_45\n swap2\n swap1\n tag_46\n jump\t// in\ntag_45:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n log3\n /* \"contracts/WaifInu.sol\":3389:3393 this */\n address\n /* \"contracts/WaifInu.sol\":3360:3367 owner() */\n tag_47\n /* \"contracts/WaifInu.sol\":3360:3365 owner */\n tag_27\n /* \"contracts/WaifInu.sol\":3360:3367 owner() */\n jump\t// in\ntag_47:\n sub(shl(0xa0, 0x01), 0x01)\n /* \"contracts/WaifInu.sol\":3334:3467 TokenCreated(... */\n and\n 0x56358b41df5fa59f5639228f0930994cbdde383c8a8fd74e06c04e1deebe3562\n /* \"contracts/WaifInu.sol\":3408:3436 TokenType.liquidityGenerator */\n 0x02\n /* \"contracts/WaifInu.sol\":550:551 1 */\n 0x01\n /* \"contracts/WaifInu.sol\":3334:3467 TokenCreated(... */\n mload(0x40)\n tag_48\n swap3\n swap2\n swap1\n tag_49\n jump\t// in\ntag_48:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n log3\n /* \"contracts/WaifInu.sol\":2033:3474 constructor(... */\n pop\n pop\n pop\n pop\n /* \"contracts/WaifInu.sol\":399:22530 contract WaifInu is IERC20, Ownable, BaseToken {... */\n jump(tag_71)\n /* \"@openzeppelin/contracts/utils/Context.sol\":640:736 function _msgSender() internal view virtual returns (address) {... */\ntag_12:\n /* \"@openzeppelin/contracts/utils/Context.sol\":719:729 msg.sender */\n caller\n /* \"@openzeppelin/contracts/utils/Context.sol\":640:736 function _msgSender() internal view virtual returns (address) {... */\n swap1\n jump\t// out\n /* \"@openzeppelin/contracts/access/Ownable.sol\":2433:2620 function _transferOwnership(address newOwner) internal virtual {... */\ntag_13:\n /* \"@openzeppelin/contracts/access/Ownable.sol\":2506:2522 address oldOwner */\n 0x00\n /* \"@openzeppelin/contracts/access/Ownable.sol\":2525:2531 _owner */\n dup1\n sload\n sub(shl(0xa0, 0x01), 0x01)\n /* \"@openzeppelin/contracts/access/Ownable.sol\":2541:2558 _owner = newOwner */\n dup4\n dup2\n and\n not(sub(shl(0xa0, 0x01), 0x01))\n dup4\n and\n dup2\n or\n dup5\n sstore\n /* \"@openzeppelin/contracts/access/Ownable.sol\":2573:2613 OwnershipTransferred(oldOwner, newOwner) */\n mload(0x40)\n /* \"@openzeppelin/contracts/access/Ownable.sol\":2525:2531 _owner */\n swap2\n swap1\n swap3\n and\n swap3\n dup4\n swap2\n /* \"@openzeppelin/contracts/access/Ownable.sol\":2573:2613 OwnershipTransferred(oldOwner, newOwner) */\n 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0\n swap2\n /* \"@openzeppelin/contracts/access/Ownable.sol\":2506:2522 address oldOwner */\n swap1\n /* \"@openzeppelin/contracts/access/Ownable.sol\":2573:2613 OwnershipTransferred(oldOwner, newOwner) */\n log3\n /* \"@openzeppelin/contracts/access/Ownable.sol\":2433:2620 function _transferOwnership(address newOwner) internal virtual {... */\n pop\n pop\n jump\t// out\n /* \"@openzeppelin/contracts/utils/math/SafeMath.sol\":3465:3561 function mul(uint256 a, uint256 b) internal pure returns (uint256) {... */\ntag_24:\n /* \"@openzeppelin/contracts/utils/math/SafeMath.sol\":3523:3530 uint256 */\n 0x00\n /* \"@openzeppelin/contracts/utils/math/SafeMath.sol\":3549:3554 a * b */\n tag_54\n /* \"@openzeppelin/contracts/utils/math/SafeMath.sol\":3553:3554 b */\n dup3\n /* \"@openzeppelin/contracts/utils/math/SafeMath.sol\":3549:3550 a */\n dup5\n /* \"@openzeppelin/contracts/utils/math/SafeMath.sol\":3549:3554 a * b */\n tag_55\n jump\t// in\ntag_54:\n /* \"@openzeppelin/contracts/utils/math/SafeMath.sol\":3542:3554 return a * b */\n swap4\n /* \"@openzeppelin/contracts/utils/math/SafeMath.sol\":3465:3561 function mul(uint256 a, uint256 b) internal pure returns (uint256) {... */\n swap3\n pop\n pop\n pop\n jump\t// out\n /* \"@openzeppelin/contracts/utils/math/SafeMath.sol\":3850:3946 function div(uint256 a, uint256 b) internal pure returns (uint256) {... */\ntag_25:\n /* \"@openzeppelin/contracts/utils/math/SafeMath.sol\":3908:3915 uint256 */\n 0x00\n /* \"@openzeppelin/contracts/utils/math/SafeMath.sol\":3934:3939 a / b */\n tag_54\n /* \"@openzeppelin/contracts/utils/math/SafeMath.sol\":3938:3939 b */\n dup3\n /* \"@openzeppelin/contracts/utils/math/SafeMath.sol\":3934:3935 a */\n dup5\n /* \"@openzeppelin/contracts/utils/math/SafeMath.sol\":3934:3939 a / b */\n tag_58\n jump\t// in\n /* \"@openzeppelin/contracts/access/Ownable.sol\":1201:1286 function owner() public view virtual returns (address) {... */\ntag_27:\n /* \"@openzeppelin/contracts/access/Ownable.sol\":1247:1254 address */\n 0x00\n /* \"@openzeppelin/contracts/access/Ownable.sol\":1273:1279 _owner */\n sload\n sub(shl(0xa0, 0x01), 0x01)\n and\n /* \"@openzeppelin/contracts/access/Ownable.sol\":1201:1286 function owner() public view virtual returns (address) {... */\n swap1\n jump\t// out\n /* \"contracts/WaifInu.sol\":399:22530 contract WaifInu is IERC20, Ownable, BaseToken {... */\ntag_2:\n dup3\n dup1\n sload\n tag_60\n swap1\n tag_61\n jump\t// in\ntag_60:\n swap1\n 0x00\n mstore\n keccak256(0x00, 0x20)\n swap1\n 0x1f\n add\n 0x20\n swap1\n div\n dup2\n add\n swap3\n dup3\n tag_63\n jumpi\n 0x00\n dup6\n sstore\n jump(tag_66)\ntag_63:\n dup3\n 0x1f\n lt\n tag_64\n jumpi\n dup1\n mload\n not(0xff)\n and\n dup4\n dup1\n add\n or\n dup6\n sstore\n jump(tag_66)\ntag_64:\n dup3\n dup1\n add\n 0x01\n add\n dup6\n sstore\n dup3\n iszero\n tag_66\n jumpi\n swap2\n dup3\n add\ntag_65:\n dup3\n dup2\n gt\n iszero\n tag_66\n jumpi\n dup3\n mload\n dup3\n sstore\n swap2\n 0x20\n add\n swap2\n swap1\n 0x01\n add\n swap1\n jump(tag_65)\ntag_66:\n pop\n tag_67\n swap3\n swap2\n pop\n tag_68\n jump\t// in\ntag_67:\n pop\n swap1\n jump\t// out\ntag_68:\ntag_69:\n dup1\n dup3\n gt\n iszero\n tag_67\n jumpi\n 0x00\n dup2\n sstore\n 0x01\n add\n jump(tag_69)\n /* \"#utility.yul\":14:193 */\ntag_72:\n /* \"#utility.yul\":95:108 */\n dup1\n mload\n sub(shl(0xa0, 0x01), 0x01)\n /* \"#utility.yul\":137:168 */\n dup2\n and\n /* \"#utility.yul\":127:169 */\n dup2\n eq\n /* \"#utility.yul\":117:119 */\n tag_74\n jumpi\n /* \"#utility.yul\":183:184 */\n 0x00\n /* \"#utility.yul\":180:181 */\n dup1\n /* \"#utility.yul\":173:185 */\n revert\n /* \"#utility.yul\":117:119 */\ntag_74:\n /* \"#utility.yul\":76:193 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":198:418 */\ntag_32:\n 0x00\n /* \"#utility.yul\":321:323 */\n 0x20\n /* \"#utility.yul\":309:318 */\n dup3\n /* \"#utility.yul\":300:307 */\n dup5\n /* \"#utility.yul\":296:319 */\n sub\n /* \"#utility.yul\":292:324 */\n slt\n /* \"#utility.yul\":289:291 */\n iszero\n tag_76\n jumpi\n /* \"#utility.yul\":342:348 */\n dup1\n /* \"#utility.yul\":334:340 */\n dup2\n /* \"#utility.yul\":327:349 */\n revert\n /* \"#utility.yul\":289:291 */\ntag_76:\n /* \"#utility.yul\":370:412 */\n tag_54\n /* \"#utility.yul\":402:411 */\n dup3\n /* \"#utility.yul\":370:412 */\n tag_72\n jump\t// in\n /* \"#utility.yul\":423:817 */\ntag_6:\n 0x00\n dup1\n 0x00\n /* \"#utility.yul\":580:582 */\n 0x60\n /* \"#utility.yul\":568:577 */\n dup5\n /* \"#utility.yul\":559:566 */\n dup7\n /* \"#utility.yul\":555:578 */\n sub\n /* \"#utility.yul\":551:583 */\n slt\n /* \"#utility.yul\":548:550 */\n iszero\n tag_79\n jumpi\n /* \"#utility.yul\":601:607 */\n dup2\n /* \"#utility.yul\":593:599 */\n dup3\n /* \"#utility.yul\":586:608 */\n revert\n /* \"#utility.yul\":548:550 */\ntag_79:\n /* \"#utility.yul\":629:671 */\n tag_80\n /* \"#utility.yul\":661:670 */\n dup5\n /* \"#utility.yul\":629:671 */\n tag_72\n jump\t// in\ntag_80:\n /* \"#utility.yul\":619:671 */\n swap3\n pop\n /* \"#utility.yul\":690:741 */\n tag_81\n /* \"#utility.yul\":737:739 */\n 0x20\n /* \"#utility.yul\":726:735 */\n dup6\n /* \"#utility.yul\":722:740 */\n add\n /* \"#utility.yul\":690:741 */\n tag_72\n jump\t// in\ntag_81:\n /* \"#utility.yul\":680:741 */\n swap2\n pop\n /* \"#utility.yul\":760:811 */\n tag_82\n /* \"#utility.yul\":807:809 */\n 0x40\n /* \"#utility.yul\":796:805 */\n dup6\n /* \"#utility.yul\":792:810 */\n add\n /* \"#utility.yul\":760:811 */\n tag_72\n jump\t// in\ntag_82:\n /* \"#utility.yul\":750:811 */\n swap1\n pop\n /* \"#utility.yul\":538:817 */\n swap3\n pop\n swap3\n pop\n swap3\n jump\t// out\n /* \"#utility.yul\":822:1126 */\ntag_38:\n sub(shl(0xa0, 0x01), 0x01)\n /* \"#utility.yul\":1052:1067 */\n swap3\n dup4\n and\n /* \"#utility.yul\":1034:1068 */\n dup2\n mstore\n /* \"#utility.yul\":1104:1119 */\n swap2\n and\n /* \"#utility.yul\":1099:1101 */\n 0x20\n /* \"#utility.yul\":1084:1102 */\n dup3\n add\n /* \"#utility.yul\":1077:1120 */\n mstore\n /* \"#utility.yul\":984:986 */\n 0x40\n /* \"#utility.yul\":969:987 */\n add\n swap1\n /* \"#utility.yul\":951:1126 */\n jump\t// out\n /* \"#utility.yul\":1131:1543 */\ntag_49:\n /* \"#utility.yul\":1304:1306 */\n 0x40\n /* \"#utility.yul\":1289:1307 */\n dup2\n add\n /* \"#utility.yul\":1337:1338 */\n 0x08\n /* \"#utility.yul\":1326:1339 */\n dup5\n lt\n /* \"#utility.yul\":1316:1318 */\n tag_85\n jumpi\n /* \"#utility.yul\":1382:1392 */\n 0x4e487b71\n /* \"#utility.yul\":1377:1380 */\n 0xe0\n /* \"#utility.yul\":1373:1393 */\n shl\n /* \"#utility.yul\":1370:1371 */\n 0x00\n /* \"#utility.yul\":1363:1394 */\n mstore\n /* \"#utility.yul\":1417:1421 */\n 0x21\n /* \"#utility.yul\":1414:1415 */\n 0x04\n /* \"#utility.yul\":1407:1422 */\n mstore\n /* \"#utility.yul\":1445:1449 */\n 0x24\n /* \"#utility.yul\":1442:1443 */\n 0x00\n /* \"#utility.yul\":1435:1450 */\n revert\n /* \"#utility.yul\":1316:1318 */\ntag_85:\n /* \"#utility.yul\":1469:1494 */\n swap3\n dup2\n mstore\n /* \"#utility.yul\":1525:1527 */\n 0x20\n /* \"#utility.yul\":1510:1528 */\n add\n /* \"#utility.yul\":1503:1537 */\n mstore\n /* \"#utility.yul\":1271:1543 */\n swap1\n jump\t// out\n /* \"#utility.yul\":1548:1951 */\ntag_17:\n /* \"#utility.yul\":1750:1752 */\n 0x20\n /* \"#utility.yul\":1732:1753 */\n dup1\n dup3\n mstore\n /* \"#utility.yul\":1789:1791 */\n 0x27\n /* \"#utility.yul\":1769:1787 */\n swap1\n dup3\n add\n /* \"#utility.yul\":1762:1792 */\n mstore\n /* \"#utility.yul\":1828:1862 */\n 0x43616e7420736574206d61726b6574696e67206164647265737320746f206164\n /* \"#utility.yul\":1823:1825 */\n 0x40\n /* \"#utility.yul\":1808:1826 */\n dup3\n add\n /* \"#utility.yul\":1801:1863 */\n mstore\n shl(0xcc, 0x06472657373203)\n /* \"#utility.yul\":1894:1896 */\n 0x60\n /* \"#utility.yul\":1879:1897 */\n dup3\n add\n /* \"#utility.yul\":1872:1909 */\n mstore\n /* \"#utility.yul\":1941:1944 */\n 0x80\n /* \"#utility.yul\":1926:1945 */\n add\n swap1\n /* \"#utility.yul\":1722:1951 */\n jump\t// out\n /* \"#utility.yul\":1956:2133 */\ntag_46:\n /* \"#utility.yul\":2102:2127 */\n swap1\n dup2\n mstore\n /* \"#utility.yul\":2090:2092 */\n 0x20\n /* \"#utility.yul\":2075:2093 */\n add\n swap1\n /* \"#utility.yul\":2057:2133 */\n jump\t// out\n /* \"#utility.yul\":2138:2258 */\ntag_58:\n 0x00\n /* \"#utility.yul\":2204:2205 */\n dup3\n /* \"#utility.yul\":2194:2196 */\n tag_90\n jumpi\n /* \"#utility.yul\":2209:2227 */\n tag_90\n tag_91\n jump\t// in\ntag_90:\n pop\n /* \"#utility.yul\":2243:2252 */\n div\n swap1\n /* \"#utility.yul\":2184:2258 */\n jump\t// out\n /* \"#utility.yul\":2263:2431 */\ntag_55:\n 0x00\n /* \"#utility.yul\":2369:2370 */\n dup2\n /* \"#utility.yul\":2365:2366 */\n 0x00\n /* \"#utility.yul\":2361:2367 */\n not\n /* \"#utility.yul\":2357:2371 */\n div\n /* \"#utility.yul\":2354:2355 */\n dup4\n /* \"#utility.yul\":2351:2372 */\n gt\n /* \"#utility.yul\":2346:2347 */\n dup3\n /* \"#utility.yul\":2339:2348 */\n iszero\n /* \"#utility.yul\":2332:2349 */\n iszero\n /* \"#utility.yul\":2328:2373 */\n and\n /* \"#utility.yul\":2325:2327 */\n iszero\n tag_94\n jumpi\n /* \"#utility.yul\":2376:2394 */\n tag_94\n tag_95\n jump\t// in\ntag_94:\n pop\n /* \"#utility.yul\":2416:2425 */\n mul\n swap1\n /* \"#utility.yul\":2315:2431 */\n jump\t// out\n /* \"#utility.yul\":2436:2561 */\ntag_21:\n 0x00\n /* \"#utility.yul\":2504:2505 */\n dup3\n /* \"#utility.yul\":2501:2502 */\n dup3\n /* \"#utility.yul\":2498:2506 */\n lt\n /* \"#utility.yul\":2495:2497 */\n iszero\n tag_98\n jumpi\n /* \"#utility.yul\":2509:2527 */\n tag_98\n tag_95\n jump\t// in\ntag_98:\n pop\n /* \"#utility.yul\":2546:2555 */\n sub\n swap1\n /* \"#utility.yul\":2485:2561 */\n jump\t// out\n /* \"#utility.yul\":2566:2946 */\ntag_61:\n /* \"#utility.yul\":2651:2652 */\n 0x02\n /* \"#utility.yul\":2641:2653 */\n dup2\n div\n /* \"#utility.yul\":2698:2699 */\n 0x01\n /* \"#utility.yul\":2688:2700 */\n dup3\n and\n dup1\n /* \"#utility.yul\":2709:2711 */\n tag_100\n jumpi\n /* \"#utility.yul\":2763:2767 */\n 0x7f\n /* \"#utility.yul\":2755:2761 */\n dup3\n /* \"#utility.yul\":2751:2768 */\n and\n /* \"#utility.yul\":2741:2768 */\n swap2\n pop\n /* \"#utility.yul\":2709:2711 */\ntag_100:\n /* \"#utility.yul\":2816:2818 */\n 0x20\n /* \"#utility.yul\":2808:2814 */\n dup3\n /* \"#utility.yul\":2805:2819 */\n lt\n /* \"#utility.yul\":2785:2803 */\n dup2\n /* \"#utility.yul\":2782:2820 */\n eq\n /* \"#utility.yul\":2779:2781 */\n iszero\n tag_101\n jumpi\n /* \"#utility.yul\":2862:2872 */\n 0x4e487b71\n /* \"#utility.yul\":2857:2860 */\n 0xe0\n /* \"#utility.yul\":2853:2873 */\n shl\n /* \"#utility.yul\":2850:2851 */\n 0x00\n /* \"#utility.yul\":2843:2874 */\n mstore\n /* \"#utility.yul\":2897:2901 */\n 0x22\n /* \"#utility.yul\":2894:2895 */\n 0x04\n /* \"#utility.yul\":2887:2902 */\n mstore\n /* \"#utility.yul\":2925:2929 */\n 0x24\n /* \"#utility.yul\":2922:2923 */\n 0x00\n /* \"#utility.yul\":2915:2930 */\n revert\n /* \"#utility.yul\":2779:2781 */\ntag_101:\n pop\n /* \"#utility.yul\":2621:2946 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":2951:3063 */\ntag_19:\n 0x00\n /* \"#utility.yul\":3009:3010 */\n dup3\n /* \"#utility.yul\":2999:3001 */\n tag_104\n jumpi\n /* \"#utility.yul\":3014:3032 */\n tag_104\n tag_91\n jump\t// in\ntag_104:\n pop\n /* \"#utility.yul\":3048:3057 */\n mod\n swap1\n /* \"#utility.yul\":2989:3063 */\n jump\t// out\n /* \"#utility.yul\":3068:3195 */\ntag_95:\n /* \"#utility.yul\":3129:3139 */\n 0x4e487b71\n /* \"#utility.yul\":3124:3127 */\n 0xe0\n /* \"#utility.yul\":3120:3140 */\n shl\n /* \"#utility.yul\":3117:3118 */\n 0x00\n /* \"#utility.yul\":3110:3141 */\n mstore\n /* \"#utility.yul\":3160:3164 */\n 0x11\n /* \"#utility.yul\":3157:3158 */\n 0x04\n /* \"#utility.yul\":3150:3165 */\n mstore\n /* \"#utility.yul\":3184:3188 */\n 0x24\n /* \"#utility.yul\":3181:3182 */\n 0x00\n /* \"#utility.yul\":3174:3189 */\n revert\n /* \"#utility.yul\":3200:3327 */\ntag_91:\n /* \"#utility.yul\":3261:3271 */\n 0x4e487b71\n /* \"#utility.yul\":3256:3259 */\n 0xe0\n /* \"#utility.yul\":3252:3272 */\n shl\n /* \"#utility.yul\":3249:3250 */\n 0x00\n /* \"#utility.yul\":3242:3273 */\n mstore\n /* \"#utility.yul\":3292:3296 */\n 0x12\n /* \"#utility.yul\":3289:3290 */\n 0x04\n /* \"#utility.yul\":3282:3297 */\n mstore\n /* \"#utility.yul\":3316:3320 */\n 0x24\n /* \"#utility.yul\":3313:3314 */\n 0x00\n /* \"#utility.yul\":3306:3321 */\n revert\n /* \"#utility.yul\":3232:3327 */\ntag_71:\n /* \"contracts/WaifInu.sol\":399:22530 contract WaifInu is IERC20, Ownable, BaseToken {... */\n dataSize(sub_0)\n dup1\n dataOffset(sub_0)\n 0x00\n codecopy\n 0x00\n return\nstop\n\nsub_0: assembly {\n /* \"contracts/WaifInu.sol\":399:22530 contract WaifInu is IERC20, Ownable, BaseToken {... */\n mstore(0x40, 0x80)\n jumpi(tag_1, lt(calldatasize, 0x04))\n shr(0xe0, calldataload(0x00))\n dup1\n 0x4a74bb02\n gt\n tag_39\n jumpi\n dup1\n 0x95d89b41\n gt\n tag_40\n jumpi\n dup1\n 0xcaac7934\n gt\n tag_41\n jumpi\n dup1\n 0xcaac7934\n eq\n tag_34\n jumpi\n dup1\n 0xdd62ed3e\n eq\n tag_35\n jumpi\n dup1\n 0xea2f0b37\n eq\n tag_36\n jumpi\n dup1\n 0xf2fde38b\n eq\n tag_37\n jumpi\n dup1\n 0xffa1ad74\n eq\n tag_38\n jumpi\n jump(tag_2)\n tag_41:\n dup1\n 0x95d89b41\n eq\n tag_30\n jumpi\n dup1\n 0xa457c2d7\n eq\n tag_31\n jumpi\n dup1\n 0xa9059cbb\n eq\n tag_32\n jumpi\n dup1\n 0xc49b9a80\n eq\n tag_33\n jumpi\n jump(tag_2)\n tag_40:\n dup1\n 0x70a08231\n gt\n tag_42\n jumpi\n dup1\n 0x70a08231\n eq\n tag_25\n jumpi\n dup1\n 0x715018a6\n eq\n tag_26\n jumpi\n dup1\n 0x88f82020\n eq\n tag_27\n jumpi\n dup1\n 0x8da5cb5b\n eq\n tag_28\n jumpi\n dup1\n 0x8ee88c53\n eq\n tag_29\n jumpi\n jump(tag_2)\n tag_42:\n dup1\n 0x4a74bb02\n eq\n tag_21\n jumpi\n dup1\n 0x52390c02\n eq\n tag_22\n jumpi\n dup1\n 0x5342acb4\n eq\n tag_23\n jumpi\n dup1\n 0x6bc87c3a\n eq\n tag_24\n jumpi\n jump(tag_2)\n tag_39:\n dup1\n 0x313ce567\n gt\n tag_43\n jumpi\n dup1\n 0x3bd5d173\n gt\n tag_44\n jumpi\n dup1\n 0x3bd5d173\n eq\n tag_16\n jumpi\n dup1\n 0x437823ec\n eq\n tag_17\n jumpi\n dup1\n 0x4549b039\n eq\n tag_18\n jumpi\n dup1\n 0x457c194c\n eq\n tag_19\n jumpi\n dup1\n 0x49bd5a5e\n eq\n tag_20\n jumpi\n jump(tag_2)\n tag_44:\n dup1\n 0x313ce567\n eq\n tag_12\n jumpi\n dup1\n 0x3685d419\n eq\n tag_13\n jumpi\n dup1\n 0x39509351\n eq\n tag_14\n jumpi\n dup1\n 0x3b124fe7\n eq\n tag_15\n jumpi\n jump(tag_2)\n tag_43:\n dup1\n 0x1694505e\n gt\n tag_45\n jumpi\n dup1\n 0x1694505e\n eq\n tag_7\n jumpi\n dup1\n 0x18160ddd\n eq\n tag_8\n jumpi\n dup1\n 0x22976e0d\n eq\n tag_9\n jumpi\n dup1\n 0x23b872dd\n eq\n tag_10\n jumpi\n dup1\n 0x2d838119\n eq\n tag_11\n jumpi\n jump(tag_2)\n tag_45:\n dup1\n 0x061c82d0\n eq\n tag_3\n jumpi\n dup1\n 0x06fdde03\n eq\n tag_4\n jumpi\n dup1\n 0x095ea7b3\n eq\n tag_5\n jumpi\n dup1\n 0x13114a9d\n eq\n tag_6\n jumpi\n jump(tag_2)\n tag_1:\n jumpi(tag_2, calldatasize)\n stop\n tag_2:\n 0x00\n dup1\n revert\n /* \"contracts/WaifInu.sol\":9126:9356 function setTaxFeePercent(uint256 taxFeeBps) external onlyOwner {... */\n tag_3:\n callvalue\n dup1\n iszero\n tag_48\n jumpi\n 0x00\n dup1\n revert\n tag_48:\n pop\n tag_49\n tag_50\n calldatasize\n 0x04\n tag_51\n jump\t// in\n tag_50:\n tag_52\n jump\t// in\n tag_49:\n stop\n /* \"contracts/WaifInu.sol\":3480:3561 function name() public view returns (string memory) {... */\n tag_4:\n callvalue\n dup1\n iszero\n tag_53\n jumpi\n 0x00\n dup1\n revert\n tag_53:\n pop\n tag_54\n tag_55\n jump\t// in\n tag_54:\n mload(0x40)\n tag_56\n swap2\n swap1\n tag_57\n jump\t// in\n tag_56:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"contracts/WaifInu.sol\":4426:4612 function approve(address spender, uint256 amount)... */\n tag_5:\n callvalue\n dup1\n iszero\n tag_58\n jumpi\n 0x00\n dup1\n revert\n tag_58:\n pop\n tag_59\n tag_60\n calldatasize\n 0x04\n tag_61\n jump\t// in\n tag_60:\n tag_62\n jump\t// in\n tag_59:\n mload(0x40)\n tag_56\n swap2\n swap1\n tag_64\n jump\t// in\n /* \"contracts/WaifInu.sol\":5866:5951 function totalFees() public view returns (uint256) {... */\n tag_6:\n callvalue\n dup1\n iszero\n tag_65\n jumpi\n 0x00\n dup1\n revert\n tag_65:\n pop\n tag_66\n tag_67\n jump\t// in\n tag_66:\n mload(0x40)\n tag_56\n swap2\n swap1\n tag_69\n jump\t// in\n /* \"contracts/WaifInu.sol\":1397:1438 IUniswapV2Router02 public uniswapV2Router */\n tag_7:\n callvalue\n dup1\n iszero\n tag_70\n jumpi\n 0x00\n dup1\n revert\n tag_70:\n pop\n tag_71\n tag_72\n jump\t// in\n tag_71:\n mload(0x40)\n tag_56\n swap2\n swap1\n tag_135\n jump\t// in\n /* \"contracts/WaifInu.sol\":3745:3838 function totalSupply() public view override returns (uint256) {... */\n tag_8:\n callvalue\n dup1\n iszero\n tag_75\n jumpi\n 0x00\n dup1\n revert\n tag_75:\n pop\n tag_66\n tag_77\n jump\t// in\n /* \"contracts/WaifInu.sol\":1297:1331 uint256 public _marketingFee = 400 */\n tag_9:\n callvalue\n dup1\n iszero\n tag_79\n jumpi\n 0x00\n dup1\n revert\n tag_79:\n pop\n tag_66\n tag_81\n jump\t// in\n /* \"contracts/WaifInu.sol\":4618:5049 function transferFrom(... */\n tag_10:\n callvalue\n dup1\n iszero\n tag_83\n jumpi\n 0x00\n dup1\n revert\n tag_83:\n pop\n tag_59\n tag_85\n calldatasize\n 0x04\n tag_86\n jump\t// in\n tag_85:\n tag_87\n jump\t// in\n /* \"contracts/WaifInu.sol\":6850:7161 function tokenFromReflection(uint256 rAmount)... */\n tag_11:\n callvalue\n dup1\n iszero\n tag_89\n jumpi\n 0x00\n dup1\n revert\n tag_89:\n pop\n tag_66\n tag_91\n calldatasize\n 0x04\n tag_51\n jump\t// in\n tag_91:\n tag_92\n jump\t// in\n /* \"contracts/WaifInu.sol\":3658:3739 function decimals() public view returns (uint8) {... */\n tag_12:\n callvalue\n dup1\n iszero\n tag_94\n jumpi\n 0x00\n dup1\n revert\n tag_94:\n pop\n tag_95\n tag_96\n jump\t// in\n tag_95:\n mload(0x40)\n tag_56\n swap2\n swap1\n tag_98\n jump\t// in\n /* \"contracts/WaifInu.sol\":7611:8077 function includeInReward(address account) external onlyOwner {... */\n tag_13:\n callvalue\n dup1\n iszero\n tag_99\n jumpi\n 0x00\n dup1\n revert\n tag_99:\n pop\n tag_49\n tag_101\n calldatasize\n 0x04\n tag_102\n jump\t// in\n tag_101:\n tag_103\n jump\t// in\n /* \"contracts/WaifInu.sol\":5055:5344 function increaseAllowance(address spender, uint256 addedValue)... */\n tag_14:\n callvalue\n dup1\n iszero\n tag_104\n jumpi\n 0x00\n dup1\n revert\n tag_104:\n pop\n tag_59\n tag_106\n calldatasize\n 0x04\n tag_61\n jump\t// in\n tag_106:\n tag_107\n jump\t// in\n /* \"contracts/WaifInu.sol\":1115:1143 uint256 public _taxFee = 200 */\n tag_15:\n callvalue\n dup1\n iszero\n tag_109\n jumpi\n 0x00\n dup1\n revert\n tag_109:\n pop\n tag_66\n tag_111\n jump\t// in\n /* \"contracts/WaifInu.sol\":5957:6368 function deliver(uint256 tAmount) public {... */\n tag_16:\n callvalue\n dup1\n iszero\n tag_113\n jumpi\n 0x00\n dup1\n revert\n tag_113:\n pop\n tag_49\n tag_115\n calldatasize\n 0x04\n tag_51\n jump\t// in\n tag_115:\n tag_116\n jump\t// in\n /* \"contracts/WaifInu.sol\":8897:9006 function excludeFromFee(address account) public onlyOwner {... */\n tag_17:\n callvalue\n dup1\n iszero\n tag_117\n jumpi\n 0x00\n dup1\n revert\n tag_117:\n pop\n tag_49\n tag_119\n calldatasize\n 0x04\n tag_102\n jump\t// in\n tag_119:\n tag_120\n jump\t// in\n /* \"contracts/WaifInu.sol\":6374:6844 function reflectionFromToken(uint256 tAmount, bool deductTransferFee)... */\n tag_18:\n callvalue\n dup1\n iszero\n tag_121\n jumpi\n 0x00\n dup1\n revert\n tag_121:\n pop\n tag_66\n tag_123\n calldatasize\n 0x04\n tag_124\n jump\t// in\n tag_123:\n tag_125\n jump\t// in\n /* \"contracts/WaifInu.sol\":9642:9916 function setMarketingFeePercent(uint256 marketingFeeBps)... */\n tag_19:\n callvalue\n dup1\n iszero\n tag_127\n jumpi\n 0x00\n dup1\n revert\n tag_127:\n pop\n tag_49\n tag_129\n calldatasize\n 0x04\n tag_51\n jump\t// in\n tag_129:\n tag_130\n jump\t// in\n /* \"contracts/WaifInu.sol\":1444:1472 address public uniswapV2Pair */\n tag_20:\n callvalue\n dup1\n iszero\n tag_131\n jumpi\n 0x00\n dup1\n revert\n tag_131:\n pop\n tag_71\n tag_133\n jump\t// in\n /* \"contracts/WaifInu.sol\":1577:1610 bool public swapAndLiquifyEnabled */\n tag_21:\n callvalue\n dup1\n iszero\n tag_136\n jumpi\n 0x00\n dup1\n revert\n tag_136:\n pop\n tag_59\n tag_138\n jump\t// in\n /* \"contracts/WaifInu.sol\":7167:7605 function excludeFromReward(address account) public onlyOwner {... */\n tag_22:\n callvalue\n dup1\n iszero\n tag_140\n jumpi\n 0x00\n dup1\n revert\n tag_140:\n pop\n tag_49\n tag_142\n calldatasize\n 0x04\n tag_102\n jump\t// in\n tag_142:\n tag_143\n jump\t// in\n /* \"contracts/WaifInu.sol\":15104:15226 function isExcludedFromFee(address account) public view returns (bool) {... */\n tag_23:\n callvalue\n dup1\n iszero\n tag_144\n jumpi\n 0x00\n dup1\n revert\n tag_144:\n pop\n tag_59\n tag_146\n calldatasize\n 0x04\n tag_102\n jump\t// in\n tag_146:\n tag_147\n jump\t// in\n /* \"contracts/WaifInu.sol\":1197:1231 uint256 public _liquidityFee = 200 */\n tag_24:\n callvalue\n dup1\n iszero\n tag_149\n jumpi\n 0x00\n dup1\n revert\n tag_149:\n pop\n tag_66\n tag_151\n jump\t// in\n /* \"contracts/WaifInu.sol\":3844:4039 function balanceOf(address account) public view override returns (uint256) {... */\n tag_25:\n callvalue\n dup1\n iszero\n tag_153\n jumpi\n 0x00\n dup1\n revert\n tag_153:\n pop\n tag_66\n tag_155\n calldatasize\n 0x04\n tag_102\n jump\t// in\n tag_155:\n tag_156\n jump\t// in\n /* \"@openzeppelin/contracts/access/Ownable.sol\":1831:1932 function renounceOwnership() public virtual onlyOwner {... */\n tag_26:\n callvalue\n dup1\n iszero\n tag_158\n jumpi\n 0x00\n dup1\n revert\n tag_158:\n pop\n tag_49\n tag_160\n jump\t// in\n /* \"contracts/WaifInu.sol\":5742:5860 function isExcludedFromReward(address account) public view returns (bool) {... */\n tag_27:\n callvalue\n dup1\n iszero\n tag_161\n jumpi\n 0x00\n dup1\n revert\n tag_161:\n pop\n tag_59\n tag_163\n calldatasize\n 0x04\n tag_102\n jump\t// in\n tag_163:\n tag_164\n jump\t// in\n /* \"@openzeppelin/contracts/access/Ownable.sol\":1201:1286 function owner() public view virtual returns (address) {... */\n tag_28:\n callvalue\n dup1\n iszero\n tag_166\n jumpi\n 0x00\n dup1\n revert\n tag_166:\n pop\n tag_71\n tag_168\n jump\t// in\n /* \"contracts/WaifInu.sol\":9362:9636 function setLiquidityFeePercent(uint256 liquidityFeeBps)... */\n tag_29:\n callvalue\n dup1\n iszero\n tag_170\n jumpi\n 0x00\n dup1\n revert\n tag_170:\n pop\n tag_49\n tag_172\n calldatasize\n 0x04\n tag_51\n jump\t// in\n tag_172:\n tag_173\n jump\t// in\n /* \"contracts/WaifInu.sol\":3567:3652 function symbol() public view returns (string memory) {... */\n tag_30:\n callvalue\n dup1\n iszero\n tag_174\n jumpi\n 0x00\n dup1\n revert\n tag_174:\n pop\n tag_54\n tag_176\n jump\t// in\n /* \"contracts/WaifInu.sol\":5350:5736 function decreaseAllowance(address spender, uint256 subtractedValue)... */\n tag_31:\n callvalue\n dup1\n iszero\n tag_178\n jumpi\n 0x00\n dup1\n revert\n tag_178:\n pop\n tag_59\n tag_180\n calldatasize\n 0x04\n tag_61\n jump\t// in\n tag_180:\n tag_181\n jump\t// in\n /* \"contracts/WaifInu.sol\":4045:4237 function transfer(address recipient, uint256 amount)... */\n tag_32:\n callvalue\n dup1\n iszero\n tag_183\n jumpi\n 0x00\n dup1\n revert\n tag_183:\n pop\n tag_59\n tag_185\n calldatasize\n 0x04\n tag_61\n jump\t// in\n tag_185:\n tag_186\n jump\t// in\n /* \"contracts/WaifInu.sol\":9922:10090 function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner {... */\n tag_33:\n callvalue\n dup1\n iszero\n tag_188\n jumpi\n 0x00\n dup1\n revert\n tag_188:\n pop\n tag_49\n tag_190\n calldatasize\n 0x04\n tag_191\n jump\t// in\n tag_190:\n tag_192\n jump\t// in\n /* \"contracts/WaifInu.sol\":1478:1510 address public _marketingAddress */\n tag_34:\n callvalue\n dup1\n iszero\n tag_193\n jumpi\n 0x00\n dup1\n revert\n tag_193:\n pop\n tag_71\n tag_195\n jump\t// in\n /* \"contracts/WaifInu.sol\":4243:4420 function allowance(address owner, address spender)... */\n tag_35:\n callvalue\n dup1\n iszero\n tag_197\n jumpi\n 0x00\n dup1\n revert\n tag_197:\n pop\n tag_66\n tag_199\n calldatasize\n 0x04\n tag_200\n jump\t// in\n tag_199:\n tag_201\n jump\t// in\n /* \"contracts/WaifInu.sol\":9012:9120 function includeInFee(address account) public onlyOwner {... */\n tag_36:\n callvalue\n dup1\n iszero\n tag_203\n jumpi\n 0x00\n dup1\n revert\n tag_203:\n pop\n tag_49\n tag_205\n calldatasize\n 0x04\n tag_102\n jump\t// in\n tag_205:\n tag_206\n jump\t// in\n /* \"@openzeppelin/contracts/access/Ownable.sol\":2081:2279 function transferOwnership(address newOwner) public virtual onlyOwner {... */\n tag_37:\n callvalue\n dup1\n iszero\n tag_207\n jumpi\n 0x00\n dup1\n revert\n tag_207:\n pop\n tag_49\n tag_209\n calldatasize\n 0x04\n tag_102\n jump\t// in\n tag_209:\n tag_210\n jump\t// in\n /* \"contracts/WaifInu.sol\":516:551 uint256 public constant VERSION = 1 */\n tag_38:\n callvalue\n dup1\n iszero\n tag_211\n jumpi\n 0x00\n dup1\n revert\n tag_211:\n pop\n tag_66\n tag_213\n jump\t// in\n /* \"contracts/WaifInu.sol\":9126:9356 function setTaxFeePercent(uint256 taxFeeBps) external onlyOwner {... */\n tag_52:\n /* \"@openzeppelin/contracts/access/Ownable.sol\":1094:1107 _checkOwner() */\n tag_218\n /* \"@openzeppelin/contracts/access/Ownable.sol\":1094:1105 _checkOwner */\n tag_219\n /* \"@openzeppelin/contracts/access/Ownable.sol\":1094:1107 _checkOwner() */\n jump\t// in\n tag_218:\n /* \"contracts/WaifInu.sol\":9200:9207 _taxFee */\n 0x0d\n /* \"contracts/WaifInu.sol\":9200:9219 _taxFee = taxFeeBps */\n dup2\n swap1\n sstore\n /* \"contracts/WaifInu.sol\":9276:9289 _marketingFee */\n sload(0x11)\n /* \"contracts/WaifInu.sol\":9260:9273 _liquidityFee */\n sload(0x0f)\n /* \"contracts/WaifInu.sol\":9293:9302 10**4 / 4 */\n 0x09c4\n swap2\n /* \"contracts/WaifInu.sol\":9276:9289 _marketingFee */\n swap1\n /* \"contracts/WaifInu.sol\":9250:9273 _taxFee + _liquidityFee */\n tag_221\n swap1\n /* \"contracts/WaifInu.sol\":9210:9219 taxFeeBps */\n dup5\n /* \"contracts/WaifInu.sol\":9250:9273 _taxFee + _liquidityFee */\n tag_222\n jump\t// in\n tag_221:\n /* \"contracts/WaifInu.sol\":9250:9289 _taxFee + _liquidityFee + _marketingFee */\n tag_223\n swap2\n swap1\n tag_222\n jump\t// in\n tag_223:\n /* \"contracts/WaifInu.sol\":9250:9302 _taxFee + _liquidityFee + _marketingFee <= 10**4 / 4 */\n gt\n iszero\n /* \"contracts/WaifInu.sol\":9229:9349 require(... */\n tag_224\n jumpi\n mload(0x40)\n shl(0xe5, 0x461bcd)\n dup2\n mstore\n 0x04\n add\n tag_225\n swap1\n tag_226\n jump\t// in\n tag_225:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n tag_224:\n /* \"contracts/WaifInu.sol\":9126:9356 function setTaxFeePercent(uint256 taxFeeBps) external onlyOwner {... */\n pop\n jump\t// out\n /* \"contracts/WaifInu.sol\":3480:3561 function name() public view returns (string memory) {... */\n tag_55:\n /* \"contracts/WaifInu.sol\":3517:3530 string memory */\n 0x60\n /* \"contracts/WaifInu.sol\":3549:3554 _name */\n 0x0a\n /* \"contracts/WaifInu.sol\":3542:3554 return _name */\n dup1\n sload\n tag_228\n swap1\n tag_229\n jump\t// in\n tag_228:\n dup1\n 0x1f\n add\n 0x20\n dup1\n swap2\n div\n mul\n 0x20\n add\n mload(0x40)\n swap1\n dup2\n add\n 0x40\n mstore\n dup1\n swap3\n swap2\n swap1\n dup2\n dup2\n mstore\n 0x20\n add\n dup3\n dup1\n sload\n tag_230\n swap1\n tag_229\n jump\t// in\n tag_230:\n dup1\n iszero\n tag_231\n jumpi\n dup1\n 0x1f\n lt\n tag_232\n jumpi\n 0x0100\n dup1\n dup4\n sload\n div\n mul\n dup4\n mstore\n swap2\n 0x20\n add\n swap2\n jump(tag_231)\n tag_232:\n dup3\n add\n swap2\n swap1\n 0x00\n mstore\n keccak256(0x00, 0x20)\n swap1\n tag_233:\n dup2\n sload\n dup2\n mstore\n swap1\n 0x01\n add\n swap1\n 0x20\n add\n dup1\n dup4\n gt\n tag_233\n jumpi\n dup3\n swap1\n sub\n 0x1f\n and\n dup3\n add\n swap2\n tag_231:\n pop\n pop\n pop\n pop\n pop\n swap1\n pop\n /* \"contracts/WaifInu.sol\":3480:3561 function name() public view returns (string memory) {... */\n swap1\n jump\t// out\n /* \"contracts/WaifInu.sol\":4426:4612 function approve(address spender, uint256 amount)... */\n tag_62:\n /* \"contracts/WaifInu.sol\":4525:4529 bool */\n 0x00\n /* \"contracts/WaifInu.sol\":4545:4584 _approve(_msgSender(), spender, amount) */\n tag_235\n /* \"contracts/WaifInu.sol\":4554:4566 _msgSender() */\n tag_236\n /* \"contracts/WaifInu.sol\":4554:4564 _msgSender */\n tag_237\n /* \"contracts/WaifInu.sol\":4554:4566 _msgSender() */\n jump\t// in\n tag_236:\n /* \"contracts/WaifInu.sol\":4568:4575 spender */\n dup5\n /* \"contracts/WaifInu.sol\":4577:4583 amount */\n dup5\n /* \"contracts/WaifInu.sol\":4545:4553 _approve */\n tag_238\n /* \"contracts/WaifInu.sol\":4545:4584 _approve(_msgSender(), spender, amount) */\n jump\t// in\n tag_235:\n pop\n /* \"contracts/WaifInu.sol\":4601:4605 true */\n 0x01\n /* \"contracts/WaifInu.sol\":4426:4612 function approve(address spender, uint256 amount)... */\n tag_234:\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"contracts/WaifInu.sol\":5866:5951 function totalFees() public view returns (uint256) {... */\n tag_67:\n /* \"contracts/WaifInu.sol\":5934:5944 _tFeeTotal */\n sload(0x09)\n /* \"contracts/WaifInu.sol\":5866:5951 function totalFees() public view returns (uint256) {... */\n swap1\n jump\t// out\n /* \"contracts/WaifInu.sol\":1397:1438 IUniswapV2Router02 public uniswapV2Router */\n tag_72:\n and(sub(shl(0xa0, 0x01), 0x01), sload(0x13))\n dup2\n jump\t// out\n /* \"contracts/WaifInu.sol\":3745:3838 function totalSupply() public view override returns (uint256) {... */\n tag_77:\n /* \"contracts/WaifInu.sol\":3824:3831 _tTotal */\n sload(0x07)\n /* \"contracts/WaifInu.sol\":3745:3838 function totalSupply() public view override returns (uint256) {... */\n swap1\n jump\t// out\n /* \"contracts/WaifInu.sol\":1297:1331 uint256 public _marketingFee = 400 */\n tag_81:\n sload(0x11)\n dup2\n jump\t// out\n /* \"contracts/WaifInu.sol\":4618:5049 function transferFrom(... */\n tag_87:\n /* \"contracts/WaifInu.sol\":4746:4750 bool */\n 0x00\n /* \"contracts/WaifInu.sol\":4762:4798 _transfer(sender, recipient, amount) */\n tag_242\n /* \"contracts/WaifInu.sol\":4772:4778 sender */\n dup5\n /* \"contracts/WaifInu.sol\":4780:4789 recipient */\n dup5\n /* \"contracts/WaifInu.sol\":4791:4797 amount */\n dup5\n /* \"contracts/WaifInu.sol\":4762:4771 _transfer */\n tag_243\n /* \"contracts/WaifInu.sol\":4762:4798 _transfer(sender, recipient, amount) */\n jump\t// in\n tag_242:\n /* \"contracts/WaifInu.sol\":4808:5021 _approve(... */\n tag_244\n /* \"contracts/WaifInu.sol\":4830:4836 sender */\n dup5\n /* \"contracts/WaifInu.sol\":4850:4862 _msgSender() */\n tag_245\n /* \"contracts/WaifInu.sol\":4850:4860 _msgSender */\n tag_237\n /* \"contracts/WaifInu.sol\":4850:4862 _msgSender() */\n jump\t// in\n tag_245:\n /* \"contracts/WaifInu.sol\":4876:5011 _allowances[sender][_msgSender()].sub(... */\n tag_246\n /* \"contracts/WaifInu.sol\":4931:4937 amount */\n dup6\n /* \"contracts/WaifInu.sol\":4876:5011 _allowances[sender][_msgSender()].sub(... */\n mload(0x40)\n dup1\n 0x60\n add\n 0x40\n mstore\n dup1\n 0x28\n dup2\n mstore\n 0x20\n add\n data_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330\n 0x28\n swap2\n codecopy\n sub(shl(0xa0, 0x01), 0x01)\n /* \"contracts/WaifInu.sol\":4876:4895 _allowances[sender] */\n dup11\n and\n 0x00\n swap1\n dup2\n mstore\n /* \"contracts/WaifInu.sol\":4876:4887 _allowances */\n 0x03\n /* \"contracts/WaifInu.sol\":4876:4895 _allowances[sender] */\n 0x20\n mstore\n 0x40\n dup2\n keccak256\n swap1\n /* \"contracts/WaifInu.sol\":4896:4908 _msgSender() */\n tag_247\n /* \"contracts/WaifInu.sol\":4896:4906 _msgSender */\n tag_237\n /* \"contracts/WaifInu.sol\":4896:4908 _msgSender() */\n jump\t// in\n tag_247:\n sub(shl(0xa0, 0x01), 0x01)\n /* \"contracts/WaifInu.sol\":4876:4909 _allowances[sender][_msgSender()] */\n and\n dup2\n mstore\n 0x20\n dup2\n add\n swap2\n swap1\n swap2\n mstore\n 0x40\n add\n 0x00\n keccak256\n sload\n swap2\n /* \"contracts/WaifInu.sol\":4876:5011 _allowances[sender][_msgSender()].sub(... */\n swap1\n /* \"contracts/WaifInu.sol\":4876:4913 _allowances[sender][_msgSender()].sub */\n tag_248\n /* \"contracts/WaifInu.sol\":4876:5011 _allowances[sender][_msgSender()].sub(... */\n jump\t// in\n tag_246:\n /* \"contracts/WaifInu.sol\":4808:4816 _approve */\n tag_238\n /* \"contracts/WaifInu.sol\":4808:5021 _approve(... */\n jump\t// in\n tag_244:\n pop\n /* \"contracts/WaifInu.sol\":5038:5042 true */\n 0x01\n /* \"contracts/WaifInu.sol\":4618:5049 function transferFrom(... */\n swap4\n swap3\n pop\n pop\n pop\n jump\t// out\n /* \"contracts/WaifInu.sol\":6850:7161 function tokenFromReflection(uint256 rAmount)... */\n tag_92:\n /* \"contracts/WaifInu.sol\":6941:6948 uint256 */\n 0x00\n /* \"contracts/WaifInu.sol\":6996:7003 _rTotal */\n sload(0x08)\n /* \"contracts/WaifInu.sol\":6985:6992 rAmount */\n dup3\n /* \"contracts/WaifInu.sol\":6985:7003 rAmount <= _rTotal */\n gt\n iszero\n /* \"contracts/WaifInu.sol\":6964:7071 require(... */\n tag_250\n jumpi\n mload(0x40)\n shl(0xe5, 0x461bcd)\n dup2\n mstore\n 0x04\n add\n tag_225\n swap1\n tag_252\n jump\t// in\n tag_250:\n /* \"contracts/WaifInu.sol\":7081:7100 uint256 currentRate */\n 0x00\n /* \"contracts/WaifInu.sol\":7103:7113 _getRate() */\n tag_253\n /* \"contracts/WaifInu.sol\":7103:7111 _getRate */\n tag_254\n /* \"contracts/WaifInu.sol\":7103:7113 _getRate() */\n jump\t// in\n tag_253:\n /* \"contracts/WaifInu.sol\":7081:7113 uint256 currentRate = _getRate() */\n swap1\n pop\n /* \"contracts/WaifInu.sol\":7130:7154 rAmount.div(currentRate) */\n tag_255\n /* \"contracts/WaifInu.sol\":7130:7137 rAmount */\n dup4\n /* \"contracts/WaifInu.sol\":7081:7113 uint256 currentRate = _getRate() */\n dup3\n /* \"contracts/WaifInu.sol\":7130:7141 rAmount.div */\n tag_216\n /* \"contracts/WaifInu.sol\":7130:7154 rAmount.div(currentRate) */\n jump\t// in\n tag_255:\n /* \"contracts/WaifInu.sol\":7123:7154 return rAmount.div(currentRate) */\n swap2\n pop\n pop\n /* \"contracts/WaifInu.sol\":6850:7161 function tokenFromReflection(uint256 rAmount)... */\n tag_249:\n swap2\n swap1\n pop\n jump\t// out\n /* \"contracts/WaifInu.sol\":3658:3739 function decimals() public view returns (uint8) {... */\n tag_96:\n /* \"contracts/WaifInu.sol\":3723:3732 _decimals */\n and(0xff, sload(0x0c))\n /* \"contracts/WaifInu.sol\":3658:3739 function decimals() public view returns (uint8) {... */\n swap1\n jump\t// out\n /* \"contracts/WaifInu.sol\":7611:8077 function includeInReward(address account) external onlyOwner {... */\n tag_103:\n /* \"@openzeppelin/contracts/access/Ownable.sol\":1094:1107 _checkOwner() */\n tag_258\n /* \"@openzeppelin/contracts/access/Ownable.sol\":1094:1105 _checkOwner */\n tag_219\n /* \"@openzeppelin/contracts/access/Ownable.sol\":1094:1107 _checkOwner() */\n jump\t// in\n tag_258:\n sub(shl(0xa0, 0x01), 0x01)\n /* \"contracts/WaifInu.sol\":7690:7710 _isExcluded[account] */\n dup2\n and\n 0x00\n swap1\n dup2\n mstore\n /* \"contracts/WaifInu.sol\":7690:7701 _isExcluded */\n 0x05\n /* \"contracts/WaifInu.sol\":7690:7710 _isExcluded[account] */\n 0x20\n mstore\n 0x40\n swap1\n keccak256\n sload\n 0xff\n and\n /* \"contracts/WaifInu.sol\":7682:7742 require(_isExcluded[account], \"Account is already excluded\") */\n tag_260\n jumpi\n mload(0x40)\n shl(0xe5, 0x461bcd)\n dup2\n mstore\n 0x04\n add\n tag_225\n swap1\n tag_262\n jump\t// in\n tag_260:\n /* \"contracts/WaifInu.sol\":7757:7766 uint256 i */\n 0x00\n /* \"contracts/WaifInu.sol\":7752:8071 for (uint256 i = 0; i < _excluded.length; i++) {... */\n tag_263:\n /* \"contracts/WaifInu.sol\":7776:7785 _excluded */\n 0x06\n /* \"contracts/WaifInu.sol\":7776:7792 _excluded.length */\n sload\n /* \"contracts/WaifInu.sol\":7772:7792 i < _excluded.length */\n dup2\n lt\n /* \"contracts/WaifInu.sol\":7752:8071 for (uint256 i = 0; i < _excluded.length; i++) {... */\n iszero\n tag_264\n jumpi\n /* \"contracts/WaifInu.sol\":7833:7840 account */\n dup2\n sub(shl(0xa0, 0x01), 0x01)\n /* \"contracts/WaifInu.sol\":7817:7840 _excluded[i] == account */\n and\n /* \"contracts/WaifInu.sol\":7817:7826 _excluded */\n 0x06\n /* \"contracts/WaifInu.sol\":7827:7828 i */\n dup3\n /* \"contracts/WaifInu.sol\":7817:7829 _excluded[i] */\n dup2\n sload\n dup2\n lt\n tag_266\n jumpi\n mstore(0x00, shl(0xe0, 0x4e487b71))\n mstore(0x04, 0x32)\n revert(0x00, 0x24)\n tag_266:\n 0x00\n swap2\n dup3\n mstore\n 0x20\n swap1\n swap2\n keccak256\n add\n sload\n sub(shl(0xa0, 0x01), 0x01)\n and\n /* \"contracts/WaifInu.sol\":7817:7840 _excluded[i] == account */\n eq\n /* \"contracts/WaifInu.sol\":7813:8061 if (_excluded[i] == account) {... */\n iszero\n tag_268\n jumpi\n /* \"contracts/WaifInu.sol\":7875:7884 _excluded */\n 0x06\n /* \"contracts/WaifInu.sol\":7885:7901 _excluded.length */\n dup1\n sload\n /* \"contracts/WaifInu.sol\":7885:7905 _excluded.length - 1 */\n tag_269\n swap1\n /* \"contracts/WaifInu.sol\":7904:7905 1 */\n 0x01\n swap1\n /* \"contracts/WaifInu.sol\":7885:7905 _excluded.length - 1 */\n tag_270\n jump\t// in\n tag_269:\n /* \"contracts/WaifInu.sol\":7875:7906 _excluded[_excluded.length - 1] */\n dup2\n sload\n dup2\n lt\n tag_271\n jumpi\n mstore(0x00, shl(0xe0, 0x4e487b71))\n mstore(0x04, 0x32)\n revert(0x00, 0x24)\n tag_271:\n 0x00\n swap2\n dup3\n mstore\n 0x20\n swap1\n swap2\n keccak256\n add\n sload\n /* \"contracts/WaifInu.sol\":7860:7869 _excluded */\n 0x06\n /* \"contracts/WaifInu.sol\":7860:7872 _excluded[i] */\n dup1\n sload\n sub(shl(0xa0, 0x01), 0x01)\n /* \"contracts/WaifInu.sol\":7875:7906 _excluded[_excluded.length - 1] */\n swap1\n swap3\n and\n swap2\n /* \"contracts/WaifInu.sol\":7870:7871 i */\n dup4\n swap1\n /* \"contracts/WaifInu.sol\":7860:7872 _excluded[i] */\n dup2\n lt\n tag_273\n jumpi\n mstore(0x00, shl(0xe0, 0x4e487b71))\n mstore(0x04, 0x32)\n revert(0x00, 0x24)\n tag_273:\n 0x00\n swap2\n dup3\n mstore\n 0x20\n dup1\n dup4\n keccak256\n swap2\n swap1\n swap2\n add\n /* \"contracts/WaifInu.sol\":7860:7906 _excluded[i] = _excluded[_excluded.length - 1] */\n dup1\n sload\n not(sub(shl(0xa0, 0x01), 0x01))\n and\n sub(shl(0xa0, 0x01), 0x01)\n swap5\n dup6\n and\n or\n swap1\n sstore\n /* \"contracts/WaifInu.sol\":7924:7940 _tOwned[account] */\n swap2\n dup5\n and\n dup2\n mstore\n /* \"contracts/WaifInu.sol\":7924:7931 _tOwned */\n 0x02\n /* \"contracts/WaifInu.sol\":7924:7940 _tOwned[account] */\n dup3\n mstore\n 0x40\n dup1\n dup3\n keccak256\n /* \"contracts/WaifInu.sol\":7924:7944 _tOwned[account] = 0 */\n dup3\n swap1\n sstore\n /* \"contracts/WaifInu.sol\":7962:7973 _isExcluded */\n 0x05\n /* \"contracts/WaifInu.sol\":7962:7982 _isExcluded[account] */\n swap1\n swap3\n mstore\n keccak256\n /* \"contracts/WaifInu.sol\":7962:7990 _isExcluded[account] = false */\n dup1\n sload\n not(0xff)\n and\n swap1\n sstore\n /* \"contracts/WaifInu.sol\":8008:8017 _excluded */\n 0x06\n /* \"contracts/WaifInu.sol\":8008:8023 _excluded.pop() */\n dup1\n sload\n dup1\n tag_275\n jumpi\n mstore(0x00, shl(0xe0, 0x4e487b71))\n mstore(0x04, 0x31)\n revert(0x00, 0x24)\n tag_275:\n 0x00\n dup3\n dup2\n mstore\n 0x20\n swap1\n keccak256\n dup2\n add\n not(0x00)\n swap1\n dup2\n add\n dup1\n sload\n not(sub(shl(0xa0, 0x01), 0x01))\n and\n swap1\n sstore\n add\n swap1\n sstore\n /* \"contracts/WaifInu.sol\":8041:8046 break */\n jump(tag_264)\n /* \"contracts/WaifInu.sol\":7813:8061 if (_excluded[i] == account) {... */\n tag_268:\n /* \"contracts/WaifInu.sol\":7794:7797 i++ */\n dup1\n tag_277\n dup2\n tag_278\n jump\t// in\n tag_277:\n swap2\n pop\n pop\n /* \"contracts/WaifInu.sol\":7752:8071 for (uint256 i = 0; i < _excluded.length; i++) {... */\n jump(tag_263)\n tag_264:\n pop\n /* \"contracts/WaifInu.sol\":7611:8077 function includeInReward(address account) external onlyOwner {... */\n pop\n jump\t// out\n /* \"contracts/WaifInu.sol\":5055:5344 function increaseAllowance(address spender, uint256 addedValue)... */\n tag_107:\n /* \"contracts/WaifInu.sol\":5167:5171 bool */\n 0x00\n /* \"contracts/WaifInu.sol\":5187:5316 _approve(... */\n tag_235\n /* \"contracts/WaifInu.sol\":5209:5221 _msgSender() */\n tag_281\n /* \"contracts/WaifInu.sol\":5209:5219 _msgSender */\n tag_237\n /* \"contracts/WaifInu.sol\":5209:5221 _msgSender() */\n jump\t// in\n tag_281:\n /* \"contracts/WaifInu.sol\":5235:5242 spender */\n dup5\n /* \"contracts/WaifInu.sol\":5256:5306 _allowances[_msgSender()][spender].add(addedValue) */\n tag_246\n /* \"contracts/WaifInu.sol\":5295:5305 addedValue */\n dup6\n /* \"contracts/WaifInu.sol\":5256:5267 _allowances */\n 0x03\n /* \"contracts/WaifInu.sol\":5256:5281 _allowances[_msgSender()] */\n 0x00\n /* \"contracts/WaifInu.sol\":5268:5280 _msgSender() */\n tag_283\n /* \"contracts/WaifInu.sol\":5268:5278 _msgSender */\n tag_237\n /* \"contracts/WaifInu.sol\":5268:5280 _msgSender() */\n jump\t// in\n tag_283:\n sub(shl(0xa0, 0x01), 0x01)\n /* \"contracts/WaifInu.sol\":5256:5281 _allowances[_msgSender()] */\n swap1\n dup2\n and\n dup3\n mstore\n 0x20\n dup1\n dup4\n add\n swap4\n swap1\n swap4\n mstore\n 0x40\n swap2\n dup3\n add\n 0x00\n swap1\n dup2\n keccak256\n /* \"contracts/WaifInu.sol\":5256:5290 _allowances[_msgSender()][spender] */\n swap2\n dup13\n and\n dup2\n mstore\n swap3\n mstore\n swap1\n keccak256\n sload\n swap1\n /* \"contracts/WaifInu.sol\":5256:5294 _allowances[_msgSender()][spender].add */\n tag_284\n /* \"contracts/WaifInu.sol\":5256:5306 _allowances[_msgSender()][spender].add(addedValue) */\n jump\t// in\n /* \"contracts/WaifInu.sol\":1115:1143 uint256 public _taxFee = 200 */\n tag_111:\n sload(0x0d)\n dup2\n jump\t// out\n /* \"contracts/WaifInu.sol\":5957:6368 function deliver(uint256 tAmount) public {... */\n tag_116:\n /* \"contracts/WaifInu.sol\":6008:6022 address sender */\n 0x00\n /* \"contracts/WaifInu.sol\":6025:6037 _msgSender() */\n tag_286\n /* \"contracts/WaifInu.sol\":6025:6035 _msgSender */\n tag_237\n /* \"contracts/WaifInu.sol\":6025:6037 _msgSender() */\n jump\t// in\n tag_286:\n sub(shl(0xa0, 0x01), 0x01)\n /* \"contracts/WaifInu.sol\":6069:6088 _isExcluded[sender] */\n dup2\n and\n 0x00\n swap1\n dup2\n mstore\n /* \"contracts/WaifInu.sol\":6069:6080 _isExcluded */\n 0x05\n /* \"contracts/WaifInu.sol\":6069:6088 _isExcluded[sender] */\n 0x20\n mstore\n 0x40\n swap1\n keccak256\n sload\n /* \"contracts/WaifInu.sol\":6008:6037 address sender = _msgSender() */\n swap1\n swap2\n pop\n /* \"contracts/WaifInu.sol\":6069:6088 _isExcluded[sender] */\n 0xff\n and\n /* \"contracts/WaifInu.sol\":6068:6088 !_isExcluded[sender] */\n iszero\n /* \"contracts/WaifInu.sol\":6047:6158 require(... */\n tag_287\n jumpi\n mload(0x40)\n shl(0xe5, 0x461bcd)\n dup2\n mstore\n 0x04\n add\n tag_225\n swap1\n tag_289\n jump\t// in\n tag_287:\n /* \"contracts/WaifInu.sol\":6169:6184 uint256 rAmount */\n 0x00\n /* \"contracts/WaifInu.sol\":6200:6219 _getValues(tAmount) */\n tag_290\n /* \"contracts/WaifInu.sol\":6211:6218 tAmount */\n dup4\n /* \"contracts/WaifInu.sol\":6200:6210 _getValues */\n tag_291\n /* \"contracts/WaifInu.sol\":6200:6219 _getValues(tAmount) */\n jump\t// in\n tag_290:\n pop\n pop\n pop\n sub(shl(0xa0, 0x01), 0x01)\n /* \"contracts/WaifInu.sol\":6247:6262 _rOwned[sender] */\n dup7\n and\n 0x00\n swap1\n dup2\n mstore\n /* \"contracts/WaifInu.sol\":6247:6254 _rOwned */\n 0x01\n /* \"contracts/WaifInu.sol\":6247:6262 _rOwned[sender] */\n 0x20\n mstore\n 0x40\n swap1\n keccak256\n sload\n /* \"contracts/WaifInu.sol\":6168:6219 (uint256 rAmount, , , , , , ) = _getValues(tAmount) */\n swap4\n swap5\n pop\n /* \"contracts/WaifInu.sol\":6247:6275 _rOwned[sender].sub(rAmount) */\n tag_292\n swap4\n /* \"contracts/WaifInu.sol\":6247:6262 _rOwned[sender] */\n swap3\n pop\n /* \"contracts/WaifInu.sol\":6168:6219 (uint256 rAmount, , , , , , ) = _getValues(tAmount) */\n dup5\n swap2\n pop\n pop\n /* \"contracts/WaifInu.sol\":6247:6266 _rOwned[sender].sub */\n tag_293\n /* \"contracts/WaifInu.sol\":6247:6275 _rOwned[sender].sub(rAmount) */\n jump\t// in\n tag_292:\n sub(shl(0xa0, 0x01), 0x01)\n /* \"contracts/WaifInu.sol\":6229:6244 _rOwned[sender] */\n dup4\n and\n 0x00\n swap1\n dup2\n mstore\n /* \"contracts/WaifInu.sol\":6229:6236 _rOwned */\n 0x01\n /* \"contracts/WaifInu.sol\":6229:6244 _rOwned[sender] */\n 0x20\n mstore\n 0x40\n swap1\n keccak256\n /* \"contracts/WaifInu.sol\":6229:6275 _rOwned[sender] = _rOwned[sender].sub(rAmount) */\n sstore\n /* \"contracts/WaifInu.sol\":6295:6302 _rTotal */\n sload(0x08)\n /* \"contracts/WaifInu.sol\":6295:6315 _rTotal.sub(rAmount) */\n tag_294\n swap1\n /* \"contracts/WaifInu.sol\":6307:6314 rAmount */\n dup3\n /* \"contracts/WaifInu.sol\":6295:6306 _rTotal.sub */\n tag_293\n /* \"contracts/WaifInu.sol\":6295:6315 _rTotal.sub(rAmount) */\n jump\t// in\n tag_294:\n /* \"contracts/WaifInu.sol\":6285:6292 _rTotal */\n 0x08\n /* \"contracts/WaifInu.sol\":6285:6315 _rTotal = _rTotal.sub(rAmount) */\n sstore\n /* \"contracts/WaifInu.sol\":6338:6348 _tFeeTotal */\n sload(0x09)\n /* \"contracts/WaifInu.sol\":6338:6361 _tFeeTotal.add(tAmount) */\n tag_295\n swap1\n /* \"contracts/WaifInu.sol\":6353:6360 tAmount */\n dup5\n /* \"contracts/WaifInu.sol\":6338:6352 _tFeeTotal.add */\n tag_284\n /* \"contracts/WaifInu.sol\":6338:6361 _tFeeTotal.add(tAmount) */\n jump\t// in\n tag_295:\n /* \"contracts/WaifInu.sol\":6325:6335 _tFeeTotal */\n 0x09\n /* \"contracts/WaifInu.sol\":6325:6361 _tFeeTotal = _tFeeTotal.add(tAmount) */\n sstore\n pop\n pop\n pop\n /* \"contracts/WaifInu.sol\":5957:6368 function deliver(uint256 tAmount) public {... */\n jump\t// out\n /* \"contracts/WaifInu.sol\":8897:9006 function excludeFromFee(address account) public onlyOwner {... */\n tag_120:\n /* \"@openzeppelin/contracts/access/Ownable.sol\":1094:1107 _checkOwner() */\n tag_297\n /* \"@openzeppelin/contracts/access/Ownable.sol\":1094:1105 _checkOwner */\n tag_219\n /* \"@openzeppelin/contracts/access/Ownable.sol\":1094:1107 _checkOwner() */\n jump\t// in\n tag_297:\n sub(shl(0xa0, 0x01), 0x01)\n /* \"contracts/WaifInu.sol\":8965:8992 _isExcludedFromFee[account] */\n and\n 0x00\n swap1\n dup2\n mstore\n /* \"contracts/WaifInu.sol\":8965:8983 _isExcludedFromFee */\n 0x04\n /* \"contracts/WaifInu.sol\":8965:8992 _isExcludedFromFee[account] */\n 0x20\n mstore\n 0x40\n swap1\n keccak256\n /* \"contracts/WaifInu.sol\":8965:8999 _isExcludedFromFee[account] = true */\n dup1\n sload\n not(0xff)\n and\n /* \"contracts/WaifInu.sol\":8995:8999 true */\n 0x01\n /* \"contracts/WaifInu.sol\":8965:8999 _isExcludedFromFee[account] = true */\n or\n swap1\n sstore\n /* \"contracts/WaifInu.sol\":8897:9006 function excludeFromFee(address account) public onlyOwner {... */\n jump\t// out\n /* \"contracts/WaifInu.sol\":6374:6844 function reflectionFromToken(uint256 tAmount, bool deductTransferFee)... */\n tag_125:\n /* \"contracts/WaifInu.sol\":6489:6496 uint256 */\n 0x00\n /* \"contracts/WaifInu.sol\":6531:6538 _tTotal */\n sload(0x07)\n /* \"contracts/WaifInu.sol\":6520:6527 tAmount */\n dup4\n /* \"contracts/WaifInu.sol\":6520:6538 tAmount <= _tTotal */\n gt\n iszero\n /* \"contracts/WaifInu.sol\":6512:6574 require(tAmount <= _tTotal, \"Amount must be less than supply\") */\n tag_300\n jumpi\n mload(0x40)\n shl(0xe5, 0x461bcd)\n dup2\n mstore\n 0x04\n add\n tag_225\n swap1\n tag_302\n jump\t// in\n tag_300:\n /* \"contracts/WaifInu.sol\":6589:6606 deductTransferFee */\n dup2\n /* \"contracts/WaifInu.sol\":6584:6838 if (!deductTransferFee) {... */\n tag_303\n jumpi\n /* \"contracts/WaifInu.sol\":6623:6638 uint256 rAmount */\n 0x00\n /* \"contracts/WaifInu.sol\":6654:6673 _getValues(tAmount) */\n tag_304\n /* \"contracts/WaifInu.sol\":6665:6672 tAmount */\n dup5\n /* \"contracts/WaifInu.sol\":6654:6664 _getValues */\n tag_291\n /* \"contracts/WaifInu.sol\":6654:6673 _getValues(tAmount) */\n jump\t// in\n tag_304:\n pop\n /* \"contracts/WaifInu.sol\":6622:6673 (uint256 rAmount, , , , , , ) = _getValues(tAmount) */\n swap5\n swap7\n pop\n /* \"contracts/WaifInu.sol\":6687:6701 return rAmount */\n tag_234\n swap6\n pop\n pop\n pop\n pop\n pop\n pop\n jump\n /* \"contracts/WaifInu.sol\":6584:6838 if (!deductTransferFee) {... */\n tag_303:\n /* \"contracts/WaifInu.sol\":6735:6758 uint256 rTransferAmount */\n 0x00\n /* \"contracts/WaifInu.sol\":6772:6791 _getValues(tAmount) */\n tag_306\n /* \"contracts/WaifInu.sol\":6783:6790 tAmount */\n dup5\n /* \"contracts/WaifInu.sol\":6772:6782 _getValues */\n tag_291\n /* \"contracts/WaifInu.sol\":6772:6791 _getValues(tAmount) */\n jump\t// in\n tag_306:\n pop\n /* \"contracts/WaifInu.sol\":6732:6791 (, uint256 rTransferAmount, , , , , ) = _getValues(tAmount) */\n swap4\n swap7\n pop\n /* \"contracts/WaifInu.sol\":6805:6827 return rTransferAmount */\n tag_234\n swap6\n pop\n pop\n pop\n pop\n pop\n pop\n jump\n /* \"contracts/WaifInu.sol\":9642:9916 function setMarketingFeePercent(uint256 marketingFeeBps)... */\n tag_130:\n /* \"@openzeppelin/contracts/access/Ownable.sol\":1094:1107 _checkOwner() */\n tag_308\n /* \"@openzeppelin/contracts/access/Ownable.sol\":1094:1105 _checkOwner */\n tag_219\n /* \"@openzeppelin/contracts/access/Ownable.sol\":1094:1107 _checkOwner() */\n jump\t// in\n tag_308:\n /* \"contracts/WaifInu.sol\":9748:9761 _marketingFee */\n 0x11\n /* \"contracts/WaifInu.sol\":9748:9779 _marketingFee = marketingFeeBps */\n dup2\n swap1\n sstore\n /* \"contracts/WaifInu.sol\":9820:9833 _liquidityFee */\n sload(0x0f)\n /* \"contracts/WaifInu.sol\":9810:9817 _taxFee */\n sload(0x0d)\n /* \"contracts/WaifInu.sol\":9853:9862 10**4 / 4 */\n 0x09c4\n swap2\n /* \"contracts/WaifInu.sol\":9764:9779 marketingFeeBps */\n dup4\n swap2\n /* \"contracts/WaifInu.sol\":9810:9833 _taxFee + _liquidityFee */\n tag_221\n swap2\n /* \"contracts/WaifInu.sol\":9820:9833 _liquidityFee */\n swap1\n /* \"contracts/WaifInu.sol\":9810:9833 _taxFee + _liquidityFee */\n tag_222\n jump\t// in\n /* \"contracts/WaifInu.sol\":1444:1472 address public uniswapV2Pair */\n tag_133:\n and(sub(shl(0xa0, 0x01), 0x01), sload(0x14))\n dup2\n jump\t// out\n /* \"contracts/WaifInu.sol\":1577:1610 bool public swapAndLiquifyEnabled */\n tag_138:\n sload(0x16)\n shl(0xa8, 0x01)\n swap1\n div\n 0xff\n and\n dup2\n jump\t// out\n /* \"contracts/WaifInu.sol\":7167:7605 function excludeFromReward(address account) public onlyOwner {... */\n tag_143:\n /* \"@openzeppelin/contracts/access/Ownable.sol\":1094:1107 _checkOwner() */\n tag_315\n /* \"@openzeppelin/contracts/access/Ownable.sol\":1094:1105 _checkOwner */\n tag_219\n /* \"@openzeppelin/contracts/access/Ownable.sol\":1094:1107 _checkOwner() */\n jump\t// in\n tag_315:\n sub(shl(0xa0, 0x01), 0x01)\n /* \"contracts/WaifInu.sol\":7360:7380 _isExcluded[account] */\n dup2\n and\n 0x00\n swap1\n dup2\n mstore\n /* \"contracts/WaifInu.sol\":7360:7371 _isExcluded */\n 0x05\n /* \"contracts/WaifInu.sol\":7360:7380 _isExcluded[account] */\n 0x20\n mstore\n 0x40\n swap1\n keccak256\n sload\n 0xff\n and\n /* \"contracts/WaifInu.sol\":7359:7380 !_isExcluded[account] */\n iszero\n /* \"contracts/WaifInu.sol\":7351:7412 require(!_isExcluded[account], \"Account is already excluded\") */\n tag_317\n jumpi\n mload(0x40)\n shl(0xe5, 0x461bcd)\n dup2\n mstore\n 0x04\n add\n tag_225\n swap1\n tag_262\n jump\t// in\n tag_317:\n sub(shl(0xa0, 0x01), 0x01)\n /* \"contracts/WaifInu.sol\":7426:7442 _rOwned[account] */\n dup2\n and\n /* \"contracts/WaifInu.sol\":7445:7446 0 */\n 0x00\n /* \"contracts/WaifInu.sol\":7426:7442 _rOwned[account] */\n swap1\n dup2\n mstore\n /* \"contracts/WaifInu.sol\":7426:7433 _rOwned */\n 0x01\n /* \"contracts/WaifInu.sol\":7426:7442 _rOwned[account] */\n 0x20\n mstore\n 0x40\n swap1\n keccak256\n sload\n /* \"contracts/WaifInu.sol\":7426:7446 _rOwned[account] > 0 */\n iszero\n /* \"contracts/WaifInu.sol\":7422:7529 if (_rOwned[account] > 0) {... */\n tag_319\n jumpi\n sub(shl(0xa0, 0x01), 0x01)\n /* \"contracts/WaifInu.sol\":7501:7517 _rOwned[account] */\n dup2\n and\n 0x00\n swap1\n dup2\n mstore\n /* \"contracts/WaifInu.sol\":7501:7508 _rOwned */\n 0x01\n /* \"contracts/WaifInu.sol\":7501:7517 _rOwned[account] */\n 0x20\n mstore\n 0x40\n swap1\n keccak256\n sload\n /* \"contracts/WaifInu.sol\":7481:7518 tokenFromReflection(_rOwned[account]) */\n tag_320\n swap1\n /* \"contracts/WaifInu.sol\":7481:7500 tokenFromReflection */\n tag_92\n /* \"contracts/WaifInu.sol\":7481:7518 tokenFromReflection(_rOwned[account]) */\n jump\t// in\n tag_320:\n sub(shl(0xa0, 0x01), 0x01)\n /* \"contracts/WaifInu.sol\":7462:7478 _tOwned[account] */\n dup3\n and\n 0x00\n swap1\n dup2\n mstore\n /* \"contracts/WaifInu.sol\":7462:7469 _tOwned */\n 0x02\n /* \"contracts/WaifInu.sol\":7462:7478 _tOwned[account] */\n 0x20\n mstore\n 0x40\n swap1\n keccak256\n /* \"contracts/WaifInu.sol\":7462:7518 _tOwned[account] = tokenFromReflection(_rOwned[account]) */\n sstore\n /* \"contracts/WaifInu.sol\":7422:7529 if (_rOwned[account] > 0) {... */\n tag_319:\n sub(shl(0xa0, 0x01), 0x01)\n /* \"contracts/WaifInu.sol\":7538:7558 _isExcluded[account] */\n and\n 0x00\n dup2\n dup2\n mstore\n /* \"contracts/WaifInu.sol\":7538:7549 _isExcluded */\n 0x05\n /* \"contracts/WaifInu.sol\":7538:7558 _isExcluded[account] */\n 0x20\n mstore\n 0x40\n dup2\n keccak256\n /* \"contracts/WaifInu.sol\":7538:7565 _isExcluded[account] = true */\n dup1\n sload\n not(0xff)\n and\n /* \"contracts/WaifInu.sol\":7561:7565 true */\n 0x01\n /* \"contracts/WaifInu.sol\":7538:7565 _isExcluded[account] = true */\n swap1\n dup2\n or\n swap1\n swap2\n sstore\n /* \"contracts/WaifInu.sol\":7575:7584 _excluded */\n 0x06\n /* \"contracts/WaifInu.sol\":7575:7598 _excluded.push(account) */\n dup1\n sload\n swap2\n dup3\n add\n dup2\n sstore\n swap1\n swap2\n mstore\n 0xf652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f\n add\n dup1\n sload\n not(sub(shl(0xa0, 0x01), 0x01))\n and\n swap1\n swap2\n or\n swap1\n sstore\n /* \"contracts/WaifInu.sol\":7167:7605 function excludeFromReward(address account) public onlyOwner {... */\n jump\t// out\n /* \"contracts/WaifInu.sol\":15104:15226 function isExcludedFromFee(address account) public view returns (bool) {... */\n tag_147:\n sub(shl(0xa0, 0x01), 0x01)\n /* \"contracts/WaifInu.sol\":15192:15219 _isExcludedFromFee[account] */\n and\n /* \"contracts/WaifInu.sol\":15169:15173 bool */\n 0x00\n /* \"contracts/WaifInu.sol\":15192:15219 _isExcludedFromFee[account] */\n swap1\n dup2\n mstore\n /* \"contracts/WaifInu.sol\":15192:15210 _isExcludedFromFee */\n 0x04\n /* \"contracts/WaifInu.sol\":15192:15219 _isExcludedFromFee[account] */\n 0x20\n mstore\n 0x40\n swap1\n keccak256\n sload\n 0xff\n and\n swap1\n /* \"contracts/WaifInu.sol\":15104:15226 function isExcludedFromFee(address account) public view returns (bool) {... */\n jump\t// out\n /* \"contracts/WaifInu.sol\":1197:1231 uint256 public _liquidityFee = 200 */\n tag_151:\n sload(0x0f)\n dup2\n jump\t// out\n /* \"contracts/WaifInu.sol\":3844:4039 function balanceOf(address account) public view override returns (uint256) {... */\n tag_156:\n sub(shl(0xa0, 0x01), 0x01)\n /* \"contracts/WaifInu.sol\":3933:3953 _isExcluded[account] */\n dup2\n and\n /* \"contracts/WaifInu.sol\":3910:3917 uint256 */\n 0x00\n /* \"contracts/WaifInu.sol\":3933:3953 _isExcluded[account] */\n swap1\n dup2\n mstore\n /* \"contracts/WaifInu.sol\":3933:3944 _isExcluded */\n 0x05\n /* \"contracts/WaifInu.sol\":3933:3953 _isExcluded[account] */\n 0x20\n mstore\n 0x40\n dup2\n keccak256\n sload\n 0xff\n and\n /* \"contracts/WaifInu.sol\":3929:3978 if (_isExcluded[account]) return _tOwned[account] */\n iszero\n tag_324\n jumpi\n pop\n sub(shl(0xa0, 0x01), 0x01)\n /* \"contracts/WaifInu.sol\":3962:3978 _tOwned[account] */\n dup2\n and\n 0x00\n swap1\n dup2\n mstore\n /* \"contracts/WaifInu.sol\":3962:3969 _tOwned */\n 0x02\n /* \"contracts/WaifInu.sol\":3962:3978 _tOwned[account] */\n 0x20\n mstore\n 0x40\n swap1\n keccak256\n sload\n /* \"contracts/WaifInu.sol\":3955:3978 return _tOwned[account] */\n jump(tag_249)\n /* \"contracts/WaifInu.sol\":3929:3978 if (_isExcluded[account]) return _tOwned[account] */\n tag_324:\n sub(shl(0xa0, 0x01), 0x01)\n /* \"contracts/WaifInu.sol\":4015:4031 _rOwned[account] */\n dup3\n and\n 0x00\n swap1\n dup2\n mstore\n /* \"contracts/WaifInu.sol\":4015:4022 _rOwned */\n 0x01\n /* \"contracts/WaifInu.sol\":4015:4031 _rOwned[account] */\n 0x20\n mstore\n 0x40\n swap1\n keccak256\n sload\n /* \"contracts/WaifInu.sol\":3995:4032 tokenFromReflection(_rOwned[account]) */\n tag_234\n swap1\n /* \"contracts/WaifInu.sol\":3995:4014 tokenFromReflection */\n tag_92\n /* \"contracts/WaifInu.sol\":3995:4032 tokenFromReflection(_rOwned[account]) */\n jump\t// in\n /* \"@openzeppelin/contracts/access/Ownable.sol\":1831:1932 function renounceOwnership() public virtual onlyOwner {... */\n tag_160:\n /* \"@openzeppelin/contracts/access/Ownable.sol\":1094:1107 _checkOwner() */\n tag_327\n /* \"@openzeppelin/contracts/access/Ownable.sol\":1094:1105 _checkOwner */\n tag_219\n /* \"@openzeppelin/contracts/access/Ownable.sol\":1094:1107 _checkOwner() */\n jump\t// in\n tag_327:\n /* \"@openzeppelin/contracts/access/Ownable.sol\":1895:1925 _transferOwnership(address(0)) */\n tag_329\n /* \"@openzeppelin/contracts/access/Ownable.sol\":1922:1923 0 */\n 0x00\n /* \"@openzeppelin/contracts/access/Ownable.sol\":1895:1913 _transferOwnership */\n tag_330\n /* \"@openzeppelin/contracts/access/Ownable.sol\":1895:1925 _transferOwnership(address(0)) */\n jump\t// in\n tag_329:\n /* \"@openzeppelin/contracts/access/Ownable.sol\":1831:1932 function renounceOwnership() public virtual onlyOwner {... */\n jump\t// out\n /* \"contracts/WaifInu.sol\":5742:5860 function isExcludedFromReward(address account) public view returns (bool) {... */\n tag_164:\n sub(shl(0xa0, 0x01), 0x01)\n /* \"contracts/WaifInu.sol\":5833:5853 _isExcluded[account] */\n and\n /* \"contracts/WaifInu.sol\":5810:5814 bool */\n 0x00\n /* \"contracts/WaifInu.sol\":5833:5853 _isExcluded[account] */\n swap1\n dup2\n mstore\n /* \"contracts/WaifInu.sol\":5833:5844 _isExcluded */\n 0x05\n /* \"contracts/WaifInu.sol\":5833:5853 _isExcluded[account] */\n 0x20\n mstore\n 0x40\n swap1\n keccak256\n sload\n 0xff\n and\n swap1\n /* \"contracts/WaifInu.sol\":5742:5860 function isExcludedFromReward(address account) public view returns (bool) {... */\n jump\t// out\n /* \"@openzeppelin/contracts/access/Ownable.sol\":1201:1286 function owner() public view virtual returns (address) {... */\n tag_168:\n /* \"@openzeppelin/contracts/access/Ownable.sol\":1247:1254 address */\n 0x00\n /* \"@openzeppelin/contracts/access/Ownable.sol\":1273:1279 _owner */\n sload\n sub(shl(0xa0, 0x01), 0x01)\n and\n /* \"@openzeppelin/contracts/access/Ownable.sol\":1201:1286 function owner() public view virtual returns (address) {... */\n swap1\n jump\t// out\n /* \"contracts/WaifInu.sol\":9362:9636 function setLiquidityFeePercent(uint256 liquidityFeeBps)... */\n tag_173:\n /* \"@openzeppelin/contracts/access/Ownable.sol\":1094:1107 _checkOwner() */\n tag_334\n /* \"@openzeppelin/contracts/access/Ownable.sol\":1094:1105 _checkOwner */\n tag_219\n /* \"@openzeppelin/contracts/access/Ownable.sol\":1094:1107 _checkOwner() */\n jump\t// in\n tag_334:\n /* \"contracts/WaifInu.sol\":9468:9481 _liquidityFee */\n 0x0f\n /* \"contracts/WaifInu.sol\":9468:9499 _liquidityFee = liquidityFeeBps */\n dup2\n swap1\n sstore\n /* \"contracts/WaifInu.sol\":9556:9569 _marketingFee */\n sload(0x11)\n /* \"contracts/WaifInu.sol\":9530:9537 _taxFee */\n sload(0x0d)\n /* \"contracts/WaifInu.sol\":9573:9582 10**4 / 4 */\n 0x09c4\n swap2\n /* \"contracts/WaifInu.sol\":9556:9569 _marketingFee */\n swap1\n /* \"contracts/WaifInu.sol\":9530:9553 _taxFee + _liquidityFee */\n tag_221\n swap1\n /* \"contracts/WaifInu.sol\":9484:9499 liquidityFeeBps */\n dup5\n swap1\n /* \"contracts/WaifInu.sol\":9530:9553 _taxFee + _liquidityFee */\n tag_222\n jump\t// in\n /* \"contracts/WaifInu.sol\":3567:3652 function symbol() public view returns (string memory) {... */\n tag_176:\n /* \"contracts/WaifInu.sol\":3606:3619 string memory */\n 0x60\n /* \"contracts/WaifInu.sol\":3638:3645 _symbol */\n 0x0b\n /* \"contracts/WaifInu.sol\":3631:3645 return _symbol */\n dup1\n sload\n tag_228\n swap1\n tag_229\n jump\t// in\n /* \"contracts/WaifInu.sol\":5350:5736 function decreaseAllowance(address spender, uint256 subtractedValue)... */\n tag_181:\n /* \"contracts/WaifInu.sol\":5467:5471 bool */\n 0x00\n /* \"contracts/WaifInu.sol\":5487:5708 _approve(... */\n tag_235\n /* \"contracts/WaifInu.sol\":5509:5521 _msgSender() */\n tag_348\n /* \"contracts/WaifInu.sol\":5509:5519 _msgSender */\n tag_237\n /* \"contracts/WaifInu.sol\":5509:5521 _msgSender() */\n jump\t// in\n tag_348:\n /* \"contracts/WaifInu.sol\":5535:5542 spender */\n dup5\n /* \"contracts/WaifInu.sol\":5556:5698 _allowances[_msgSender()][spender].sub(... */\n tag_246\n /* \"contracts/WaifInu.sol\":5612:5627 subtractedValue */\n dup6\n /* \"contracts/WaifInu.sol\":5556:5698 _allowances[_msgSender()][spender].sub(... */\n mload(0x40)\n dup1\n 0x60\n add\n 0x40\n mstore\n dup1\n 0x25\n dup2\n mstore\n 0x20\n add\n data_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8\n 0x25\n swap2\n codecopy\n /* \"contracts/WaifInu.sol\":5556:5567 _allowances */\n 0x03\n /* \"contracts/WaifInu.sol\":5556:5581 _allowances[_msgSender()] */\n 0x00\n /* \"contracts/WaifInu.sol\":5568:5580 _msgSender() */\n tag_350\n /* \"contracts/WaifInu.sol\":5568:5578 _msgSender */\n tag_237\n /* \"contracts/WaifInu.sol\":5568:5580 _msgSender() */\n jump\t// in\n tag_350:\n sub(shl(0xa0, 0x01), 0x01)\n /* \"contracts/WaifInu.sol\":5556:5581 _allowances[_msgSender()] */\n swap1\n dup2\n and\n dup3\n mstore\n 0x20\n dup1\n dup4\n add\n swap4\n swap1\n swap4\n mstore\n 0x40\n swap2\n dup3\n add\n 0x00\n swap1\n dup2\n keccak256\n /* \"contracts/WaifInu.sol\":5556:5590 _allowances[_msgSender()][spender] */\n swap2\n dup14\n and\n dup2\n mstore\n swap3\n mstore\n swap1\n keccak256\n sload\n swap2\n /* \"contracts/WaifInu.sol\":5556:5698 _allowances[_msgSender()][spender].sub(... */\n swap1\n /* \"contracts/WaifInu.sol\":5556:5594 _allowances[_msgSender()][spender].sub */\n tag_248\n /* \"contracts/WaifInu.sol\":5556:5698 _allowances[_msgSender()][spender].sub(... */\n jump\t// in\n /* \"contracts/WaifInu.sol\":4045:4237 function transfer(address recipient, uint256 amount)... */\n tag_186:\n /* \"contracts/WaifInu.sol\":4147:4151 bool */\n 0x00\n /* \"contracts/WaifInu.sol\":4167:4209 _transfer(_msgSender(), recipient, amount) */\n tag_235\n /* \"contracts/WaifInu.sol\":4177:4189 _msgSender() */\n tag_353\n /* \"contracts/WaifInu.sol\":4177:4187 _msgSender */\n tag_237\n /* \"contracts/WaifInu.sol\":4177:4189 _msgSender() */\n jump\t// in\n tag_353:\n /* \"contracts/WaifInu.sol\":4191:4200 recipient */\n dup5\n /* \"contracts/WaifInu.sol\":4202:4208 amount */\n dup5\n /* \"contracts/WaifInu.sol\":4167:4176 _transfer */\n tag_243\n /* \"contracts/WaifInu.sol\":4167:4209 _transfer(_msgSender(), recipient, amount) */\n jump\t// in\n /* \"contracts/WaifInu.sol\":9922:10090 function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner {... */\n tag_192:\n /* \"@openzeppelin/contracts/access/Ownable.sol\":1094:1107 _checkOwner() */\n tag_355\n /* \"@openzeppelin/contracts/access/Ownable.sol\":1094:1105 _checkOwner */\n tag_219\n /* \"@openzeppelin/contracts/access/Ownable.sol\":1094:1107 _checkOwner() */\n jump\t// in\n tag_355:\n /* \"contracts/WaifInu.sol\":9998:10019 swapAndLiquifyEnabled */\n 0x16\n /* \"contracts/WaifInu.sol\":9998:10030 swapAndLiquifyEnabled = _enabled */\n dup1\n sload\n not(shl(0xa8, 0xff))\n and\n shl(0xa8, 0x01)\n dup4\n iszero\n iszero\n mul\n or\n swap1\n sstore\n /* \"contracts/WaifInu.sol\":10045:10083 SwapAndLiquifyEnabledUpdated(_enabled) */\n mload(0x40)\n 0x53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159\n swap1\n tag_357\n swap1\n /* \"contracts/WaifInu.sol\":9998:10030 swapAndLiquifyEnabled = _enabled */\n dup4\n swap1\n /* \"contracts/WaifInu.sol\":10045:10083 SwapAndLiquifyEnabledUpdated(_enabled) */\n tag_64\n jump\t// in\n tag_357:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n log1\n /* \"contracts/WaifInu.sol\":9922:10090 function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner {... */\n pop\n jump\t// out\n /* \"contracts/WaifInu.sol\":1478:1510 address public _marketingAddress */\n tag_195:\n and(sub(shl(0xa0, 0x01), 0x01), sload(0x15))\n dup2\n jump\t// out\n /* \"contracts/WaifInu.sol\":4243:4420 function allowance(address owner, address spender)... */\n tag_201:\n sub(shl(0xa0, 0x01), 0x01)\n /* \"contracts/WaifInu.sol\":4386:4404 _allowances[owner] */\n swap2\n dup3\n and\n /* \"contracts/WaifInu.sol\":4356:4363 uint256 */\n 0x00\n /* \"contracts/WaifInu.sol\":4386:4404 _allowances[owner] */\n swap1\n dup2\n mstore\n /* \"contracts/WaifInu.sol\":4386:4397 _allowances */\n 0x03\n /* \"contracts/WaifInu.sol\":4386:4404 _allowances[owner] */\n 0x20\n swap1\n dup2\n mstore\n 0x40\n dup1\n dup4\n keccak256\n /* \"contracts/WaifInu.sol\":4386:4413 _allowances[owner][spender] */\n swap4\n swap1\n swap5\n and\n dup3\n mstore\n swap2\n swap1\n swap2\n mstore\n keccak256\n sload\n swap1\n /* \"contracts/WaifInu.sol\":4243:4420 function allowance(address owner, address spender)... */\n jump\t// out\n /* \"contracts/WaifInu.sol\":9012:9120 function includeInFee(address account) public onlyOwner {... */\n tag_206:\n /* \"@openzeppelin/contracts/access/Ownable.sol\":1094:1107 _checkOwner() */\n tag_360\n /* \"@openzeppelin/contracts/access/Ownable.sol\":1094:1105 _checkOwner */\n tag_219\n /* \"@openzeppelin/contracts/access/Ownable.sol\":1094:1107 _checkOwner() */\n jump\t// in\n tag_360:\n sub(shl(0xa0, 0x01), 0x01)\n /* \"contracts/WaifInu.sol\":9078:9105 _isExcludedFromFee[account] */\n and\n /* \"contracts/WaifInu.sol\":9108:9113 false */\n 0x00\n /* \"contracts/WaifInu.sol\":9078:9105 _isExcludedFromFee[account] */\n swap1\n dup2\n mstore\n /* \"contracts/WaifInu.sol\":9078:9096 _isExcludedFromFee */\n 0x04\n /* \"contracts/WaifInu.sol\":9078:9105 _isExcludedFromFee[account] */\n 0x20\n mstore\n 0x40\n swap1\n keccak256\n /* \"contracts/WaifInu.sol\":9078:9113 _isExcludedFromFee[account] = false */\n dup1\n sload\n not(0xff)\n and\n swap1\n sstore\n /* \"contracts/WaifInu.sol\":9012:9120 function includeInFee(address account) public onlyOwner {... */\n jump\t// out\n /* \"@openzeppelin/contracts/access/Ownable.sol\":2081:2279 function transferOwnership(address newOwner) public virtual onlyOwner {... */\n tag_210:\n /* \"@openzeppelin/contracts/access/Ownable.sol\":1094:1107 _checkOwner() */\n tag_363\n /* \"@openzeppelin/contracts/access/Ownable.sol\":1094:1105 _checkOwner */\n tag_219\n /* \"@openzeppelin/contracts/access/Ownable.sol\":1094:1107 _checkOwner() */\n jump\t// in\n tag_363:\n sub(shl(0xa0, 0x01), 0x01)\n /* \"@openzeppelin/contracts/access/Ownable.sol\":2169:2191 newOwner != address(0) */\n dup2\n and\n /* \"@openzeppelin/contracts/access/Ownable.sol\":2161:2234 require(newOwner != address(0), \"Ownable: new owner is the zero address\") */\n tag_365\n jumpi\n mload(0x40)\n shl(0xe5, 0x461bcd)\n dup2\n mstore\n 0x04\n add\n tag_225\n swap1\n tag_367\n jump\t// in\n tag_365:\n /* \"@openzeppelin/contracts/access/Ownable.sol\":2244:2272 _transferOwnership(newOwner) */\n tag_224\n /* \"@openzeppelin/contracts/access/Ownable.sol\":2263:2271 newOwner */\n dup2\n /* \"@openzeppelin/contracts/access/Ownable.sol\":2244:2262 _transferOwnership */\n tag_330\n /* \"@openzeppelin/contracts/access/Ownable.sol\":2244:2272 _transferOwnership(newOwner) */\n jump\t// in\n /* \"contracts/WaifInu.sol\":516:551 uint256 public constant VERSION = 1 */\n tag_213:\n /* \"contracts/WaifInu.sol\":550:551 1 */\n 0x01\n /* \"contracts/WaifInu.sol\":516:551 uint256 public constant VERSION = 1 */\n dup2\n jump\t// out\n /* \"@openzeppelin/contracts/utils/math/SafeMath.sol\":3465:3561 function mul(uint256 a, uint256 b) internal pure returns (uint256) {... */\n tag_215:\n /* \"@openzeppelin/contracts/utils/math/SafeMath.sol\":3523:3530 uint256 */\n 0x00\n /* \"@openzeppelin/contracts/utils/math/SafeMath.sol\":3549:3554 a * b */\n tag_370\n /* \"@openzeppelin/contracts/utils/math/SafeMath.sol\":3553:3554 b */\n dup3\n /* \"@openzeppelin/contracts/utils/math/SafeMath.sol\":3549:3550 a */\n dup5\n /* \"@openzeppelin/contracts/utils/math/SafeMath.sol\":3549:3554 a * b */\n tag_371\n jump\t// in\n tag_370:\n /* \"@openzeppelin/contracts/utils/math/SafeMath.sol\":3542:3554 return a * b */\n swap4\n /* \"@openzeppelin/contracts/utils/math/SafeMath.sol\":3465:3561 function mul(uint256 a, uint256 b) internal pure returns (uint256) {... */\n swap3\n pop\n pop\n pop\n jump\t// out\n /* \"@openzeppelin/contracts/utils/math/SafeMath.sol\":3850:3946 function div(uint256 a, uint256 b) internal pure returns (uint256) {... */\n tag_216:\n /* \"@openzeppelin/contracts/utils/math/SafeMath.sol\":3908:3915 uint256 */\n 0x00\n /* \"@openzeppelin/contracts/utils/math/SafeMath.sol\":3934:3939 a / b */\n tag_370\n /* \"@openzeppelin/contracts/utils/math/SafeMath.sol\":3938:3939 b */\n dup3\n /* \"@openzeppelin/contracts/utils/math/SafeMath.sol\":3934:3935 a */\n dup5\n /* \"@openzeppelin/contracts/utils/math/SafeMath.sol\":3934:3939 a / b */\n tag_374\n jump\t// in\n /* \"@openzeppelin/contracts/access/Ownable.sol\":1359:1489 function _checkOwner() internal view virtual {... */\n tag_219:\n /* \"@openzeppelin/contracts/access/Ownable.sol\":1433:1445 _msgSender() */\n tag_376\n /* \"@openzeppelin/contracts/access/Ownable.sol\":1433:1443 _msgSender */\n tag_237\n /* \"@openzeppelin/contracts/access/Ownable.sol\":1433:1445 _msgSender() */\n jump\t// in\n tag_376:\n sub(shl(0xa0, 0x01), 0x01)\n /* \"@openzeppelin/contracts/access/Ownable.sol\":1422:1445 owner() == _msgSender() */\n and\n /* \"@openzeppelin/contracts/access/Ownable.sol\":1422:1429 owner() */\n tag_377\n /* \"@openzeppelin/contracts/access/Ownable.sol\":1422:1427 owner */\n tag_168\n /* \"@openzeppelin/contracts/access/Ownable.sol\":1422:1429 owner() */\n jump\t// in\n tag_377:\n sub(shl(0xa0, 0x01), 0x01)\n /* \"@openzeppelin/contracts/access/Ownable.sol\":1422:1445 owner() == _msgSender() */\n and\n eq\n /* \"@openzeppelin/contracts/access/Ownable.sol\":1414:1482 require(owner() == _msgSender(), \"Ownable: caller is not the owner\") */\n tag_329\n jumpi\n mload(0x40)\n shl(0xe5, 0x461bcd)\n dup2\n mstore\n 0x04\n add\n tag_225\n swap1\n tag_380\n jump\t// in\n /* \"@openzeppelin/contracts/utils/Context.sol\":640:736 function _msgSender() internal view virtual returns (address) {... */\n tag_237:\n /* \"@openzeppelin/contracts/utils/Context.sol\":719:729 msg.sender */\n caller\n /* \"@openzeppelin/contracts/utils/Context.sol\":640:736 function _msgSender() internal view virtual returns (address) {... */\n swap1\n jump\t// out\n /* \"contracts/WaifInu.sol\":15232:15593 function _approve(... */\n tag_238:\n sub(shl(0xa0, 0x01), 0x01)\n /* \"contracts/WaifInu.sol\":15354:15373 owner != address(0) */\n dup4\n and\n /* \"contracts/WaifInu.sol\":15346:15414 require(owner != address(0), \"ERC20: approve from the zero address\") */\n tag_383\n jumpi\n mload(0x40)\n shl(0xe5, 0x461bcd)\n dup2\n mstore\n 0x04\n add\n tag_225\n swap1\n tag_385\n jump\t// in\n tag_383:\n sub(shl(0xa0, 0x01), 0x01)\n /* \"contracts/WaifInu.sol\":15432:15453 spender != address(0) */\n dup3\n and\n /* \"contracts/WaifInu.sol\":15424:15492 require(spender != address(0), \"ERC20: approve to the zero address\") */\n tag_386\n jumpi\n mload(0x40)\n shl(0xe5, 0x461bcd)\n dup2\n mstore\n 0x04\n add\n tag_225\n swap1\n tag_388\n jump\t// in\n tag_386:\n sub(shl(0xa0, 0x01), 0x01)\n /* \"contracts/WaifInu.sol\":15503:15521 _allowances[owner] */\n dup1\n dup5\n and\n 0x00\n dup2\n dup2\n mstore\n /* \"contracts/WaifInu.sol\":15503:15514 _allowances */\n 0x03\n /* \"contracts/WaifInu.sol\":15503:15521 _allowances[owner] */\n 0x20\n swap1\n dup2\n mstore\n 0x40\n dup1\n dup4\n keccak256\n /* \"contracts/WaifInu.sol\":15503:15530 _allowances[owner][spender] */\n swap5\n dup8\n and\n dup1\n dup5\n mstore\n swap5\n swap1\n swap2\n mstore\n swap1\n dup2\n swap1\n keccak256\n /* \"contracts/WaifInu.sol\":15503:15539 _allowances[owner][spender] = amount */\n dup5\n swap1\n sstore\n /* \"contracts/WaifInu.sol\":15554:15586 Approval(owner, spender, amount) */\n mload\n 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925\n swap1\n tag_389\n swap1\n /* \"contracts/WaifInu.sol\":15533:15539 amount */\n dup6\n swap1\n /* \"contracts/WaifInu.sol\":15554:15586 Approval(owner, spender, amount) */\n tag_69\n jump\t// in\n tag_389:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n log3\n /* \"contracts/WaifInu.sol\":15232:15593 function _approve(... */\n pop\n pop\n pop\n jump\t// out\n /* \"contracts/WaifInu.sol\":15599:17121 function _transfer(... */\n tag_243:\n sub(shl(0xa0, 0x01), 0x01)\n /* \"contracts/WaifInu.sol\":15716:15734 from != address(0) */\n dup4\n and\n /* \"contracts/WaifInu.sol\":15708:15776 require(from != address(0), \"ERC20: transfer from the zero address\") */\n tag_391\n jumpi\n mload(0x40)\n shl(0xe5, 0x461bcd)\n dup2\n mstore\n 0x04\n add\n tag_225\n swap1\n tag_393\n jump\t// in\n tag_391:\n sub(shl(0xa0, 0x01), 0x01)\n /* \"contracts/WaifInu.sol\":15794:15810 to != address(0) */\n dup3\n and\n /* \"contracts/WaifInu.sol\":15786:15850 require(to != address(0), \"ERC20: transfer to the zero address\") */\n tag_394\n jumpi\n mload(0x40)\n shl(0xe5, 0x461bcd)\n dup2\n mstore\n 0x04\n add\n tag_225\n swap1\n tag_396\n jump\t// in\n tag_394:\n /* \"contracts/WaifInu.sol\":15877:15878 0 */\n 0x00\n /* \"contracts/WaifInu.sol\":15868:15874 amount */\n dup2\n /* \"contracts/WaifInu.sol\":15868:15878 amount > 0 */\n gt\n /* \"contracts/WaifInu.sol\":15860:15924 require(amount > 0, \"Transfer amount must be greater than zero\") */\n tag_397\n jumpi\n mload(0x40)\n shl(0xe5, 0x461bcd)\n dup2\n mstore\n 0x04\n add\n tag_225\n swap1\n tag_399\n jump\t// in\n tag_397:\n /* \"contracts/WaifInu.sol\":16213:16241 uint256 contractTokenBalance */\n 0x00\n /* \"contracts/WaifInu.sol\":16244:16268 balanceOf(address(this)) */\n tag_400\n /* \"contracts/WaifInu.sol\":16262:16266 this */\n address\n /* \"contracts/WaifInu.sol\":16244:16253 balanceOf */\n tag_156\n /* \"contracts/WaifInu.sol\":16244:16268 balanceOf(address(this)) */\n jump\t// in\n tag_400:\n /* \"contracts/WaifInu.sol\":16342:16371 numTokensSellToAddToLiquidity */\n sload(0x17)\n /* \"contracts/WaifInu.sol\":16213:16268 uint256 contractTokenBalance = balanceOf(address(this)) */\n swap1\n swap2\n pop\n /* \"contracts/WaifInu.sol\":16306:16371 contractTokenBalance >=... */\n dup2\n lt\n dup1\n iszero\n swap1\n dup2\n swap1\n /* \"contracts/WaifInu.sol\":16398:16450 overMinTokenBalance &&... */\n tag_401\n jumpi\n pop\n /* \"contracts/WaifInu.sol\":16434:16450 inSwapAndLiquify */\n sload(0x16)\n shl(0xa0, 0x01)\n swap1\n div\n 0xff\n and\n /* \"contracts/WaifInu.sol\":16433:16450 !inSwapAndLiquify */\n iszero\n /* \"contracts/WaifInu.sol\":16398:16450 overMinTokenBalance &&... */\n tag_401:\n /* \"contracts/WaifInu.sol\":16398:16487 overMinTokenBalance &&... */\n dup1\n iszero\n tag_402\n jumpi\n pop\n /* \"contracts/WaifInu.sol\":16474:16487 uniswapV2Pair */\n sload(0x14)\n sub(shl(0xa0, 0x01), 0x01)\n /* \"contracts/WaifInu.sol\":16466:16487 from != uniswapV2Pair */\n dup7\n dup2\n and\n /* \"contracts/WaifInu.sol\":16474:16487 uniswapV2Pair */\n swap2\n and\n /* \"contracts/WaifInu.sol\":16466:16487 from != uniswapV2Pair */\n eq\n iszero\n /* \"contracts/WaifInu.sol\":16398:16487 overMinTokenBalance &&... */\n tag_402:\n /* \"contracts/WaifInu.sol\":16398:16524 overMinTokenBalance &&... */\n dup1\n iszero\n tag_403\n jumpi\n pop\n /* \"contracts/WaifInu.sol\":16503:16524 swapAndLiquifyEnabled */\n sload(0x16)\n shl(0xa8, 0x01)\n swap1\n div\n 0xff\n and\n /* \"contracts/WaifInu.sol\":16398:16524 overMinTokenBalance &&... */\n tag_403:\n /* \"contracts/WaifInu.sol\":16381:16690 if (... */\n iszero\n tag_405\n jumpi\n /* \"contracts/WaifInu.sol\":16572:16601 numTokensSellToAddToLiquidity */\n sload(0x17)\n /* \"contracts/WaifInu.sol\":16549:16601 contractTokenBalance = numTokensSellToAddToLiquidity */\n swap2\n pop\n /* \"contracts/WaifInu.sol\":16643:16679 swapAndLiquify(contractTokenBalance) */\n tag_405\n /* \"contracts/WaifInu.sol\":16658:16678 contractTokenBalance */\n dup3\n /* \"contracts/WaifInu.sol\":16643:16657 swapAndLiquify */\n tag_406\n /* \"contracts/WaifInu.sol\":16643:16679 swapAndLiquify(contractTokenBalance) */\n jump\t// in\n tag_405:\n /* \"contracts/WaifInu.sol\":16699:16718 _sendETHFee(amount) */\n tag_407\n /* \"contracts/WaifInu.sol\":16711:16717 amount */\n dup4\n /* \"contracts/WaifInu.sol\":16699:16710 _sendETHFee */\n tag_408\n /* \"contracts/WaifInu.sol\":16699:16718 _sendETHFee(amount) */\n jump\t// in\n tag_407:\n sub(shl(0xa0, 0x01), 0x01)\n /* \"contracts/WaifInu.sol\":16906:16930 _isExcludedFromFee[from] */\n dup6\n and\n /* \"contracts/WaifInu.sol\":16789:16801 bool takeFee */\n 0x00\n /* \"contracts/WaifInu.sol\":16906:16930 _isExcludedFromFee[from] */\n swap1\n dup2\n mstore\n /* \"contracts/WaifInu.sol\":16906:16924 _isExcludedFromFee */\n 0x04\n /* \"contracts/WaifInu.sol\":16906:16930 _isExcludedFromFee[from] */\n 0x20\n mstore\n 0x40\n swap1\n keccak256\n sload\n /* \"contracts/WaifInu.sol\":16804:16808 true */\n 0x01\n swap1\n /* \"contracts/WaifInu.sol\":16906:16930 _isExcludedFromFee[from] */\n 0xff\n and\n dup1\n /* \"contracts/WaifInu.sol\":16906:16956 _isExcludedFromFee[from] || _isExcludedFromFee[to] */\n tag_409\n jumpi\n pop\n sub(shl(0xa0, 0x01), 0x01)\n /* \"contracts/WaifInu.sol\":16934:16956 _isExcludedFromFee[to] */\n dup6\n and\n 0x00\n swap1\n dup2\n mstore\n /* \"contracts/WaifInu.sol\":16934:16952 _isExcludedFromFee */\n 0x04\n /* \"contracts/WaifInu.sol\":16934:16956 _isExcludedFromFee[to] */\n 0x20\n mstore\n 0x40\n swap1\n keccak256\n sload\n 0xff\n and\n /* \"contracts/WaifInu.sol\":16906:16956 _isExcludedFromFee[from] || _isExcludedFromFee[to] */\n tag_409:\n /* \"contracts/WaifInu.sol\":16902:16998 if (_isExcludedFromFee[from] || _isExcludedFromFee[to]) {... */\n iszero\n tag_410\n jumpi\n pop\n /* \"contracts/WaifInu.sol\":16982:16987 false */\n 0x00\n /* \"contracts/WaifInu.sol\":16902:16998 if (_isExcludedFromFee[from] || _isExcludedFromFee[to]) {... */\n tag_410:\n /* \"contracts/WaifInu.sol\":17073:17114 _tokenTransfer(from, to, amount, takeFee) */\n tag_411\n /* \"contracts/WaifInu.sol\":17088:17092 from */\n dup7\n /* \"contracts/WaifInu.sol\":17094:17096 to */\n dup7\n /* \"contracts/WaifInu.sol\":17098:17104 amount */\n dup7\n /* \"contracts/WaifInu.sol\":17106:17113 takeFee */\n dup5\n /* \"contracts/WaifInu.sol\":17073:17087 _tokenTransfer */\n tag_412\n /* \"contracts/WaifInu.sol\":17073:17114 _tokenTransfer(from, to, amount, takeFee) */\n jump\t// in\n tag_411:\n /* \"contracts/WaifInu.sol\":15599:17121 function _transfer(... */\n pop\n pop\n pop\n pop\n pop\n pop\n jump\t// out\n /* \"@openzeppelin/contracts/utils/math/SafeMath.sol\":4959:5190 function sub(... */\n tag_248:\n /* \"@openzeppelin/contracts/utils/math/SafeMath.sol\":5075:5082 uint256 */\n 0x00\n /* \"@openzeppelin/contracts/utils/math/SafeMath.sol\":5134:5146 errorMessage */\n dup2\n /* \"@openzeppelin/contracts/utils/math/SafeMath.sol\":5126:5132 b <= a */\n dup5\n dup5\n gt\n iszero\n /* \"@openzeppelin/contracts/utils/math/SafeMath.sol\":5118:5147 require(b <= a, errorMessage) */\n tag_414\n jumpi\n mload(0x40)\n shl(0xe5, 0x461bcd)\n dup2\n mstore\n 0x04\n add\n tag_225\n swap2\n swap1\n tag_57\n jump\t// in\n tag_414:\n pop\n pop\n pop\n /* \"@openzeppelin/contracts/utils/math/SafeMath.sol\":5168:5173 a - b */\n swap1\n sub\n swap1\n /* \"@openzeppelin/contracts/utils/math/SafeMath.sol\":4959:5190 function sub(... */\n jump\t// out\n /* \"contracts/WaifInu.sol\":12365:12526 function _getRate() private view returns (uint256) {... */\n tag_254:\n /* \"contracts/WaifInu.sol\":12407:12414 uint256 */\n 0x00\n /* \"contracts/WaifInu.sol\":12427:12442 uint256 rSupply */\n dup1\n /* \"contracts/WaifInu.sol\":12444:12459 uint256 tSupply */\n 0x00\n /* \"contracts/WaifInu.sol\":12463:12482 _getCurrentSupply() */\n tag_417\n /* \"contracts/WaifInu.sol\":12463:12480 _getCurrentSupply */\n tag_418\n /* \"contracts/WaifInu.sol\":12463:12482 _getCurrentSupply() */\n jump\t// in\n tag_417:\n /* \"contracts/WaifInu.sol\":12426:12482 (uint256 rSupply, uint256 tSupply) = _getCurrentSupply() */\n swap1\n swap3\n pop\n swap1\n pop\n /* \"contracts/WaifInu.sol\":12499:12519 rSupply.div(tSupply) */\n tag_419\n /* \"contracts/WaifInu.sol\":12426:12482 (uint256 rSupply, uint256 tSupply) = _getCurrentSupply() */\n dup3\n dup3\n /* \"contracts/WaifInu.sol\":12499:12510 rSupply.div */\n tag_216\n /* \"contracts/WaifInu.sol\":12499:12519 rSupply.div(tSupply) */\n jump\t// in\n tag_419:\n /* \"contracts/WaifInu.sol\":12492:12519 return rSupply.div(tSupply) */\n swap3\n pop\n pop\n pop\n /* \"contracts/WaifInu.sol\":12365:12526 function _getRate() private view returns (uint256) {... */\n swap1\n jump\t// out\n /* \"@openzeppelin/contracts/utils/math/SafeMath.sol\":2755:2851 function add(uint256 a, uint256 b) internal pure returns (uint256) {... */\n tag_284:\n /* \"@openzeppelin/contracts/utils/math/SafeMath.sol\":2813:2820 uint256 */\n 0x00\n /* \"@openzeppelin/contracts/utils/math/SafeMath.sol\":2839:2844 a + b */\n tag_370\n /* \"@openzeppelin/contracts/utils/math/SafeMath.sol\":2843:2844 b */\n dup3\n /* \"@openzeppelin/contracts/utils/math/SafeMath.sol\":2839:2840 a */\n dup5\n /* \"@openzeppelin/contracts/utils/math/SafeMath.sol\":2839:2844 a + b */\n tag_222\n jump\t// in\n /* \"contracts/WaifInu.sol\":10336:11148 function _getValues(uint256 tAmount)... */\n tag_291:\n /* \"contracts/WaifInu.sol\":10432:10439 uint256 */\n 0x00\n /* \"contracts/WaifInu.sol\":10453:10460 uint256 */\n dup1\n /* \"contracts/WaifInu.sol\":10474:10481 uint256 */\n 0x00\n /* \"contracts/WaifInu.sol\":10495:10502 uint256 */\n dup1\n /* \"contracts/WaifInu.sol\":10516:10523 uint256 */\n 0x00\n /* \"contracts/WaifInu.sol\":10537:10544 uint256 */\n dup1\n /* \"contracts/WaifInu.sol\":10558:10565 uint256 */\n 0x00\n /* \"contracts/WaifInu.sol\":10604:10627 uint256 tTransferAmount */\n dup1\n /* \"contracts/WaifInu.sol\":10641:10653 uint256 tFee */\n 0x00\n /* \"contracts/WaifInu.sol\":10667:10685 uint256 tLiquidity */\n dup1\n /* \"contracts/WaifInu.sol\":10699:10717 uint256 tMarketing */\n 0x00\n /* \"contracts/WaifInu.sol\":10730:10750 _getTValues(tAmount) */\n tag_423\n /* \"contracts/WaifInu.sol\":10742:10749 tAmount */\n dup13\n /* \"contracts/WaifInu.sol\":10730:10741 _getTValues */\n tag_424\n /* \"contracts/WaifInu.sol\":10730:10750 _getTValues(tAmount) */\n jump\t// in\n tag_423:\n /* \"contracts/WaifInu.sol\":10590:10750 (... */\n swap4\n pop\n swap4\n pop\n swap4\n pop\n swap4\n pop\n /* \"contracts/WaifInu.sol\":10761:10776 uint256 rAmount */\n 0x00\n /* \"contracts/WaifInu.sol\":10778:10801 uint256 rTransferAmount */\n dup1\n /* \"contracts/WaifInu.sol\":10803:10815 uint256 rFee */\n 0x00\n /* \"contracts/WaifInu.sol\":10819:10951 _getRValues(... */\n tag_425\n /* \"contracts/WaifInu.sol\":10844:10851 tAmount */\n dup16\n /* \"contracts/WaifInu.sol\":10865:10869 tFee */\n dup8\n /* \"contracts/WaifInu.sol\":10883:10893 tLiquidity */\n dup8\n /* \"contracts/WaifInu.sol\":10907:10917 tMarketing */\n dup8\n /* \"contracts/WaifInu.sol\":10931:10941 _getRate() */\n tag_426\n /* \"contracts/WaifInu.sol\":10931:10939 _getRate */\n tag_254\n /* \"contracts/WaifInu.sol\":10931:10941 _getRate() */\n jump\t// in\n tag_426:\n /* \"contracts/WaifInu.sol\":10819:10830 _getRValues */\n tag_427\n /* \"contracts/WaifInu.sol\":10819:10951 _getRValues(... */\n jump\t// in\n tag_425:\n /* \"contracts/WaifInu.sol\":10760:10951 (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(... */\n swap2\n swap16\n pop\n swap14\n pop\n swap12\n pop\n /* \"contracts/WaifInu.sol\":11050:11065 tTransferAmount */\n swap6\n swap10\n pop\n /* \"contracts/WaifInu.sol\":11079:11083 tFee */\n swap4\n swap8\n pop\n /* \"contracts/WaifInu.sol\":11097:11107 tLiquidity */\n swap2\n swap6\n pop\n /* \"contracts/WaifInu.sol\":11121:11131 tMarketing */\n swap4\n pop\n pop\n pop\n pop\n /* \"contracts/WaifInu.sol\":10336:11148 function _getValues(uint256 tAmount)... */\n swap2\n swap4\n swap6\n swap8\n swap1\n swap3\n swap5\n swap7\n pop\n jump\t// out\n /* \"@openzeppelin/contracts/utils/math/SafeMath.sol\":3122:3218 function sub(uint256 a, uint256 b) internal pure returns (uint256) {... */\n tag_293:\n /* \"@openzeppelin/contracts/utils/math/SafeMath.sol\":3180:3187 uint256 */\n 0x00\n /* \"@openzeppelin/contracts/utils/math/SafeMath.sol\":3206:3211 a - b */\n tag_370\n /* \"@openzeppelin/contracts/utils/math/SafeMath.sol\":3210:3211 b */\n dup3\n /* \"@openzeppelin/contracts/utils/math/SafeMath.sol\":3206:3207 a */\n dup5\n /* \"@openzeppelin/contracts/utils/math/SafeMath.sol\":3206:3211 a - b */\n tag_270\n jump\t// in\n /* \"@openzeppelin/contracts/access/Ownable.sol\":2433:2620 function _transferOwnership(address newOwner) internal virtual {... */\n tag_330:\n /* \"@openzeppelin/contracts/access/Ownable.sol\":2506:2522 address oldOwner */\n 0x00\n /* \"@openzeppelin/contracts/access/Ownable.sol\":2525:2531 _owner */\n dup1\n sload\n sub(shl(0xa0, 0x01), 0x01)\n /* \"@openzeppelin/contracts/access/Ownable.sol\":2541:2558 _owner = newOwner */\n dup4\n dup2\n and\n not(sub(shl(0xa0, 0x01), 0x01))\n dup4\n and\n dup2\n or\n dup5\n sstore\n /* \"@openzeppelin/contracts/access/Ownable.sol\":2573:2613 OwnershipTransferred(oldOwner, newOwner) */\n mload(0x40)\n /* \"@openzeppelin/contracts/access/Ownable.sol\":2525:2531 _owner */\n swap2\n swap1\n swap3\n and\n swap3\n dup4\n swap2\n /* \"@openzeppelin/contracts/access/Ownable.sol\":2573:2613 OwnershipTransferred(oldOwner, newOwner) */\n 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0\n swap2\n /* \"@openzeppelin/contracts/access/Ownable.sol\":2506:2522 address oldOwner */\n swap1\n /* \"@openzeppelin/contracts/access/Ownable.sol\":2573:2613 OwnershipTransferred(oldOwner, newOwner) */\n log3\n /* \"@openzeppelin/contracts/access/Ownable.sol\":2433:2620 function _transferOwnership(address newOwner) internal virtual {... */\n pop\n pop\n jump\t// out\n /* \"contracts/WaifInu.sol\":17408:18364 function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap {... */\n tag_406:\n /* \"contracts/WaifInu.sol\":1952:1968 inSwapAndLiquify */\n 0x16\n /* \"contracts/WaifInu.sol\":1952:1975 inSwapAndLiquify = true */\n dup1\n sload\n not(shl(0xa0, 0xff))\n and\n shl(0xa0, 0x01)\n or\n swap1\n sstore\n 0x00\n /* \"contracts/WaifInu.sol\":17557:17584 contractTokenBalance.div(2) */\n tag_433\n /* \"contracts/WaifInu.sol\":17557:17577 contractTokenBalance */\n dup3\n /* \"contracts/WaifInu.sol\":17582:17583 2 */\n 0x02\n /* \"contracts/WaifInu.sol\":17557:17581 contractTokenBalance.div */\n tag_216\n /* \"contracts/WaifInu.sol\":17557:17584 contractTokenBalance.div(2) */\n jump\t// in\n tag_433:\n /* \"contracts/WaifInu.sol\":17542:17584 uint256 half = contractTokenBalance.div(2) */\n swap1\n pop\n /* \"contracts/WaifInu.sol\":17594:17611 uint256 otherHalf */\n 0x00\n /* \"contracts/WaifInu.sol\":17614:17644 contractTokenBalance.sub(half) */\n tag_434\n /* \"contracts/WaifInu.sol\":17614:17634 contractTokenBalance */\n dup4\n /* \"contracts/WaifInu.sol\":17542:17584 uint256 half = contractTokenBalance.div(2) */\n dup4\n /* \"contracts/WaifInu.sol\":17614:17638 contractTokenBalance.sub */\n tag_293\n /* \"contracts/WaifInu.sol\":17614:17644 contractTokenBalance.sub(half) */\n jump\t// in\n tag_434:\n /* \"contracts/WaifInu.sol\":17594:17644 uint256 otherHalf = contractTokenBalance.sub(half) */\n swap1\n pop\n /* \"contracts/WaifInu.sol\":17941:17962 address(this).balance */\n selfbalance\n /* \"contracts/WaifInu.sol\":18004:18026 swapTokensForEth(half) */\n tag_435\n /* \"contracts/WaifInu.sol\":18021:18025 half */\n dup4\n /* \"contracts/WaifInu.sol\":18004:18020 swapTokensForEth */\n tag_436\n /* \"contracts/WaifInu.sol\":18004:18026 swapTokensForEth(half) */\n jump\t// in\n tag_435:\n /* \"contracts/WaifInu.sol\":18154:18172 uint256 newBalance */\n 0x00\n /* \"contracts/WaifInu.sol\":18175:18216 address(this).balance.sub(initialBalance) */\n tag_437\n /* \"contracts/WaifInu.sol\":18175:18196 address(this).balance */\n selfbalance\n /* \"contracts/WaifInu.sol\":18201:18215 initialBalance */\n dup4\n /* \"contracts/WaifInu.sol\":18175:18200 address(this).balance.sub */\n tag_293\n /* \"contracts/WaifInu.sol\":18175:18216 address(this).balance.sub(initialBalance) */\n jump\t// in\n tag_437:\n /* \"contracts/WaifInu.sol\":18154:18216 uint256 newBalance = address(this).balance.sub(initialBalance) */\n swap1\n pop\n /* \"contracts/WaifInu.sol\":18263:18298 addLiquidity(otherHalf, newBalance) */\n tag_438\n /* \"contracts/WaifInu.sol\":18276:18285 otherHalf */\n dup4\n /* \"contracts/WaifInu.sol\":18287:18297 newBalance */\n dup3\n /* \"contracts/WaifInu.sol\":18263:18275 addLiquidity */\n tag_439\n /* \"contracts/WaifInu.sol\":18263:18298 addLiquidity(otherHalf, newBalance) */\n jump\t// in\n tag_438:\n /* \"contracts/WaifInu.sol\":18314:18357 SwapAndLiquify(half, newBalance, otherHalf) */\n 0x17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561\n /* \"contracts/WaifInu.sol\":18329:18333 half */\n dup5\n /* \"contracts/WaifInu.sol\":18335:18345 newBalance */\n dup3\n /* \"contracts/WaifInu.sol\":18347:18356 otherHalf */\n dup6\n /* \"contracts/WaifInu.sol\":18314:18357 SwapAndLiquify(half, newBalance, otherHalf) */\n mload(0x40)\n tag_440\n swap4\n swap3\n swap2\n swap1\n tag_441\n jump\t// in\n tag_440:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n log1\n pop\n pop\n /* \"contracts/WaifInu.sol\":1996:2012 inSwapAndLiquify */\n 0x16\n /* \"contracts/WaifInu.sol\":1996:2020 inSwapAndLiquify = false */\n dup1\n sload\n not(shl(0xa0, 0xff))\n and\n swap1\n sstore\n pop\n pop\n pop\n /* \"contracts/WaifInu.sol\":17408:18364 function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap {... */\n jump\t// out\n /* \"contracts/WaifInu.sol\":17127:17402 function _sendETHFee(uint256 _amount) private {... */\n tag_408:\n /* \"contracts/WaifInu.sol\":17183:17198 uint256 _ethFee */\n 0x00\n /* \"contracts/WaifInu.sol\":17201:17228 _amount.mul(400).div(10**4) */\n tag_443\n /* \"contracts/WaifInu.sol\":17222:17227 10**4 */\n 0x2710\n /* \"contracts/WaifInu.sol\":17201:17217 _amount.mul(400) */\n tag_444\n /* \"contracts/WaifInu.sol\":17201:17208 _amount */\n dup5\n /* \"contracts/WaifInu.sol\":17213:17216 400 */\n 0x0190\n /* \"contracts/WaifInu.sol\":17201:17212 _amount.mul */\n tag_215\n /* \"contracts/WaifInu.sol\":17201:17217 _amount.mul(400) */\n jump\t// in\n tag_444:\n /* \"contracts/WaifInu.sol\":17201:17221 _amount.mul(400).div */\n swap1\n tag_216\n /* \"contracts/WaifInu.sol\":17201:17228 _amount.mul(400).div(10**4) */\n jump\t// in\n tag_443:\n /* \"contracts/WaifInu.sol\":17183:17228 uint256 _ethFee = _amount.mul(400).div(10**4) */\n swap1\n pop\n /* \"contracts/WaifInu.sol\":17267:17288 address(this).balance */\n selfbalance\n /* \"contracts/WaifInu.sol\":17303:17331 contractETHBalance > _ethFee */\n dup2\n dup2\n gt\n /* \"contracts/WaifInu.sol\":17299:17396 if (contractETHBalance > _ethFee) {... */\n iszero\n tag_445\n jumpi\n /* \"contracts/WaifInu.sol\":17355:17366 _devAddress */\n sload(0x16)\n /* \"contracts/WaifInu.sol\":17347:17385 payable(_devAddress).transfer(_ethFee) */\n mload(0x40)\n sub(shl(0xa0, 0x01), 0x01)\n /* \"contracts/WaifInu.sol\":17355:17366 _devAddress */\n swap1\n swap2\n and\n swap1\n /* \"contracts/WaifInu.sol\":17347:17385 payable(_devAddress).transfer(_ethFee) */\n dup4\n iszero\n 0x08fc\n mul\n swap1\n /* \"contracts/WaifInu.sol\":17377:17384 _ethFee */\n dup5\n swap1\n /* \"contracts/WaifInu.sol\":17355:17366 _devAddress */\n 0x00\n /* \"contracts/WaifInu.sol\":17347:17385 payable(_devAddress).transfer(_ethFee) */\n dup2\n /* \"contracts/WaifInu.sol\":17355:17366 _devAddress */\n dup2\n /* \"contracts/WaifInu.sol\":17347:17385 payable(_devAddress).transfer(_ethFee) */\n dup2\n /* \"contracts/WaifInu.sol\":17377:17384 _ethFee */\n dup6\n /* \"contracts/WaifInu.sol\":17355:17366 _devAddress */\n dup9\n /* \"contracts/WaifInu.sol\":17347:17385 payable(_devAddress).transfer(_ethFee) */\n dup9\n call\n swap4\n pop\n pop\n pop\n pop\n iszero\n dup1\n iszero\n tag_447\n jumpi\n returndatasize\n 0x00\n dup1\n returndatacopy\n revert(0x00, returndatasize)\n tag_447:\n pop\n /* \"contracts/WaifInu.sol\":17299:17396 if (contractETHBalance > _ethFee) {... */\n tag_445:\n /* \"contracts/WaifInu.sol\":17127:17402 function _sendETHFee(uint256 _amount) private {... */\n pop\n pop\n pop\n jump\t// out\n /* \"contracts/WaifInu.sol\":19527:20344 function _tokenTransfer(... */\n tag_412:\n /* \"contracts/WaifInu.sol\":19677:19684 takeFee */\n dup1\n /* \"contracts/WaifInu.sol\":19672:19700 if (!takeFee) removeAllFee() */\n tag_450\n jumpi\n /* \"contracts/WaifInu.sol\":19686:19700 removeAllFee() */\n tag_450\n /* \"contracts/WaifInu.sol\":19686:19698 removeAllFee */\n tag_451\n /* \"contracts/WaifInu.sol\":19686:19700 removeAllFee() */\n jump\t// in\n tag_450:\n sub(shl(0xa0, 0x01), 0x01)\n /* \"contracts/WaifInu.sol\":19715:19734 _isExcluded[sender] */\n dup5\n and\n 0x00\n swap1\n dup2\n mstore\n /* \"contracts/WaifInu.sol\":19715:19726 _isExcluded */\n 0x05\n /* \"contracts/WaifInu.sol\":19715:19734 _isExcluded[sender] */\n 0x20\n mstore\n 0x40\n swap1\n keccak256\n sload\n 0xff\n and\n /* \"contracts/WaifInu.sol\":19715:19761 _isExcluded[sender] && !_isExcluded[recipient] */\n dup1\n iszero\n tag_452\n jumpi\n pop\n sub(shl(0xa0, 0x01), 0x01)\n /* \"contracts/WaifInu.sol\":19739:19761 _isExcluded[recipient] */\n dup4\n and\n 0x00\n swap1\n dup2\n mstore\n /* \"contracts/WaifInu.sol\":19739:19750 _isExcluded */\n 0x05\n /* \"contracts/WaifInu.sol\":19739:19761 _isExcluded[recipient] */\n 0x20\n mstore\n 0x40\n swap1\n keccak256\n sload\n 0xff\n and\n /* \"contracts/WaifInu.sol\":19738:19761 !_isExcluded[recipient] */\n iszero\n /* \"contracts/WaifInu.sol\":19715:19761 _isExcluded[sender] && !_isExcluded[recipient] */\n tag_452:\n /* \"contracts/WaifInu.sol\":19711:20298 if (_isExcluded[sender] && !_isExcluded[recipient]) {... */\n iszero\n tag_453\n jumpi\n /* \"contracts/WaifInu.sol\":19777:19825 _transferFromExcluded(sender, recipient, amount) */\n tag_454\n /* \"contracts/WaifInu.sol\":19799:19805 sender */\n dup5\n /* \"contracts/WaifInu.sol\":19807:19816 recipient */\n dup5\n /* \"contracts/WaifInu.sol\":19818:19824 amount */\n dup5\n /* \"contracts/WaifInu.sol\":19777:19798 _transferFromExcluded */\n tag_455\n /* \"contracts/WaifInu.sol\":19777:19825 _transferFromExcluded(sender, recipient, amount) */\n jump\t// in\n tag_454:\n /* \"contracts/WaifInu.sol\":19711:20298 if (_isExcluded[sender] && !_isExcluded[recipient]) {... */\n jump(tag_472)\n tag_453:\n sub(shl(0xa0, 0x01), 0x01)\n /* \"contracts/WaifInu.sol\":19847:19866 _isExcluded[sender] */\n dup5\n and\n 0x00\n swap1\n dup2\n mstore\n /* \"contracts/WaifInu.sol\":19847:19858 _isExcluded */\n 0x05\n /* \"contracts/WaifInu.sol\":19847:19866 _isExcluded[sender] */\n 0x20\n mstore\n 0x40\n swap1\n keccak256\n sload\n 0xff\n and\n /* \"contracts/WaifInu.sol\":19846:19866 !_isExcluded[sender] */\n iszero\n /* \"contracts/WaifInu.sol\":19846:19892 !_isExcluded[sender] && _isExcluded[recipient] */\n dup1\n iszero\n tag_457\n jumpi\n pop\n sub(shl(0xa0, 0x01), 0x01)\n /* \"contracts/WaifInu.sol\":19870:19892 _isExcluded[recipient] */\n dup4\n and\n 0x00\n swap1\n dup2\n mstore\n /* \"contracts/WaifInu.sol\":19870:19881 _isExcluded */\n 0x05\n /* \"contracts/WaifInu.sol\":19870:19892 _isExcluded[recipient] */\n 0x20\n mstore\n 0x40\n swap1\n keccak256\n sload\n 0xff\n and\n /* \"contracts/WaifInu.sol\":19846:19892 !_isExcluded[sender] && _isExcluded[recipient] */\n tag_457:\n /* \"contracts/WaifInu.sol\":19842:20298 if (!_isExcluded[sender] && _isExcluded[recipient]) {... */\n iszero\n tag_458\n jumpi\n /* \"contracts/WaifInu.sol\":19908:19954 _transferToExcluded(sender, recipient, amount) */\n tag_454\n /* \"contracts/WaifInu.sol\":19928:19934 sender */\n dup5\n /* \"contracts/WaifInu.sol\":19936:19945 recipient */\n dup5\n /* \"contracts/WaifInu.sol\":19947:19953 amount */\n dup5\n /* \"contracts/WaifInu.sol\":19908:19927 _transferToExcluded */\n tag_460\n /* \"contracts/WaifInu.sol\":19908:19954 _transferToExcluded(sender, recipient, amount) */\n jump\t// in\n /* \"contracts/WaifInu.sol\":19842:20298 if (!_isExcluded[sender] && _isExcluded[recipient]) {... */\n tag_458:\n sub(shl(0xa0, 0x01), 0x01)\n /* \"contracts/WaifInu.sol\":19976:19995 _isExcluded[sender] */\n dup5\n and\n 0x00\n swap1\n dup2\n mstore\n /* \"contracts/WaifInu.sol\":19976:19987 _isExcluded */\n 0x05\n /* \"contracts/WaifInu.sol\":19976:19995 _isExcluded[sender] */\n 0x20\n mstore\n 0x40\n swap1\n keccak256\n sload\n 0xff\n and\n /* \"contracts/WaifInu.sol\":19975:19995 !_isExcluded[sender] */\n iszero\n /* \"contracts/WaifInu.sol\":19975:20022 !_isExcluded[sender] && !_isExcluded[recipient] */\n dup1\n iszero\n tag_462\n jumpi\n pop\n sub(shl(0xa0, 0x01), 0x01)\n /* \"contracts/WaifInu.sol\":20000:20022 _isExcluded[recipient] */\n dup4\n and\n 0x00\n swap1\n dup2\n mstore\n /* \"contracts/WaifInu.sol\":20000:20011 _isExcluded */\n 0x05\n /* \"contracts/WaifInu.sol\":20000:20022 _isExcluded[recipient] */\n 0x20\n mstore\n 0x40\n swap1\n keccak256\n sload\n 0xff\n and\n /* \"contracts/WaifInu.sol\":19999:20022 !_isExcluded[recipient] */\n iszero\n /* \"contracts/WaifInu.sol\":19975:20022 !_isExcluded[sender] && !_isExcluded[recipient] */\n tag_462:\n /* \"contracts/WaifInu.sol\":19971:20298 if (!_isExcluded[sender] && !_isExcluded[recipient]) {... */\n iszero\n tag_463\n jumpi\n /* \"contracts/WaifInu.sol\":20038:20082 _transferStandard(sender, recipient, amount) */\n tag_454\n /* \"contracts/WaifInu.sol\":20056:20062 sender */\n dup5\n /* \"contracts/WaifInu.sol\":20064:20073 recipient */\n dup5\n /* \"contracts/WaifInu.sol\":20075:20081 amount */\n dup5\n /* \"contracts/WaifInu.sol\":20038:20055 _transferStandard */\n tag_465\n /* \"contracts/WaifInu.sol\":20038:20082 _transferStandard(sender, recipient, amount) */\n jump\t// in\n /* \"contracts/WaifInu.sol\":19971:20298 if (!_isExcluded[sender] && !_isExcluded[recipient]) {... */\n tag_463:\n sub(shl(0xa0, 0x01), 0x01)\n /* \"contracts/WaifInu.sol\":20103:20122 _isExcluded[sender] */\n dup5\n and\n 0x00\n swap1\n dup2\n mstore\n /* \"contracts/WaifInu.sol\":20103:20114 _isExcluded */\n 0x05\n /* \"contracts/WaifInu.sol\":20103:20122 _isExcluded[sender] */\n 0x20\n mstore\n 0x40\n swap1\n keccak256\n sload\n 0xff\n and\n /* \"contracts/WaifInu.sol\":20103:20148 _isExcluded[sender] && _isExcluded[recipient] */\n dup1\n iszero\n tag_467\n jumpi\n pop\n sub(shl(0xa0, 0x01), 0x01)\n /* \"contracts/WaifInu.sol\":20126:20148 _isExcluded[recipient] */\n dup4\n and\n 0x00\n swap1\n dup2\n mstore\n /* \"contracts/WaifInu.sol\":20126:20137 _isExcluded */\n 0x05\n /* \"contracts/WaifInu.sol\":20126:20148 _isExcluded[recipient] */\n 0x20\n mstore\n 0x40\n swap1\n keccak256\n sload\n 0xff\n and\n /* \"contracts/WaifInu.sol\":20103:20148 _isExcluded[sender] && _isExcluded[recipient] */\n tag_467:\n /* \"contracts/WaifInu.sol\":20099:20298 if (_isExcluded[sender] && _isExcluded[recipient]) {... */\n iszero\n tag_468\n jumpi\n /* \"contracts/WaifInu.sol\":20164:20212 _transferBothExcluded(sender, recipient, amount) */\n tag_454\n /* \"contracts/WaifInu.sol\":20186:20192 sender */\n dup5\n /* \"contracts/WaifInu.sol\":20194:20203 recipient */\n dup5\n /* \"contracts/WaifInu.sol\":20205:20211 amount */\n dup5\n /* \"contracts/WaifInu.sol\":20164:20185 _transferBothExcluded */\n tag_470\n /* \"contracts/WaifInu.sol\":20164:20212 _transferBothExcluded(sender, recipient, amount) */\n jump\t// in\n /* \"contracts/WaifInu.sol\":20099:20298 if (_isExcluded[sender] && _isExcluded[recipient]) {... */\n tag_468:\n /* \"contracts/WaifInu.sol\":20243:20287 _transferStandard(sender, recipient, amount) */\n tag_472\n /* \"contracts/WaifInu.sol\":20261:20267 sender */\n dup5\n /* \"contracts/WaifInu.sol\":20269:20278 recipient */\n dup5\n /* \"contracts/WaifInu.sol\":20280:20286 amount */\n dup5\n /* \"contracts/WaifInu.sol\":20243:20260 _transferStandard */\n tag_465\n /* \"contracts/WaifInu.sol\":20243:20287 _transferStandard(sender, recipient, amount) */\n jump\t// in\n tag_472:\n /* \"contracts/WaifInu.sol\":20313:20320 takeFee */\n dup1\n /* \"contracts/WaifInu.sol\":20308:20337 if (!takeFee) restoreAllFee() */\n tag_447\n jumpi\n /* \"contracts/WaifInu.sol\":20322:20337 restoreAllFee() */\n tag_447\n /* \"contracts/WaifInu.sol\":20322:20335 restoreAllFee */\n tag_475\n /* \"contracts/WaifInu.sol\":20322:20337 restoreAllFee() */\n jump\t// in\n /* \"contracts/WaifInu.sol\":12532:13124 function _getCurrentSupply() private view returns (uint256, uint256) {... */\n tag_418:\n /* \"contracts/WaifInu.sol\":12629:12636 _rTotal */\n sload(0x08)\n /* \"contracts/WaifInu.sol\":12664:12671 _tTotal */\n sload(0x07)\n /* \"contracts/WaifInu.sol\":12583:12590 uint256 */\n 0x00\n swap2\n dup3\n swap2\n dup3\n /* \"contracts/WaifInu.sol\":12681:13012 for (uint256 i = 0; i < _excluded.length; i++) {... */\n tag_477:\n /* \"contracts/WaifInu.sol\":12705:12714 _excluded */\n 0x06\n /* \"contracts/WaifInu.sol\":12705:12721 _excluded.length */\n sload\n /* \"contracts/WaifInu.sol\":12701:12721 i < _excluded.length */\n dup2\n lt\n /* \"contracts/WaifInu.sol\":12681:13012 for (uint256 i = 0; i < _excluded.length; i++) {... */\n iszero\n tag_478\n jumpi\n /* \"contracts/WaifInu.sol\":12787:12794 rSupply */\n dup3\n /* \"contracts/WaifInu.sol\":12763:12770 _rOwned */\n 0x01\n /* \"contracts/WaifInu.sol\":12763:12784 _rOwned[_excluded[i]] */\n 0x00\n /* \"contracts/WaifInu.sol\":12771:12780 _excluded */\n 0x06\n /* \"contracts/WaifInu.sol\":12781:12782 i */\n dup5\n /* \"contracts/WaifInu.sol\":12771:12783 _excluded[i] */\n dup2\n sload\n dup2\n lt\n tag_480\n jumpi\n mstore(0x00, shl(0xe0, 0x4e487b71))\n mstore(0x04, 0x32)\n revert(0x00, 0x24)\n tag_480:\n 0x00\n swap2\n dup3\n mstore\n 0x20\n dup1\n dup4\n keccak256\n swap1\n swap2\n add\n sload\n sub(shl(0xa0, 0x01), 0x01)\n and\n /* \"contracts/WaifInu.sol\":12763:12784 _rOwned[_excluded[i]] */\n dup4\n mstore\n dup3\n add\n swap3\n swap1\n swap3\n mstore\n 0x40\n add\n swap1\n keccak256\n sload\n /* \"contracts/WaifInu.sol\":12763:12794 _rOwned[_excluded[i]] > rSupply */\n gt\n dup1\n /* \"contracts/WaifInu.sol\":12763:12845 _rOwned[_excluded[i]] > rSupply ||... */\n tag_482\n jumpi\n pop\n /* \"contracts/WaifInu.sol\":12838:12845 tSupply */\n dup2\n /* \"contracts/WaifInu.sol\":12814:12821 _tOwned */\n 0x02\n /* \"contracts/WaifInu.sol\":12814:12835 _tOwned[_excluded[i]] */\n 0x00\n /* \"contracts/WaifInu.sol\":12822:12831 _excluded */\n 0x06\n /* \"contracts/WaifInu.sol\":12832:12833 i */\n dup5\n /* \"contracts/WaifInu.sol\":12822:12834 _excluded[i] */\n dup2\n sload\n dup2\n lt\n tag_483\n jumpi\n mstore(0x00, shl(0xe0, 0x4e487b71))\n mstore(0x04, 0x32)\n revert(0x00, 0x24)\n tag_483:\n 0x00\n swap2\n dup3\n mstore\n 0x20\n dup1\n dup4\n keccak256\n swap1\n swap2\n add\n sload\n sub(shl(0xa0, 0x01), 0x01)\n and\n /* \"contracts/WaifInu.sol\":12814:12835 _tOwned[_excluded[i]] */\n dup4\n mstore\n dup3\n add\n swap3\n swap1\n swap3\n mstore\n 0x40\n add\n swap1\n keccak256\n sload\n /* \"contracts/WaifInu.sol\":12814:12845 _tOwned[_excluded[i]] > tSupply */\n gt\n /* \"contracts/WaifInu.sol\":12763:12845 _rOwned[_excluded[i]] > rSupply ||... */\n tag_482:\n /* \"contracts/WaifInu.sol\":12742:12885 if (... */\n iszero\n tag_485\n jumpi\n /* \"contracts/WaifInu.sol\":12868:12875 _rTotal */\n sload(0x08)\n /* \"contracts/WaifInu.sol\":12877:12884 _tTotal */\n sload(0x07)\n /* \"contracts/WaifInu.sol\":12860:12885 return (_rTotal, _tTotal) */\n swap5\n pop\n swap5\n pop\n pop\n pop\n pop\n jump(tag_476)\n /* \"contracts/WaifInu.sol\":12742:12885 if (... */\n tag_485:\n /* \"contracts/WaifInu.sol\":12909:12943 rSupply.sub(_rOwned[_excluded[i]]) */\n tag_486\n /* \"contracts/WaifInu.sol\":12921:12928 _rOwned */\n 0x01\n /* \"contracts/WaifInu.sol\":12921:12942 _rOwned[_excluded[i]] */\n 0x00\n /* \"contracts/WaifInu.sol\":12929:12938 _excluded */\n 0x06\n /* \"contracts/WaifInu.sol\":12939:12940 i */\n dup5\n /* \"contracts/WaifInu.sol\":12929:12941 _excluded[i] */\n dup2\n sload\n dup2\n lt\n tag_487\n jumpi\n mstore(0x00, shl(0xe0, 0x4e487b71))\n mstore(0x04, 0x32)\n revert(0x00, 0x24)\n tag_487:\n 0x00\n swap2\n dup3\n mstore\n 0x20\n dup1\n dup4\n keccak256\n swap1\n swap2\n add\n sload\n sub(shl(0xa0, 0x01), 0x01)\n and\n /* \"contracts/WaifInu.sol\":12921:12942 _rOwned[_excluded[i]] */\n dup4\n mstore\n dup3\n add\n swap3\n swap1\n swap3\n mstore\n 0x40\n add\n swap1\n keccak256\n sload\n /* \"contracts/WaifInu.sol\":12909:12916 rSupply */\n dup5\n swap1\n /* \"contracts/WaifInu.sol\":12909:12920 rSupply.sub */\n tag_293\n /* \"contracts/WaifInu.sol\":12909:12943 rSupply.sub(_rOwned[_excluded[i]]) */\n jump\t// in\n tag_486:\n /* \"contracts/WaifInu.sol\":12899:12943 rSupply = rSupply.sub(_rOwned[_excluded[i]]) */\n swap3\n pop\n /* \"contracts/WaifInu.sol\":12967:13001 tSupply.sub(_tOwned[_excluded[i]]) */\n tag_489\n /* \"contracts/WaifInu.sol\":12979:12986 _tOwned */\n 0x02\n /* \"contracts/WaifInu.sol\":12979:13000 _tOwned[_excluded[i]] */\n 0x00\n /* \"contracts/WaifInu.sol\":12987:12996 _excluded */\n 0x06\n /* \"contracts/WaifInu.sol\":12997:12998 i */\n dup5\n /* \"contracts/WaifInu.sol\":12987:12999 _excluded[i] */\n dup2\n sload\n dup2\n lt\n tag_490\n jumpi\n mstore(0x00, shl(0xe0, 0x4e487b71))\n mstore(0x04, 0x32)\n revert(0x00, 0x24)\n tag_490:\n 0x00\n swap2\n dup3\n mstore\n 0x20\n dup1\n dup4\n keccak256\n swap1\n swap2\n add\n sload\n sub(shl(0xa0, 0x01), 0x01)\n and\n /* \"contracts/WaifInu.sol\":12979:13000 _tOwned[_excluded[i]] */\n dup4\n mstore\n dup3\n add\n swap3\n swap1\n swap3\n mstore\n 0x40\n add\n swap1\n keccak256\n sload\n /* \"contracts/WaifInu.sol\":12967:12974 tSupply */\n dup4\n swap1\n /* \"contracts/WaifInu.sol\":12967:12978 tSupply.sub */\n tag_293\n /* \"contracts/WaifInu.sol\":12967:13001 tSupply.sub(_tOwned[_excluded[i]]) */\n jump\t// in\n tag_489:\n /* \"contracts/WaifInu.sol\":12957:13001 tSupply = tSupply.sub(_tOwned[_excluded[i]]) */\n swap2\n pop\n /* \"contracts/WaifInu.sol\":12723:12726 i++ */\n dup1\n tag_492\n dup2\n tag_278\n jump\t// in\n tag_492:\n swap2\n pop\n pop\n /* \"contracts/WaifInu.sol\":12681:13012 for (uint256 i = 0; i < _excluded.length; i++) {... */\n jump(tag_477)\n tag_478:\n pop\n /* \"contracts/WaifInu.sol\":13047:13054 _tTotal */\n sload(0x07)\n /* \"contracts/WaifInu.sol\":13035:13042 _rTotal */\n sload(0x08)\n /* \"contracts/WaifInu.sol\":13035:13055 _rTotal.div(_tTotal) */\n tag_493\n swap2\n /* \"contracts/WaifInu.sol\":13035:13046 _rTotal.div */\n tag_216\n /* \"contracts/WaifInu.sol\":13035:13055 _rTotal.div(_tTotal) */\n jump\t// in\n tag_493:\n /* \"contracts/WaifInu.sol\":13025:13032 rSupply */\n dup3\n /* \"contracts/WaifInu.sol\":13025:13055 rSupply < _rTotal.div(_tTotal) */\n lt\n /* \"contracts/WaifInu.sol\":13021:13082 if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal) */\n iszero\n tag_494\n jumpi\n /* \"contracts/WaifInu.sol\":13065:13072 _rTotal */\n sload(0x08)\n /* \"contracts/WaifInu.sol\":13074:13081 _tTotal */\n sload(0x07)\n /* \"contracts/WaifInu.sol\":13057:13082 return (_rTotal, _tTotal) */\n swap4\n pop\n swap4\n pop\n pop\n pop\n jump(tag_476)\n /* \"contracts/WaifInu.sol\":13021:13082 if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal) */\n tag_494:\n /* \"contracts/WaifInu.sol\":13100:13107 rSupply */\n swap1\n swap3\n pop\n /* \"contracts/WaifInu.sol\":13109:13116 tSupply */\n swap1\n pop\n /* \"contracts/WaifInu.sol\":12532:13124 function _getCurrentSupply() private view returns (uint256, uint256) {... */\n tag_476:\n swap1\n swap2\n jump\t// out\n /* \"contracts/WaifInu.sol\":11154:11694 function _getTValues(uint256 tAmount)... */\n tag_424:\n /* \"contracts/WaifInu.sol\":11251:11258 uint256 */\n 0x00\n /* \"contracts/WaifInu.sol\":11272:11279 uint256 */\n dup1\n /* \"contracts/WaifInu.sol\":11293:11300 uint256 */\n 0x00\n /* \"contracts/WaifInu.sol\":11314:11321 uint256 */\n dup1\n /* \"contracts/WaifInu.sol\":11346:11358 uint256 tFee */\n 0x00\n /* \"contracts/WaifInu.sol\":11361:11385 calculateTaxFee(tAmount) */\n tag_496\n /* \"contracts/WaifInu.sol\":11377:11384 tAmount */\n dup7\n /* \"contracts/WaifInu.sol\":11361:11376 calculateTaxFee */\n tag_497\n /* \"contracts/WaifInu.sol\":11361:11385 calculateTaxFee(tAmount) */\n jump\t// in\n tag_496:\n /* \"contracts/WaifInu.sol\":11346:11385 uint256 tFee = calculateTaxFee(tAmount) */\n swap1\n pop\n /* \"contracts/WaifInu.sol\":11395:11413 uint256 tLiquidity */\n 0x00\n /* \"contracts/WaifInu.sol\":11416:11446 calculateLiquidityFee(tAmount) */\n tag_498\n /* \"contracts/WaifInu.sol\":11438:11445 tAmount */\n dup8\n /* \"contracts/WaifInu.sol\":11416:11437 calculateLiquidityFee */\n tag_499\n /* \"contracts/WaifInu.sol\":11416:11446 calculateLiquidityFee(tAmount) */\n jump\t// in\n tag_498:\n /* \"contracts/WaifInu.sol\":11395:11446 uint256 tLiquidity = calculateLiquidityFee(tAmount) */\n swap1\n pop\n /* \"contracts/WaifInu.sol\":11456:11477 uint256 tMarketingFee */\n 0x00\n /* \"contracts/WaifInu.sol\":11480:11510 calculateMarketingFee(tAmount) */\n tag_500\n /* \"contracts/WaifInu.sol\":11502:11509 tAmount */\n dup9\n /* \"contracts/WaifInu.sol\":11480:11501 calculateMarketingFee */\n tag_501\n /* \"contracts/WaifInu.sol\":11480:11510 calculateMarketingFee(tAmount) */\n jump\t// in\n tag_500:\n /* \"contracts/WaifInu.sol\":11456:11510 uint256 tMarketingFee = calculateMarketingFee(tAmount) */\n swap1\n pop\n /* \"contracts/WaifInu.sol\":11520:11543 uint256 tTransferAmount */\n 0x00\n /* \"contracts/WaifInu.sol\":11546:11620 tAmount.sub(tFee).sub(tLiquidity).sub(... */\n tag_502\n /* \"contracts/WaifInu.sol\":11456:11510 uint256 tMarketingFee = calculateMarketingFee(tAmount) */\n dup3\n /* \"contracts/WaifInu.sol\":11546:11579 tAmount.sub(tFee).sub(tLiquidity) */\n tag_504\n /* \"contracts/WaifInu.sol\":11568:11578 tLiquidity */\n dup6\n /* \"contracts/WaifInu.sol\":11546:11579 tAmount.sub(tFee).sub(tLiquidity) */\n dup2\n /* \"contracts/WaifInu.sol\":11546:11553 tAmount */\n dup14\n /* \"contracts/WaifInu.sol\":11558:11562 tFee */\n dup10\n /* \"contracts/WaifInu.sol\":11546:11557 tAmount.sub */\n tag_293\n /* \"contracts/WaifInu.sol\":11546:11563 tAmount.sub(tFee) */\n jump\t// in\n tag_504:\n /* \"contracts/WaifInu.sol\":11546:11567 tAmount.sub(tFee).sub */\n swap1\n tag_293\n /* \"contracts/WaifInu.sol\":11546:11579 tAmount.sub(tFee).sub(tLiquidity) */\n jump\t// in\n /* \"contracts/WaifInu.sol\":11546:11620 tAmount.sub(tFee).sub(tLiquidity).sub(... */\n tag_502:\n /* \"contracts/WaifInu.sol\":11520:11620 uint256 tTransferAmount = tAmount.sub(tFee).sub(tLiquidity).sub(... */\n swap10\n /* \"contracts/WaifInu.sol\":11655:11659 tFee */\n swap4\n swap9\n pop\n /* \"contracts/WaifInu.sol\":11661:11671 tLiquidity */\n swap2\n swap7\n pop\n swap5\n pop\n /* \"contracts/WaifInu.sol\":11154:11694 function _getTValues(uint256 tAmount)... */\n swap1\n swap3\n pop\n pop\n pop\n jump\t// out\n /* \"contracts/WaifInu.sol\":11700:12359 function _getRValues(... */\n tag_427:\n /* \"contracts/WaifInu.sol\":11918:11925 uint256 */\n 0x00\n dup1\n dup1\n dup1\n /* \"contracts/WaifInu.sol\":12010:12034 tAmount.mul(currentRate) */\n tag_506\n /* \"contracts/WaifInu.sol\":12010:12017 tAmount */\n dup10\n /* \"contracts/WaifInu.sol\":12022:12033 currentRate */\n dup7\n /* \"contracts/WaifInu.sol\":12010:12021 tAmount.mul */\n tag_215\n /* \"contracts/WaifInu.sol\":12010:12034 tAmount.mul(currentRate) */\n jump\t// in\n tag_506:\n /* \"contracts/WaifInu.sol\":11992:12034 uint256 rAmount = tAmount.mul(currentRate) */\n swap1\n pop\n /* \"contracts/WaifInu.sol\":12044:12056 uint256 rFee */\n 0x00\n /* \"contracts/WaifInu.sol\":12059:12080 tFee.mul(currentRate) */\n tag_507\n /* \"contracts/WaifInu.sol\":12059:12063 tFee */\n dup10\n /* \"contracts/WaifInu.sol\":12068:12079 currentRate */\n dup8\n /* \"contracts/WaifInu.sol\":12059:12067 tFee.mul */\n tag_215\n /* \"contracts/WaifInu.sol\":12059:12080 tFee.mul(currentRate) */\n jump\t// in\n tag_507:\n /* \"contracts/WaifInu.sol\":12044:12080 uint256 rFee = tFee.mul(currentRate) */\n swap1\n pop\n /* \"contracts/WaifInu.sol\":12090:12108 uint256 rLiquidity */\n 0x00\n /* \"contracts/WaifInu.sol\":12111:12138 tLiquidity.mul(currentRate) */\n tag_508\n /* \"contracts/WaifInu.sol\":12111:12121 tLiquidity */\n dup10\n /* \"contracts/WaifInu.sol\":12126:12137 currentRate */\n dup9\n /* \"contracts/WaifInu.sol\":12111:12125 tLiquidity.mul */\n tag_215\n /* \"contracts/WaifInu.sol\":12111:12138 tLiquidity.mul(currentRate) */\n jump\t// in\n tag_508:\n /* \"contracts/WaifInu.sol\":12090:12138 uint256 rLiquidity = tLiquidity.mul(currentRate) */\n swap1\n pop\n /* \"contracts/WaifInu.sol\":12148:12166 uint256 rMarketing */\n 0x00\n /* \"contracts/WaifInu.sol\":12169:12196 tMarketing.mul(currentRate) */\n tag_509\n /* \"contracts/WaifInu.sol\":12169:12179 tMarketing */\n dup10\n /* \"contracts/WaifInu.sol\":12184:12195 currentRate */\n dup10\n /* \"contracts/WaifInu.sol\":12169:12183 tMarketing.mul */\n tag_215\n /* \"contracts/WaifInu.sol\":12169:12196 tMarketing.mul(currentRate) */\n jump\t// in\n tag_509:\n /* \"contracts/WaifInu.sol\":12148:12196 uint256 rMarketing = tMarketing.mul(currentRate) */\n swap1\n pop\n /* \"contracts/WaifInu.sol\":12206:12229 uint256 rTransferAmount */\n 0x00\n /* \"contracts/WaifInu.sol\":12232:12303 rAmount.sub(rFee).sub(rLiquidity).sub(... */\n tag_510\n /* \"contracts/WaifInu.sol\":12148:12196 uint256 rMarketing = tMarketing.mul(currentRate) */\n dup3\n /* \"contracts/WaifInu.sol\":12232:12265 rAmount.sub(rFee).sub(rLiquidity) */\n tag_504\n /* \"contracts/WaifInu.sol\":12254:12264 rLiquidity */\n dup6\n /* \"contracts/WaifInu.sol\":12232:12265 rAmount.sub(rFee).sub(rLiquidity) */\n dup2\n /* \"contracts/WaifInu.sol\":12232:12239 rAmount */\n dup10\n /* \"contracts/WaifInu.sol\":12244:12248 rFee */\n dup10\n /* \"contracts/WaifInu.sol\":12232:12243 rAmount.sub */\n tag_293\n /* \"contracts/WaifInu.sol\":12232:12249 rAmount.sub(rFee) */\n jump\t// in\n /* \"contracts/WaifInu.sol\":12232:12303 rAmount.sub(rFee).sub(rLiquidity).sub(... */\n tag_510:\n /* \"contracts/WaifInu.sol\":12321:12328 rAmount */\n swap5\n swap14\n swap5\n swap13\n pop\n /* \"contracts/WaifInu.sol\":12347:12351 rFee */\n swap3\n swap11\n pop\n /* \"contracts/WaifInu.sol\":11700:12359 function _getRValues(... */\n swap3\n swap9\n pop\n pop\n pop\n pop\n pop\n pop\n pop\n pop\n pop\n jump\t// out\n /* \"contracts/WaifInu.sol\":18370:18943 function swapTokensForEth(uint256 tokenAmount) private {... */\n tag_436:\n /* \"contracts/WaifInu.sol\":18518:18534 new address[](2) */\n 0x40\n dup1\n mload\n /* \"contracts/WaifInu.sol\":18532:18533 2 */\n 0x02\n /* \"contracts/WaifInu.sol\":18518:18534 new address[](2) */\n dup1\n dup3\n mstore\n 0x60\n dup3\n add\n dup4\n mstore\n /* \"contracts/WaifInu.sol\":18494:18515 address[] memory path */\n 0x00\n swap3\n /* \"contracts/WaifInu.sol\":18518:18534 new address[](2) */\n 0x20\n dup4\n add\n swap1\n dup1\n calldatasize\n dup4\n calldatacopy\n add\n swap1\n pop\n pop\n /* \"contracts/WaifInu.sol\":18494:18534 address[] memory path = new address[](2) */\n swap1\n pop\n /* \"contracts/WaifInu.sol\":18562:18566 this */\n address\n /* \"contracts/WaifInu.sol\":18544:18548 path */\n dup2\n /* \"contracts/WaifInu.sol\":18549:18550 0 */\n 0x00\n /* \"contracts/WaifInu.sol\":18544:18551 path[0] */\n dup2\n mload\n dup2\n lt\n tag_516\n jumpi\n mstore(0x00, shl(0xe0, 0x4e487b71))\n mstore(0x04, 0x32)\n revert(0x00, 0x24)\n tag_516:\n sub(shl(0xa0, 0x01), 0x01)\n /* \"contracts/WaifInu.sol\":18544:18567 path[0] = address(this) */\n swap3\n dup4\n and\n /* \"contracts/WaifInu.sol\":18544:18551 path[0] */\n 0x20\n swap2\n dup3\n mul\n swap3\n swap1\n swap3\n add\n dup2\n add\n /* \"contracts/WaifInu.sol\":18544:18567 path[0] = address(this) */\n swap2\n swap1\n swap2\n mstore\n /* \"contracts/WaifInu.sol\":18587:18602 uniswapV2Router */\n sload(0x13)\n /* \"contracts/WaifInu.sol\":18587:18609 uniswapV2Router.WETH() */\n 0x40\n dup1\n mload\n shl(0xe3, 0x15ab88c9)\n dup2\n mstore\n swap1\n mload\n /* \"contracts/WaifInu.sol\":18587:18602 uniswapV2Router */\n swap2\n swap1\n swap4\n and\n swap3\n /* \"contracts/WaifInu.sol\":18587:18607 uniswapV2Router.WETH */\n 0xad5c4648\n swap3\n /* \"contracts/WaifInu.sol\":18587:18609 uniswapV2Router.WETH() */\n 0x04\n dup1\n dup4\n add\n swap4\n /* \"contracts/WaifInu.sol\":18544:18551 path[0] */\n swap2\n swap3\n /* \"contracts/WaifInu.sol\":18587:18609 uniswapV2Router.WETH() */\n dup3\n swap1\n sub\n add\n dup2\n /* \"contracts/WaifInu.sol\":18587:18602 uniswapV2Router */\n dup7\n /* \"contracts/WaifInu.sol\":18587:18609 uniswapV2Router.WETH() */\n dup1\n extcodesize\n iszero\n dup1\n iszero\n tag_517\n jumpi\n 0x00\n dup1\n revert\n tag_517:\n pop\n gas\n staticcall\n iszero\n dup1\n iszero\n tag_519\n jumpi\n returndatasize\n 0x00\n dup1\n returndatacopy\n revert(0x00, returndatasize)\n tag_519:\n pop\n pop\n pop\n pop\n mload(0x40)\n returndatasize\n not(0x1f)\n 0x1f\n dup3\n add\n and\n dup3\n add\n dup1\n 0x40\n mstore\n pop\n dup2\n add\n swap1\n tag_520\n swap2\n swap1\n tag_521\n jump\t// in\n tag_520:\n /* \"contracts/WaifInu.sol\":18577:18581 path */\n dup2\n /* \"contracts/WaifInu.sol\":18582:18583 1 */\n 0x01\n /* \"contracts/WaifInu.sol\":18577:18584 path[1] */\n dup2\n mload\n dup2\n lt\n tag_522\n jumpi\n mstore(0x00, shl(0xe0, 0x4e487b71))\n mstore(0x04, 0x32)\n revert(0x00, 0x24)\n tag_522:\n sub(shl(0xa0, 0x01), 0x01)\n /* \"contracts/WaifInu.sol\":18577:18609 path[1] = uniswapV2Router.WETH() */\n swap3\n dup4\n and\n /* \"contracts/WaifInu.sol\":18577:18584 path[1] */\n 0x20\n swap2\n dup3\n mul\n swap3\n swap1\n swap3\n add\n add\n /* \"contracts/WaifInu.sol\":18577:18609 path[1] = uniswapV2Router.WETH() */\n mstore\n /* \"contracts/WaifInu.sol\":18652:18667 uniswapV2Router */\n sload(0x13)\n /* \"contracts/WaifInu.sol\":18620:18682 _approve(address(this), address(uniswapV2Router), tokenAmount) */\n tag_523\n swap2\n /* \"contracts/WaifInu.sol\":18637:18641 this */\n address\n swap2\n /* \"contracts/WaifInu.sol\":18652:18667 uniswapV2Router */\n and\n /* \"contracts/WaifInu.sol\":18670:18681 tokenAmount */\n dup5\n /* \"contracts/WaifInu.sol\":18620:18628 _approve */\n tag_238\n /* \"contracts/WaifInu.sol\":18620:18682 _approve(address(this), address(uniswapV2Router), tokenAmount) */\n jump\t// in\n tag_523:\n /* \"contracts/WaifInu.sol\":18718:18733 uniswapV2Router */\n sload(0x13)\n /* \"contracts/WaifInu.sol\":18718:18936 uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(... */\n mload(0x40)\n shl(0xe0, 0x791ac947)\n dup2\n mstore\n sub(shl(0xa0, 0x01), 0x01)\n /* \"contracts/WaifInu.sol\":18718:18733 uniswapV2Router */\n swap1\n swap2\n and\n swap1\n /* \"contracts/WaifInu.sol\":18718:18784 uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens */\n 0x791ac947\n swap1\n /* \"contracts/WaifInu.sol\":18718:18936 uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(... */\n tag_524\n swap1\n /* \"contracts/WaifInu.sol\":18798:18809 tokenAmount */\n dup6\n swap1\n /* \"contracts/WaifInu.sol\":18718:18733 uniswapV2Router */\n 0x00\n swap1\n /* \"contracts/WaifInu.sol\":18866:18870 path */\n dup7\n swap1\n /* \"contracts/WaifInu.sol\":18892:18896 this */\n address\n swap1\n /* \"contracts/WaifInu.sol\":18911:18926 block.timestamp */\n timestamp\n swap1\n /* \"contracts/WaifInu.sol\":18718:18936 uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(... */\n 0x04\n add\n tag_525\n jump\t// in\n tag_524:\n 0x00\n mload(0x40)\n dup1\n dup4\n sub\n dup2\n 0x00\n dup8\n dup1\n extcodesize\n iszero\n dup1\n iszero\n tag_526\n jumpi\n 0x00\n dup1\n revert\n tag_526:\n pop\n gas\n call\n iszero\n dup1\n iszero\n tag_411\n jumpi\n returndatasize\n 0x00\n dup1\n returndatacopy\n revert(0x00, returndatasize)\n /* \"contracts/WaifInu.sol\":18949:19449 function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {... */\n tag_439:\n /* \"contracts/WaifInu.sol\":19127:19142 uniswapV2Router */\n sload(0x13)\n /* \"contracts/WaifInu.sol\":19095:19157 _approve(address(this), address(uniswapV2Router), tokenAmount) */\n tag_530\n swap1\n /* \"contracts/WaifInu.sol\":19112:19116 this */\n address\n swap1\n sub(shl(0xa0, 0x01), 0x01)\n /* \"contracts/WaifInu.sol\":19127:19142 uniswapV2Router */\n and\n /* \"contracts/WaifInu.sol\":19145:19156 tokenAmount */\n dup5\n /* \"contracts/WaifInu.sol\":19095:19103 _approve */\n tag_238\n /* \"contracts/WaifInu.sol\":19095:19157 _approve(address(this), address(uniswapV2Router), tokenAmount) */\n jump\t// in\n tag_530:\n /* \"contracts/WaifInu.sol\":19197:19212 uniswapV2Router */\n and(sub(shl(0xa0, 0x01), 0x01), sload(0x13))\n /* \"contracts/WaifInu.sol\":19197:19228 uniswapV2Router.addLiquidityETH */\n 0xf305d719\n /* \"contracts/WaifInu.sol\":19236:19245 ethAmount */\n dup3\n /* \"contracts/WaifInu.sol\":19268:19272 this */\n address\n /* \"contracts/WaifInu.sol\":19287:19298 tokenAmount */\n dup6\n /* \"contracts/WaifInu.sol\":19197:19212 uniswapV2Router */\n 0x00\n dup1\n /* \"contracts/WaifInu.sol\":19396:19403 owner() */\n tag_531\n /* \"contracts/WaifInu.sol\":19396:19401 owner */\n tag_168\n /* \"contracts/WaifInu.sol\":19396:19403 owner() */\n jump\t// in\n tag_531:\n /* \"contracts/WaifInu.sol\":19417:19432 block.timestamp */\n timestamp\n /* \"contracts/WaifInu.sol\":19197:19442 uniswapV2Router.addLiquidityETH{value: ethAmount}(... */\n mload(0x40)\n dup9\n 0xffffffff\n and\n 0xe0\n shl\n dup2\n mstore\n 0x04\n add\n tag_532\n swap7\n swap6\n swap5\n swap4\n swap3\n swap2\n swap1\n tag_533\n jump\t// in\n tag_532:\n 0x60\n mload(0x40)\n dup1\n dup4\n sub\n dup2\n dup6\n dup9\n dup1\n extcodesize\n iszero\n dup1\n iszero\n tag_534\n jumpi\n 0x00\n dup1\n revert\n tag_534:\n pop\n gas\n call\n iszero\n dup1\n iszero\n tag_536\n jumpi\n returndatasize\n 0x00\n dup1\n returndatacopy\n revert(0x00, returndatasize)\n tag_536:\n pop\n pop\n pop\n pop\n pop\n mload(0x40)\n returndatasize\n not(0x1f)\n 0x1f\n dup3\n add\n and\n dup3\n add\n dup1\n 0x40\n mstore\n pop\n dup2\n add\n swap1\n tag_537\n swap2\n swap1\n tag_538\n jump\t// in\n tag_537:\n pop\n pop\n pop\n /* \"contracts/WaifInu.sol\":18949:19449 function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {... */\n pop\n pop\n jump\t// out\n /* \"contracts/WaifInu.sol\":14600:14923 function removeAllFee() private {... */\n tag_451:\n /* \"contracts/WaifInu.sol\":14646:14653 _taxFee */\n sload(0x0d)\n /* \"contracts/WaifInu.sol\":14646:14658 _taxFee == 0 */\n iszero\n /* \"contracts/WaifInu.sol\":14646:14680 _taxFee == 0 && _liquidityFee == 0 */\n dup1\n iszero\n tag_540\n jumpi\n pop\n /* \"contracts/WaifInu.sol\":14662:14675 _liquidityFee */\n sload(0x0f)\n /* \"contracts/WaifInu.sol\":14662:14680 _liquidityFee == 0 */\n iszero\n /* \"contracts/WaifInu.sol\":14646:14680 _taxFee == 0 && _liquidityFee == 0 */\n tag_540:\n /* \"contracts/WaifInu.sol\":14646:14702 _taxFee == 0 && _liquidityFee == 0 && _marketingFee == 0 */\n dup1\n iszero\n tag_541\n jumpi\n pop\n /* \"contracts/WaifInu.sol\":14684:14697 _marketingFee */\n sload(0x11)\n /* \"contracts/WaifInu.sol\":14684:14702 _marketingFee == 0 */\n iszero\n /* \"contracts/WaifInu.sol\":14646:14702 _taxFee == 0 && _liquidityFee == 0 && _marketingFee == 0 */\n tag_541:\n /* \"contracts/WaifInu.sol\":14642:14711 if (_taxFee == 0 && _liquidityFee == 0 && _marketingFee == 0) return; */\n iszero\n tag_542\n jumpi\n /* \"contracts/WaifInu.sol\":14704:14711 return; */\n jump(tag_329)\n /* \"contracts/WaifInu.sol\":14642:14711 if (_taxFee == 0 && _liquidityFee == 0 && _marketingFee == 0) return; */\n tag_542:\n /* \"contracts/WaifInu.sol\":14739:14746 _taxFee */\n 0x0d\n dup1\n sload\n /* \"contracts/WaifInu.sol\":14721:14736 _previousTaxFee */\n 0x0e\n /* \"contracts/WaifInu.sol\":14721:14746 _previousTaxFee = _taxFee */\n sstore\n /* \"contracts/WaifInu.sol\":14780:14793 _liquidityFee */\n 0x0f\n dup1\n sload\n /* \"contracts/WaifInu.sol\":14756:14777 _previousLiquidityFee */\n 0x10\n /* \"contracts/WaifInu.sol\":14756:14793 _previousLiquidityFee = _liquidityFee */\n sstore\n /* \"contracts/WaifInu.sol\":14827:14840 _marketingFee */\n 0x11\n dup1\n sload\n /* \"contracts/WaifInu.sol\":14803:14824 _previousMarketingFee */\n 0x12\n /* \"contracts/WaifInu.sol\":14803:14840 _previousMarketingFee = _marketingFee */\n sstore\n 0x00\n /* \"contracts/WaifInu.sol\":14851:14862 _taxFee = 0 */\n swap3\n dup4\n swap1\n sstore\n /* \"contracts/WaifInu.sol\":14872:14889 _liquidityFee = 0 */\n swap1\n dup3\n swap1\n sstore\n /* \"contracts/WaifInu.sol\":14899:14916 _marketingFee = 0 */\n sstore\n /* \"contracts/WaifInu.sol\":14600:14923 function removeAllFee() private {... */\n jump\t// out\n /* \"contracts/WaifInu.sol\":21790:22528 function _transferFromExcluded(... */\n tag_455:\n /* \"contracts/WaifInu.sol\":21935:21950 uint256 rAmount */\n 0x00\n /* \"contracts/WaifInu.sol\":21964:21987 uint256 rTransferAmount */\n dup1\n /* \"contracts/WaifInu.sol\":22001:22013 uint256 rFee */\n 0x00\n /* \"contracts/WaifInu.sol\":22027:22050 uint256 tTransferAmount */\n dup1\n /* \"contracts/WaifInu.sol\":22064:22076 uint256 tFee */\n 0x00\n /* \"contracts/WaifInu.sol\":22090:22108 uint256 tLiquidity */\n dup1\n /* \"contracts/WaifInu.sol\":22122:22140 uint256 tMarketing */\n 0x00\n /* \"contracts/WaifInu.sol\":22153:22172 _getValues(tAmount) */\n tag_544\n /* \"contracts/WaifInu.sol\":22164:22171 tAmount */\n dup9\n /* \"contracts/WaifInu.sol\":22153:22163 _getValues */\n tag_291\n /* \"contracts/WaifInu.sol\":22153:22172 _getValues(tAmount) */\n jump\t// in\n tag_544:\n /* \"contracts/WaifInu.sol\":21921:22172 (... */\n swap7\n pop\n swap7\n pop\n swap7\n pop\n swap7\n pop\n swap7\n pop\n swap7\n pop\n swap7\n pop\n /* \"contracts/WaifInu.sol\":22200:22228 _tOwned[sender].sub(tAmount) */\n tag_545\n /* \"contracts/WaifInu.sol\":22220:22227 tAmount */\n dup9\n /* \"contracts/WaifInu.sol\":22200:22207 _tOwned */\n 0x02\n /* \"contracts/WaifInu.sol\":22200:22215 _tOwned[sender] */\n 0x00\n /* \"contracts/WaifInu.sol\":22208:22214 sender */\n dup14\n sub(shl(0xa0, 0x01), 0x01)\n /* \"contracts/WaifInu.sol\":22200:22215 _tOwned[sender] */\n and\n sub(shl(0xa0, 0x01), 0x01)\n and\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x00\n keccak256\n sload\n /* \"contracts/WaifInu.sol\":22200:22219 _tOwned[sender].sub */\n tag_293\n swap1\n /* \"contracts/WaifInu.sol\":22200:22228 _tOwned[sender].sub(tAmount) */\n swap2\n swap1\n 0xffffffff\n and\n jump\t// in\n tag_545:\n sub(shl(0xa0, 0x01), 0x01)\n /* \"contracts/WaifInu.sol\":22182:22197 _tOwned[sender] */\n dup12\n and\n 0x00\n swap1\n dup2\n mstore\n /* \"contracts/WaifInu.sol\":22182:22189 _tOwned */\n 0x02\n /* \"contracts/WaifInu.sol\":22182:22197 _tOwned[sender] */\n 0x20\n swap1\n dup2\n mstore\n 0x40\n dup1\n dup4\n keccak256\n /* \"contracts/WaifInu.sol\":22182:22228 _tOwned[sender] = _tOwned[sender].sub(tAmount) */\n swap4\n swap1\n swap4\n sstore\n /* \"contracts/WaifInu.sol\":22256:22263 _rOwned */\n 0x01\n /* \"contracts/WaifInu.sol\":22256:22271 _rOwned[sender] */\n swap1\n mstore\n keccak256\n sload\n /* \"contracts/WaifInu.sol\":22256:22284 _rOwned[sender].sub(rAmount) */\n tag_546\n swap1\n /* \"contracts/WaifInu.sol\":22276:22283 rAmount */\n dup9\n /* \"contracts/WaifInu.sol\":22256:22275 _rOwned[sender].sub */\n tag_293\n /* \"contracts/WaifInu.sol\":22256:22284 _rOwned[sender].sub(rAmount) */\n jump\t// in\n tag_546:\n sub(shl(0xa0, 0x01), 0x01)\n /* \"contracts/WaifInu.sol\":22238:22253 _rOwned[sender] */\n dup1\n dup13\n and\n 0x00\n swap1\n dup2\n mstore\n /* \"contracts/WaifInu.sol\":22238:22245 _rOwned */\n 0x01\n /* \"contracts/WaifInu.sol\":22238:22253 _rOwned[sender] */\n 0x20\n mstore\n 0x40\n dup1\n dup3\n keccak256\n /* \"contracts/WaifInu.sol\":22238:22284 _rOwned[sender] = _rOwned[sender].sub(rAmount) */\n swap4\n swap1\n swap4\n sstore\n /* \"contracts/WaifInu.sol\":22315:22333 _rOwned[recipient] */\n swap1\n dup12\n and\n dup2\n mstore\n keccak256\n sload\n /* \"contracts/WaifInu.sol\":22315:22354 _rOwned[recipient].add(rTransferAmount) */\n tag_547\n swap1\n /* \"contracts/WaifInu.sol\":22338:22353 rTransferAmount */\n dup8\n /* \"contracts/WaifInu.sol\":22315:22337 _rOwned[recipient].add */\n tag_284\n /* \"contracts/WaifInu.sol\":22315:22354 _rOwned[recipient].add(rTransferAmount) */\n jump\t// in\n tag_547:\n sub(shl(0xa0, 0x01), 0x01)\n /* \"contracts/WaifInu.sol\":22294:22312 _rOwned[recipient] */\n dup11\n and\n 0x00\n swap1\n dup2\n mstore\n /* \"contracts/WaifInu.sol\":22294:22301 _rOwned */\n 0x01\n /* \"contracts/WaifInu.sol\":22294:22312 _rOwned[recipient] */\n 0x20\n mstore\n 0x40\n swap1\n keccak256\n /* \"contracts/WaifInu.sol\":22294:22354 _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) */\n sstore\n /* \"contracts/WaifInu.sol\":22364:22390 _takeLiquidity(tLiquidity) */\n tag_548\n /* \"contracts/WaifInu.sol\":22379:22389 tLiquidity */\n dup3\n /* \"contracts/WaifInu.sol\":22364:22378 _takeLiquidity */\n tag_549\n /* \"contracts/WaifInu.sol\":22364:22390 _takeLiquidity(tLiquidity) */\n jump\t// in\n tag_548:\n /* \"contracts/WaifInu.sol\":22400:22429 _takeMarketingFee(tMarketing) */\n tag_550\n /* \"contracts/WaifInu.sol\":22418:22428 tMarketing */\n dup2\n /* \"contracts/WaifInu.sol\":22400:22417 _takeMarketingFee */\n tag_551\n /* \"contracts/WaifInu.sol\":22400:22429 _takeMarketingFee(tMarketing) */\n jump\t// in\n tag_550:\n /* \"contracts/WaifInu.sol\":22439:22462 _reflectFee(rFee, tFee) */\n tag_552\n /* \"contracts/WaifInu.sol\":22451:22455 rFee */\n dup6\n /* \"contracts/WaifInu.sol\":22457:22461 tFee */\n dup5\n /* \"contracts/WaifInu.sol\":22439:22450 _reflectFee */\n tag_553\n /* \"contracts/WaifInu.sol\":22439:22462 _reflectFee(rFee, tFee) */\n jump\t// in\n tag_552:\n /* \"contracts/WaifInu.sol\":22494:22503 recipient */\n dup9\n sub(shl(0xa0, 0x01), 0x01)\n /* \"contracts/WaifInu.sol\":22477:22521 Transfer(sender, recipient, tTransferAmount) */\n and\n /* \"contracts/WaifInu.sol\":22486:22492 sender */\n dup11\n sub(shl(0xa0, 0x01), 0x01)\n /* \"contracts/WaifInu.sol\":22477:22521 Transfer(sender, recipient, tTransferAmount) */\n and\n 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef\n /* \"contracts/WaifInu.sol\":22505:22520 tTransferAmount */\n dup7\n /* \"contracts/WaifInu.sol\":22477:22521 Transfer(sender, recipient, tTransferAmount) */\n mload(0x40)\n tag_554\n swap2\n swap1\n tag_69\n jump\t// in\n tag_554:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n log3\n /* \"contracts/WaifInu.sol\":21790:22528 function _transferFromExcluded(... */\n pop\n pop\n pop\n pop\n pop\n pop\n pop\n pop\n pop\n pop\n jump\t// out\n /* \"contracts/WaifInu.sol\":21034:21784 function _transferToExcluded(... */\n tag_460:\n /* \"contracts/WaifInu.sol\":21177:21192 uint256 rAmount */\n 0x00\n /* \"contracts/WaifInu.sol\":21206:21229 uint256 rTransferAmount */\n dup1\n /* \"contracts/WaifInu.sol\":21243:21255 uint256 rFee */\n 0x00\n /* \"contracts/WaifInu.sol\":21269:21292 uint256 tTransferAmount */\n dup1\n /* \"contracts/WaifInu.sol\":21306:21318 uint256 tFee */\n 0x00\n /* \"contracts/WaifInu.sol\":21332:21350 uint256 tLiquidity */\n dup1\n /* \"contracts/WaifInu.sol\":21364:21382 uint256 tMarketing */\n 0x00\n /* \"contracts/WaifInu.sol\":21395:21414 _getValues(tAmount) */\n tag_556\n /* \"contracts/WaifInu.sol\":21406:21413 tAmount */\n dup9\n /* \"contracts/WaifInu.sol\":21395:21405 _getValues */\n tag_291\n /* \"contracts/WaifInu.sol\":21395:21414 _getValues(tAmount) */\n jump\t// in\n tag_556:\n /* \"contracts/WaifInu.sol\":21163:21414 (... */\n swap7\n pop\n swap7\n pop\n swap7\n pop\n swap7\n pop\n swap7\n pop\n swap7\n pop\n swap7\n pop\n /* \"contracts/WaifInu.sol\":21442:21470 _rOwned[sender].sub(rAmount) */\n tag_557\n /* \"contracts/WaifInu.sol\":21462:21469 rAmount */\n dup8\n /* \"contracts/WaifInu.sol\":21442:21449 _rOwned */\n 0x01\n /* \"contracts/WaifInu.sol\":21442:21457 _rOwned[sender] */\n 0x00\n /* \"contracts/WaifInu.sol\":21450:21456 sender */\n dup14\n sub(shl(0xa0, 0x01), 0x01)\n /* \"contracts/WaifInu.sol\":21442:21457 _rOwned[sender] */\n and\n sub(shl(0xa0, 0x01), 0x01)\n and\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x00\n keccak256\n sload\n /* \"contracts/WaifInu.sol\":21442:21461 _rOwned[sender].sub */\n tag_293\n swap1\n /* \"contracts/WaifInu.sol\":21442:21470 _rOwned[sender].sub(rAmount) */\n swap2\n swap1\n 0xffffffff\n and\n jump\t// in\n tag_557:\n sub(shl(0xa0, 0x01), 0x01)\n /* \"contracts/WaifInu.sol\":21424:21439 _rOwned[sender] */\n dup1\n dup13\n and\n 0x00\n swap1\n dup2\n mstore\n /* \"contracts/WaifInu.sol\":21424:21431 _rOwned */\n 0x01\n /* \"contracts/WaifInu.sol\":21424:21439 _rOwned[sender] */\n 0x20\n swap1\n dup2\n mstore\n 0x40\n dup1\n dup4\n keccak256\n /* \"contracts/WaifInu.sol\":21424:21470 _rOwned[sender] = _rOwned[sender].sub(rAmount) */\n swap5\n swap1\n swap5\n sstore\n /* \"contracts/WaifInu.sol\":21501:21519 _tOwned[recipient] */\n swap2\n dup13\n and\n dup2\n mstore\n /* \"contracts/WaifInu.sol\":21501:21508 _tOwned */\n 0x02\n /* \"contracts/WaifInu.sol\":21501:21519 _tOwned[recipient] */\n swap1\n swap2\n mstore\n keccak256\n sload\n /* \"contracts/WaifInu.sol\":21501:21540 _tOwned[recipient].add(tTransferAmount) */\n tag_558\n swap1\n /* \"contracts/WaifInu.sol\":21524:21539 tTransferAmount */\n dup6\n /* \"contracts/WaifInu.sol\":21501:21523 _tOwned[recipient].add */\n tag_284\n /* \"contracts/WaifInu.sol\":21501:21540 _tOwned[recipient].add(tTransferAmount) */\n jump\t// in\n tag_558:\n sub(shl(0xa0, 0x01), 0x01)\n /* \"contracts/WaifInu.sol\":21480:21498 _tOwned[recipient] */\n dup11\n and\n 0x00\n swap1\n dup2\n mstore\n /* \"contracts/WaifInu.sol\":21480:21487 _tOwned */\n 0x02\n /* \"contracts/WaifInu.sol\":21480:21498 _tOwned[recipient] */\n 0x20\n swap1\n dup2\n mstore\n 0x40\n dup1\n dup4\n keccak256\n /* \"contracts/WaifInu.sol\":21480:21540 _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount) */\n swap4\n swap1\n swap4\n sstore\n /* \"contracts/WaifInu.sol\":21571:21578 _rOwned */\n 0x01\n /* \"contracts/WaifInu.sol\":21571:21589 _rOwned[recipient] */\n swap1\n mstore\n keccak256\n sload\n /* \"contracts/WaifInu.sol\":21571:21610 _rOwned[recipient].add(rTransferAmount) */\n tag_547\n swap1\n /* \"contracts/WaifInu.sol\":21594:21609 rTransferAmount */\n dup8\n /* \"contracts/WaifInu.sol\":21571:21593 _rOwned[recipient].add */\n tag_284\n /* \"contracts/WaifInu.sol\":21571:21610 _rOwned[recipient].add(rTransferAmount) */\n jump\t// in\n /* \"contracts/WaifInu.sol\":20350:21028 function _transferStandard(... */\n tag_465:\n /* \"contracts/WaifInu.sol\":20491:20506 uint256 rAmount */\n 0x00\n /* \"contracts/WaifInu.sol\":20520:20543 uint256 rTransferAmount */\n dup1\n /* \"contracts/WaifInu.sol\":20557:20569 uint256 rFee */\n 0x00\n /* \"contracts/WaifInu.sol\":20583:20606 uint256 tTransferAmount */\n dup1\n /* \"contracts/WaifInu.sol\":20620:20632 uint256 tFee */\n 0x00\n /* \"contracts/WaifInu.sol\":20646:20664 uint256 tLiquidity */\n dup1\n /* \"contracts/WaifInu.sol\":20678:20696 uint256 tMarketing */\n 0x00\n /* \"contracts/WaifInu.sol\":20709:20728 _getValues(tAmount) */\n tag_565\n /* \"contracts/WaifInu.sol\":20720:20727 tAmount */\n dup9\n /* \"contracts/WaifInu.sol\":20709:20719 _getValues */\n tag_291\n /* \"contracts/WaifInu.sol\":20709:20728 _getValues(tAmount) */\n jump\t// in\n tag_565:\n /* \"contracts/WaifInu.sol\":20477:20728 (... */\n swap7\n pop\n swap7\n pop\n swap7\n pop\n swap7\n pop\n swap7\n pop\n swap7\n pop\n swap7\n pop\n /* \"contracts/WaifInu.sol\":20756:20784 _rOwned[sender].sub(rAmount) */\n tag_546\n /* \"contracts/WaifInu.sol\":20776:20783 rAmount */\n dup8\n /* \"contracts/WaifInu.sol\":20756:20763 _rOwned */\n 0x01\n /* \"contracts/WaifInu.sol\":20756:20771 _rOwned[sender] */\n 0x00\n /* \"contracts/WaifInu.sol\":20764:20770 sender */\n dup14\n sub(shl(0xa0, 0x01), 0x01)\n /* \"contracts/WaifInu.sol\":20756:20771 _rOwned[sender] */\n and\n sub(shl(0xa0, 0x01), 0x01)\n and\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x00\n keccak256\n sload\n /* \"contracts/WaifInu.sol\":20756:20775 _rOwned[sender].sub */\n tag_293\n swap1\n /* \"contracts/WaifInu.sol\":20756:20784 _rOwned[sender].sub(rAmount) */\n swap2\n swap1\n 0xffffffff\n and\n jump\t// in\n /* \"contracts/WaifInu.sol\":8083:8891 function _transferBothExcluded(... */\n tag_470:\n /* \"contracts/WaifInu.sol\":8228:8243 uint256 rAmount */\n 0x00\n /* \"contracts/WaifInu.sol\":8257:8280 uint256 rTransferAmount */\n dup1\n /* \"contracts/WaifInu.sol\":8294:8306 uint256 rFee */\n 0x00\n /* \"contracts/WaifInu.sol\":8320:8343 uint256 tTransferAmount */\n dup1\n /* \"contracts/WaifInu.sol\":8357:8369 uint256 tFee */\n 0x00\n /* \"contracts/WaifInu.sol\":8383:8401 uint256 tLiquidity */\n dup1\n /* \"contracts/WaifInu.sol\":8415:8433 uint256 tMarketing */\n 0x00\n /* \"contracts/WaifInu.sol\":8446:8465 _getValues(tAmount) */\n tag_573\n /* \"contracts/WaifInu.sol\":8457:8464 tAmount */\n dup9\n /* \"contracts/WaifInu.sol\":8446:8456 _getValues */\n tag_291\n /* \"contracts/WaifInu.sol\":8446:8465 _getValues(tAmount) */\n jump\t// in\n tag_573:\n /* \"contracts/WaifInu.sol\":8214:8465 (... */\n swap7\n pop\n swap7\n pop\n swap7\n pop\n swap7\n pop\n swap7\n pop\n swap7\n pop\n swap7\n pop\n /* \"contracts/WaifInu.sol\":8493:8521 _tOwned[sender].sub(tAmount) */\n tag_574\n /* \"contracts/WaifInu.sol\":8513:8520 tAmount */\n dup9\n /* \"contracts/WaifInu.sol\":8493:8500 _tOwned */\n 0x02\n /* \"contracts/WaifInu.sol\":8493:8508 _tOwned[sender] */\n 0x00\n /* \"contracts/WaifInu.sol\":8501:8507 sender */\n dup14\n sub(shl(0xa0, 0x01), 0x01)\n /* \"contracts/WaifInu.sol\":8493:8508 _tOwned[sender] */\n and\n sub(shl(0xa0, 0x01), 0x01)\n and\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x00\n keccak256\n sload\n /* \"contracts/WaifInu.sol\":8493:8512 _tOwned[sender].sub */\n tag_293\n swap1\n /* \"contracts/WaifInu.sol\":8493:8521 _tOwned[sender].sub(tAmount) */\n swap2\n swap1\n 0xffffffff\n and\n jump\t// in\n tag_574:\n sub(shl(0xa0, 0x01), 0x01)\n /* \"contracts/WaifInu.sol\":8475:8490 _tOwned[sender] */\n dup12\n and\n 0x00\n swap1\n dup2\n mstore\n /* \"contracts/WaifInu.sol\":8475:8482 _tOwned */\n 0x02\n /* \"contracts/WaifInu.sol\":8475:8490 _tOwned[sender] */\n 0x20\n swap1\n dup2\n mstore\n 0x40\n dup1\n dup4\n keccak256\n /* \"contracts/WaifInu.sol\":8475:8521 _tOwned[sender] = _tOwned[sender].sub(tAmount) */\n swap4\n swap1\n swap4\n sstore\n /* \"contracts/WaifInu.sol\":8549:8556 _rOwned */\n 0x01\n /* \"contracts/WaifInu.sol\":8549:8564 _rOwned[sender] */\n swap1\n mstore\n keccak256\n sload\n /* \"contracts/WaifInu.sol\":8549:8577 _rOwned[sender].sub(rAmount) */\n tag_557\n swap1\n /* \"contracts/WaifInu.sol\":8569:8576 rAmount */\n dup9\n /* \"contracts/WaifInu.sol\":8549:8568 _rOwned[sender].sub */\n tag_293\n /* \"contracts/WaifInu.sol\":8549:8577 _rOwned[sender].sub(rAmount) */\n jump\t// in\n /* \"contracts/WaifInu.sol\":14929:15098 function restoreAllFee() private {... */\n tag_475:\n /* \"contracts/WaifInu.sol\":14982:14997 _previousTaxFee */\n sload(0x0e)\n /* \"contracts/WaifInu.sol\":14972:14979 _taxFee */\n 0x0d\n /* \"contracts/WaifInu.sol\":14972:14997 _taxFee = _previousTaxFee */\n sstore\n /* \"contracts/WaifInu.sol\":15023:15044 _previousLiquidityFee */\n sload(0x10)\n /* \"contracts/WaifInu.sol\":15007:15020 _liquidityFee */\n 0x0f\n /* \"contracts/WaifInu.sol\":15007:15044 _liquidityFee = _previousLiquidityFee */\n sstore\n /* \"contracts/WaifInu.sol\":15070:15091 _previousMarketingFee */\n sload(0x12)\n /* \"contracts/WaifInu.sol\":15054:15067 _marketingFee */\n 0x11\n /* \"contracts/WaifInu.sol\":15054:15091 _marketingFee = _previousMarketingFee */\n sstore\n /* \"contracts/WaifInu.sol\":14929:15098 function restoreAllFee() private {... */\n jump\t// out\n /* \"contracts/WaifInu.sol\":14063:14191 function calculateTaxFee(uint256 _amount) private view returns (uint256) {... */\n tag_497:\n /* \"contracts/WaifInu.sol\":14127:14134 uint256 */\n 0x00\n /* \"contracts/WaifInu.sol\":14153:14184 _amount.mul(_taxFee).div(10**4) */\n tag_234\n /* \"contracts/WaifInu.sol\":14178:14183 10**4 */\n 0x2710\n /* \"contracts/WaifInu.sol\":14153:14173 _amount.mul(_taxFee) */\n tag_444\n /* \"contracts/WaifInu.sol\":14165:14172 _taxFee */\n sload(0x0d)\n /* \"contracts/WaifInu.sol\":14153:14160 _amount */\n dup6\n /* \"contracts/WaifInu.sol\":14153:14164 _amount.mul */\n tag_215\n swap1\n /* \"contracts/WaifInu.sol\":14153:14173 _amount.mul(_taxFee) */\n swap2\n swap1\n 0xffffffff\n and\n jump\t// in\n /* \"contracts/WaifInu.sol\":14197:14365 function calculateLiquidityFee(uint256 _amount)... */\n tag_499:\n /* \"contracts/WaifInu.sol\":14291:14298 uint256 */\n 0x00\n /* \"contracts/WaifInu.sol\":14321:14358 _amount.mul(_liquidityFee).div(10**4) */\n tag_234\n /* \"contracts/WaifInu.sol\":14352:14357 10**4 */\n 0x2710\n /* \"contracts/WaifInu.sol\":14321:14347 _amount.mul(_liquidityFee) */\n tag_444\n /* \"contracts/WaifInu.sol\":14333:14346 _liquidityFee */\n sload(0x0f)\n /* \"contracts/WaifInu.sol\":14321:14328 _amount */\n dup6\n /* \"contracts/WaifInu.sol\":14321:14332 _amount.mul */\n tag_215\n swap1\n /* \"contracts/WaifInu.sol\":14321:14347 _amount.mul(_liquidityFee) */\n swap2\n swap1\n 0xffffffff\n and\n jump\t// in\n /* \"contracts/WaifInu.sol\":14371:14594 function calculateMarketingFee(uint256 _amount)... */\n tag_501:\n /* \"contracts/WaifInu.sol\":14492:14509 _marketingAddress */\n sload(0x15)\n /* \"contracts/WaifInu.sol\":14465:14472 uint256 */\n 0x00\n swap1\n sub(shl(0xa0, 0x01), 0x01)\n /* \"contracts/WaifInu.sol\":14492:14509 _marketingAddress */\n and\n /* \"contracts/WaifInu.sol\":14488:14533 if (_marketingAddress == address(0)) return 0 */\n tag_590\n jumpi\n pop\n /* \"contracts/WaifInu.sol\":14532:14533 0 */\n 0x00\n /* \"contracts/WaifInu.sol\":14525:14533 return 0 */\n jump(tag_249)\n /* \"contracts/WaifInu.sol\":14488:14533 if (_marketingAddress == address(0)) return 0 */\n tag_590:\n /* \"contracts/WaifInu.sol\":14550:14587 _amount.mul(_marketingFee).div(10**4) */\n tag_234\n /* \"contracts/WaifInu.sol\":14581:14586 10**4 */\n 0x2710\n /* \"contracts/WaifInu.sol\":14550:14576 _amount.mul(_marketingFee) */\n tag_444\n /* \"contracts/WaifInu.sol\":14562:14575 _marketingFee */\n sload(0x11)\n /* \"contracts/WaifInu.sol\":14550:14557 _amount */\n dup6\n /* \"contracts/WaifInu.sol\":14550:14561 _amount.mul */\n tag_215\n swap1\n /* \"contracts/WaifInu.sol\":14550:14576 _amount.mul(_marketingFee) */\n swap2\n swap1\n 0xffffffff\n and\n jump\t// in\n /* \"contracts/WaifInu.sol\":13130:13479 function _takeLiquidity(uint256 tLiquidity) private {... */\n tag_549:\n /* \"contracts/WaifInu.sol\":13192:13211 uint256 currentRate */\n 0x00\n /* \"contracts/WaifInu.sol\":13214:13224 _getRate() */\n tag_594\n /* \"contracts/WaifInu.sol\":13214:13222 _getRate */\n tag_254\n /* \"contracts/WaifInu.sol\":13214:13224 _getRate() */\n jump\t// in\n tag_594:\n /* \"contracts/WaifInu.sol\":13192:13224 uint256 currentRate = _getRate() */\n swap1\n pop\n /* \"contracts/WaifInu.sol\":13234:13252 uint256 rLiquidity */\n 0x00\n /* \"contracts/WaifInu.sol\":13255:13282 tLiquidity.mul(currentRate) */\n tag_595\n /* \"contracts/WaifInu.sol\":13255:13265 tLiquidity */\n dup4\n /* \"contracts/WaifInu.sol\":13192:13224 uint256 currentRate = _getRate() */\n dup4\n /* \"contracts/WaifInu.sol\":13255:13269 tLiquidity.mul */\n tag_215\n /* \"contracts/WaifInu.sol\":13255:13282 tLiquidity.mul(currentRate) */\n jump\t// in\n tag_595:\n /* \"contracts/WaifInu.sol\":13333:13337 this */\n address\n /* \"contracts/WaifInu.sol\":13317:13339 _rOwned[address(this)] */\n 0x00\n swap1\n dup2\n mstore\n /* \"contracts/WaifInu.sol\":13317:13324 _rOwned */\n 0x01\n /* \"contracts/WaifInu.sol\":13317:13339 _rOwned[address(this)] */\n 0x20\n mstore\n 0x40\n swap1\n keccak256\n sload\n /* \"contracts/WaifInu.sol\":13234:13282 uint256 rLiquidity = tLiquidity.mul(currentRate) */\n swap1\n swap2\n pop\n /* \"contracts/WaifInu.sol\":13317:13355 _rOwned[address(this)].add(rLiquidity) */\n tag_596\n swap1\n /* \"contracts/WaifInu.sol\":13234:13282 uint256 rLiquidity = tLiquidity.mul(currentRate) */\n dup3\n /* \"contracts/WaifInu.sol\":13317:13343 _rOwned[address(this)].add */\n tag_284\n /* \"contracts/WaifInu.sol\":13317:13355 _rOwned[address(this)].add(rLiquidity) */\n jump\t// in\n tag_596:\n /* \"contracts/WaifInu.sol\":13308:13312 this */\n address\n /* \"contracts/WaifInu.sol\":13292:13314 _rOwned[address(this)] */\n 0x00\n swap1\n dup2\n mstore\n /* \"contracts/WaifInu.sol\":13292:13299 _rOwned */\n 0x01\n /* \"contracts/WaifInu.sol\":13292:13314 _rOwned[address(this)] */\n 0x20\n swap1\n dup2\n mstore\n 0x40\n dup1\n dup4\n keccak256\n /* \"contracts/WaifInu.sol\":13292:13355 _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity) */\n swap4\n swap1\n swap4\n sstore\n /* \"contracts/WaifInu.sol\":13369:13380 _isExcluded */\n 0x05\n /* \"contracts/WaifInu.sol\":13369:13395 _isExcluded[address(this)] */\n swap1\n mstore\n keccak256\n sload\n 0xff\n and\n /* \"contracts/WaifInu.sol\":13365:13472 if (_isExcluded[address(this)])... */\n iszero\n tag_445\n jumpi\n /* \"contracts/WaifInu.sol\":13450:13454 this */\n address\n /* \"contracts/WaifInu.sol\":13434:13456 _tOwned[address(this)] */\n 0x00\n swap1\n dup2\n mstore\n /* \"contracts/WaifInu.sol\":13434:13441 _tOwned */\n 0x02\n /* \"contracts/WaifInu.sol\":13434:13456 _tOwned[address(this)] */\n 0x20\n mstore\n 0x40\n swap1\n keccak256\n sload\n /* \"contracts/WaifInu.sol\":13434:13472 _tOwned[address(this)].add(tLiquidity) */\n tag_598\n swap1\n /* \"contracts/WaifInu.sol\":13461:13471 tLiquidity */\n dup5\n /* \"contracts/WaifInu.sol\":13434:13460 _tOwned[address(this)].add */\n tag_284\n /* \"contracts/WaifInu.sol\":13434:13472 _tOwned[address(this)].add(tLiquidity) */\n jump\t// in\n tag_598:\n /* \"contracts/WaifInu.sol\":13425:13429 this */\n address\n /* \"contracts/WaifInu.sol\":13409:13431 _tOwned[address(this)] */\n 0x00\n swap1\n dup2\n mstore\n /* \"contracts/WaifInu.sol\":13409:13416 _tOwned */\n 0x02\n /* \"contracts/WaifInu.sol\":13409:13431 _tOwned[address(this)] */\n 0x20\n mstore\n 0x40\n swap1\n keccak256\n /* \"contracts/WaifInu.sol\":13409:13472 _tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity) */\n sstore\n /* \"contracts/WaifInu.sol\":13130:13479 function _takeLiquidity(uint256 tLiquidity) private {... */\n pop\n pop\n pop\n jump\t// out\n /* \"contracts/WaifInu.sol\":13485:14057 function _takeMarketingFee(uint256 tMarketing) private {... */\n tag_551:\n /* \"contracts/WaifInu.sol\":13554:13568 tMarketing > 0 */\n dup1\n iszero\n /* \"contracts/WaifInu.sol\":13550:14051 if (tMarketing > 0) {... */\n tag_224\n jumpi\n /* \"contracts/WaifInu.sol\":13584:13603 uint256 currentRate */\n 0x00\n /* \"contracts/WaifInu.sol\":13606:13616 _getRate() */\n tag_601\n /* \"contracts/WaifInu.sol\":13606:13614 _getRate */\n tag_254\n /* \"contracts/WaifInu.sol\":13606:13616 _getRate() */\n jump\t// in\n tag_601:\n /* \"contracts/WaifInu.sol\":13584:13616 uint256 currentRate = _getRate() */\n swap1\n pop\n /* \"contracts/WaifInu.sol\":13630:13648 uint256 rMarketing */\n 0x00\n /* \"contracts/WaifInu.sol\":13651:13678 tMarketing.mul(currentRate) */\n tag_602\n /* \"contracts/WaifInu.sol\":13651:13661 tMarketing */\n dup4\n /* \"contracts/WaifInu.sol\":13584:13616 uint256 currentRate = _getRate() */\n dup4\n /* \"contracts/WaifInu.sol\":13651:13665 tMarketing.mul */\n tag_215\n /* \"contracts/WaifInu.sol\":13651:13678 tMarketing.mul(currentRate) */\n jump\t// in\n tag_602:\n /* \"contracts/WaifInu.sol\":13729:13746 _marketingAddress */\n and(sub(shl(0xa0, 0x01), 0x01), sload(0x15))\n /* \"contracts/WaifInu.sol\":13721:13747 _rOwned[_marketingAddress] */\n 0x00\n swap1\n dup2\n mstore\n /* \"contracts/WaifInu.sol\":13721:13728 _rOwned */\n 0x01\n /* \"contracts/WaifInu.sol\":13721:13747 _rOwned[_marketingAddress] */\n 0x20\n mstore\n 0x40\n swap1\n keccak256\n sload\n /* \"contracts/WaifInu.sol\":13630:13678 uint256 rMarketing = tMarketing.mul(currentRate) */\n swap1\n swap2\n pop\n /* \"contracts/WaifInu.sol\":13721:13793 _rOwned[_marketingAddress].add(... */\n tag_603\n swap1\n /* \"contracts/WaifInu.sol\":13630:13678 uint256 rMarketing = tMarketing.mul(currentRate) */\n dup3\n /* \"contracts/WaifInu.sol\":13721:13751 _rOwned[_marketingAddress].add */\n tag_284\n /* \"contracts/WaifInu.sol\":13721:13793 _rOwned[_marketingAddress].add(... */\n jump\t// in\n tag_603:\n /* \"contracts/WaifInu.sol\":13700:13717 _marketingAddress */\n 0x15\n dup1\n sload\n sub(shl(0xa0, 0x01), 0x01)\n swap1\n dup2\n and\n /* \"contracts/WaifInu.sol\":13692:13718 _rOwned[_marketingAddress] */\n 0x00\n swap1\n dup2\n mstore\n /* \"contracts/WaifInu.sol\":13692:13699 _rOwned */\n 0x01\n /* \"contracts/WaifInu.sol\":13692:13718 _rOwned[_marketingAddress] */\n 0x20\n swap1\n dup2\n mstore\n 0x40\n dup1\n dup4\n keccak256\n /* \"contracts/WaifInu.sol\":13692:13793 _rOwned[_marketingAddress] = _rOwned[_marketingAddress].add(... */\n swap6\n swap1\n swap6\n sstore\n /* \"contracts/WaifInu.sol\":13823:13840 _marketingAddress */\n swap3\n sload\n swap1\n swap2\n and\n /* \"contracts/WaifInu.sol\":13811:13841 _isExcluded[_marketingAddress] */\n dup2\n mstore\n /* \"contracts/WaifInu.sol\":13811:13822 _isExcluded */\n 0x05\n /* \"contracts/WaifInu.sol\":13811:13841 _isExcluded[_marketingAddress] */\n swap1\n swap2\n mstore\n keccak256\n sload\n 0xff\n and\n /* \"contracts/WaifInu.sol\":13807:13968 if (_isExcluded[_marketingAddress])... */\n iszero\n tag_604\n jumpi\n /* \"contracts/WaifInu.sol\":13896:13913 _marketingAddress */\n and(sub(shl(0xa0, 0x01), 0x01), sload(0x15))\n /* \"contracts/WaifInu.sol\":13888:13914 _tOwned[_marketingAddress] */\n 0x00\n swap1\n dup2\n mstore\n /* \"contracts/WaifInu.sol\":13888:13895 _tOwned */\n 0x02\n /* \"contracts/WaifInu.sol\":13888:13914 _tOwned[_marketingAddress] */\n 0x20\n mstore\n 0x40\n swap1\n keccak256\n sload\n /* \"contracts/WaifInu.sol\":13888:13968 _tOwned[_marketingAddress].add(... */\n tag_605\n swap1\n /* \"contracts/WaifInu.sol\":13940:13950 tMarketing */\n dup5\n /* \"contracts/WaifInu.sol\":13888:13918 _tOwned[_marketingAddress].add */\n tag_284\n /* \"contracts/WaifInu.sol\":13888:13968 _tOwned[_marketingAddress].add(... */\n jump\t// in\n tag_605:\n /* \"contracts/WaifInu.sol\":13867:13884 _marketingAddress */\n and(sub(shl(0xa0, 0x01), 0x01), sload(0x15))\n /* \"contracts/WaifInu.sol\":13859:13885 _tOwned[_marketingAddress] */\n 0x00\n swap1\n dup2\n mstore\n /* \"contracts/WaifInu.sol\":13859:13866 _tOwned */\n 0x02\n /* \"contracts/WaifInu.sol\":13859:13885 _tOwned[_marketingAddress] */\n 0x20\n mstore\n 0x40\n swap1\n keccak256\n /* \"contracts/WaifInu.sol\":13859:13968 _tOwned[_marketingAddress] = _tOwned[_marketingAddress].add(... */\n sstore\n /* \"contracts/WaifInu.sol\":13807:13968 if (_isExcluded[_marketingAddress])... */\n tag_604:\n /* \"contracts/WaifInu.sol\":14010:14027 _marketingAddress */\n and(sub(shl(0xa0, 0x01), 0x01), sload(0x15))\n /* \"contracts/WaifInu.sol\":13996:14008 _msgSender() */\n tag_606\n /* \"contracts/WaifInu.sol\":13996:14006 _msgSender */\n tag_237\n /* \"contracts/WaifInu.sol\":13996:14008 _msgSender() */\n jump\t// in\n tag_606:\n sub(shl(0xa0, 0x01), 0x01)\n /* \"contracts/WaifInu.sol\":13987:14040 Transfer(_msgSender(), _marketingAddress, tMarketing) */\n and\n 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef\n /* \"contracts/WaifInu.sol\":14029:14039 tMarketing */\n dup6\n /* \"contracts/WaifInu.sol\":13987:14040 Transfer(_msgSender(), _marketingAddress, tMarketing) */\n mload(0x40)\n tag_389\n swap2\n swap1\n tag_69\n jump\t// in\n /* \"contracts/WaifInu.sol\":10186:10330 function _reflectFee(uint256 rFee, uint256 tFee) private {... */\n tag_553:\n /* \"contracts/WaifInu.sol\":10263:10270 _rTotal */\n sload(0x08)\n /* \"contracts/WaifInu.sol\":10263:10280 _rTotal.sub(rFee) */\n tag_609\n swap1\n /* \"contracts/WaifInu.sol\":10275:10279 rFee */\n dup4\n /* \"contracts/WaifInu.sol\":10263:10274 _rTotal.sub */\n tag_293\n /* \"contracts/WaifInu.sol\":10263:10280 _rTotal.sub(rFee) */\n jump\t// in\n tag_609:\n /* \"contracts/WaifInu.sol\":10253:10260 _rTotal */\n 0x08\n /* \"contracts/WaifInu.sol\":10253:10280 _rTotal = _rTotal.sub(rFee) */\n sstore\n /* \"contracts/WaifInu.sol\":10303:10313 _tFeeTotal */\n sload(0x09)\n /* \"contracts/WaifInu.sol\":10303:10323 _tFeeTotal.add(tFee) */\n tag_610\n swap1\n /* \"contracts/WaifInu.sol\":10318:10322 tFee */\n dup3\n /* \"contracts/WaifInu.sol\":10303:10317 _tFeeTotal.add */\n tag_284\n /* \"contracts/WaifInu.sol\":10303:10323 _tFeeTotal.add(tFee) */\n jump\t// in\n tag_610:\n /* \"contracts/WaifInu.sol\":10290:10300 _tFeeTotal */\n 0x09\n /* \"contracts/WaifInu.sol\":10290:10323 _tFeeTotal = _tFeeTotal.add(tFee) */\n sstore\n pop\n pop\n /* \"contracts/WaifInu.sol\":10186:10330 function _reflectFee(uint256 rFee, uint256 tFee) private {... */\n jump\t// out\n /* \"#utility.yul\":14:176 */\n tag_612:\n /* \"#utility.yul\":81:101 */\n dup1\n calldataload\n /* \"#utility.yul\":137:150 */\n dup1\n iszero\n /* \"#utility.yul\":130:151 */\n iszero\n /* \"#utility.yul\":120:152 */\n dup2\n eq\n /* \"#utility.yul\":110:112 */\n tag_249\n jumpi\n /* \"#utility.yul\":166:167 */\n 0x00\n /* \"#utility.yul\":163:164 */\n dup1\n /* \"#utility.yul\":156:168 */\n revert\n /* \"#utility.yul\":181:440 */\n tag_102:\n 0x00\n /* \"#utility.yul\":293:295 */\n 0x20\n /* \"#utility.yul\":281:290 */\n dup3\n /* \"#utility.yul\":272:279 */\n dup5\n /* \"#utility.yul\":268:291 */\n sub\n /* \"#utility.yul\":264:296 */\n slt\n /* \"#utility.yul\":261:263 */\n iszero\n tag_616\n jumpi\n /* \"#utility.yul\":314:320 */\n dup1\n /* \"#utility.yul\":306:312 */\n dup2\n /* \"#utility.yul\":299:321 */\n revert\n /* \"#utility.yul\":261:263 */\n tag_616:\n /* \"#utility.yul\":358:367 */\n dup2\n /* \"#utility.yul\":345:368 */\n calldataload\n /* \"#utility.yul\":377:410 */\n tag_370\n /* \"#utility.yul\":404:409 */\n dup2\n /* \"#utility.yul\":377:410 */\n tag_618\n jump\t// in\n /* \"#utility.yul\":445:708 */\n tag_521:\n 0x00\n /* \"#utility.yul\":568:570 */\n 0x20\n /* \"#utility.yul\":556:565 */\n dup3\n /* \"#utility.yul\":547:554 */\n dup5\n /* \"#utility.yul\":543:566 */\n sub\n /* \"#utility.yul\":539:571 */\n slt\n /* \"#utility.yul\":536:538 */\n iszero\n tag_620\n jumpi\n /* \"#utility.yul\":589:595 */\n dup1\n /* \"#utility.yul\":581:587 */\n dup2\n /* \"#utility.yul\":574:596 */\n revert\n /* \"#utility.yul\":536:538 */\n tag_620:\n /* \"#utility.yul\":626:635 */\n dup2\n /* \"#utility.yul\":620:636 */\n mload\n /* \"#utility.yul\":645:678 */\n tag_370\n /* \"#utility.yul\":672:677 */\n dup2\n /* \"#utility.yul\":645:678 */\n tag_618\n jump\t// in\n /* \"#utility.yul\":713:1115 */\n tag_200:\n 0x00\n dup1\n /* \"#utility.yul\":842:844 */\n 0x40\n /* \"#utility.yul\":830:839 */\n dup4\n /* \"#utility.yul\":821:828 */\n dup6\n /* \"#utility.yul\":817:840 */\n sub\n /* \"#utility.yul\":813:845 */\n slt\n /* \"#utility.yul\":810:812 */\n iszero\n tag_623\n jumpi\n /* \"#utility.yul\":863:869 */\n dup1\n /* \"#utility.yul\":855:861 */\n dup2\n /* \"#utility.yul\":848:870 */\n revert\n /* \"#utility.yul\":810:812 */\n tag_623:\n /* \"#utility.yul\":907:916 */\n dup3\n /* \"#utility.yul\":894:917 */\n calldataload\n /* \"#utility.yul\":926:959 */\n tag_624\n /* \"#utility.yul\":953:958 */\n dup2\n /* \"#utility.yul\":926:959 */\n tag_618\n jump\t// in\n tag_624:\n /* \"#utility.yul\":978:983 */\n swap2\n pop\n /* \"#utility.yul\":1035:1037 */\n 0x20\n /* \"#utility.yul\":1020:1038 */\n dup4\n add\n /* \"#utility.yul\":1007:1039 */\n calldataload\n /* \"#utility.yul\":1048:1083 */\n tag_625\n /* \"#utility.yul\":1007:1039 */\n dup2\n /* \"#utility.yul\":1048:1083 */\n tag_618\n jump\t// in\n tag_625:\n /* \"#utility.yul\":1102:1109 */\n dup1\n /* \"#utility.yul\":1092:1109 */\n swap2\n pop\n pop\n /* \"#utility.yul\":800:1115 */\n swap3\n pop\n swap3\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":1120:1590 */\n tag_86:\n 0x00\n dup1\n 0x00\n /* \"#utility.yul\":1266:1268 */\n 0x60\n /* \"#utility.yul\":1254:1263 */\n dup5\n /* \"#utility.yul\":1245:1252 */\n dup7\n /* \"#utility.yul\":1241:1264 */\n sub\n /* \"#utility.yul\":1237:1269 */\n slt\n /* \"#utility.yul\":1234:1236 */\n iszero\n tag_627\n jumpi\n /* \"#utility.yul\":1287:1293 */\n dup1\n /* \"#utility.yul\":1279:1285 */\n dup2\n /* \"#utility.yul\":1272:1294 */\n revert\n /* \"#utility.yul\":1234:1236 */\n tag_627:\n /* \"#utility.yul\":1331:1340 */\n dup4\n /* \"#utility.yul\":1318:1341 */\n calldataload\n /* \"#utility.yul\":1350:1383 */\n tag_628\n /* \"#utility.yul\":1377:1382 */\n dup2\n /* \"#utility.yul\":1350:1383 */\n tag_618\n jump\t// in\n tag_628:\n /* \"#utility.yul\":1402:1407 */\n swap3\n pop\n /* \"#utility.yul\":1459:1461 */\n 0x20\n /* \"#utility.yul\":1444:1462 */\n dup5\n add\n /* \"#utility.yul\":1431:1463 */\n calldataload\n /* \"#utility.yul\":1472:1507 */\n tag_629\n /* \"#utility.yul\":1431:1463 */\n dup2\n /* \"#utility.yul\":1472:1507 */\n tag_618\n jump\t// in\n tag_629:\n /* \"#utility.yul\":1224:1590 */\n swap3\n swap6\n /* \"#utility.yul\":1526:1533 */\n swap3\n swap5\n pop\n pop\n pop\n /* \"#utility.yul\":1580:1582 */\n 0x40\n /* \"#utility.yul\":1565:1583 */\n swap2\n swap1\n swap2\n add\n /* \"#utility.yul\":1552:1584 */\n calldataload\n swap1\n /* \"#utility.yul\":1224:1590 */\n jump\t// out\n /* \"#utility.yul\":1595:1922 */\n tag_61:\n 0x00\n dup1\n /* \"#utility.yul\":1724:1726 */\n 0x40\n /* \"#utility.yul\":1712:1721 */\n dup4\n /* \"#utility.yul\":1703:1710 */\n dup6\n /* \"#utility.yul\":1699:1722 */\n sub\n /* \"#utility.yul\":1695:1727 */\n slt\n /* \"#utility.yul\":1692:1694 */\n iszero\n tag_631\n jumpi\n /* \"#utility.yul\":1745:1751 */\n dup2\n /* \"#utility.yul\":1737:1743 */\n dup3\n /* \"#utility.yul\":1730:1752 */\n revert\n /* \"#utility.yul\":1692:1694 */\n tag_631:\n /* \"#utility.yul\":1789:1798 */\n dup3\n /* \"#utility.yul\":1776:1799 */\n calldataload\n /* \"#utility.yul\":1808:1841 */\n tag_632\n /* \"#utility.yul\":1835:1840 */\n dup2\n /* \"#utility.yul\":1808:1841 */\n tag_618\n jump\t// in\n tag_632:\n /* \"#utility.yul\":1860:1865 */\n swap5\n /* \"#utility.yul\":1912:1914 */\n 0x20\n /* \"#utility.yul\":1897:1915 */\n swap4\n swap1\n swap4\n add\n /* \"#utility.yul\":1884:1916 */\n calldataload\n swap4\n pop\n pop\n pop\n /* \"#utility.yul\":1682:1922 */\n jump\t// out\n /* \"#utility.yul\":1927:2119 */\n tag_191:\n 0x00\n /* \"#utility.yul\":2036:2038 */\n 0x20\n /* \"#utility.yul\":2024:2033 */\n dup3\n /* \"#utility.yul\":2015:2022 */\n dup5\n /* \"#utility.yul\":2011:2034 */\n sub\n /* \"#utility.yul\":2007:2039 */\n slt\n /* \"#utility.yul\":2004:2006 */\n iszero\n tag_634\n jumpi\n /* \"#utility.yul\":2057:2063 */\n dup1\n /* \"#utility.yul\":2049:2055 */\n dup2\n /* \"#utility.yul\":2042:2064 */\n revert\n /* \"#utility.yul\":2004:2006 */\n tag_634:\n /* \"#utility.yul\":2085:2113 */\n tag_370\n /* \"#utility.yul\":2103:2112 */\n dup3\n /* \"#utility.yul\":2085:2113 */\n tag_612\n jump\t// in\n /* \"#utility.yul\":2124:2314 */\n tag_51:\n 0x00\n /* \"#utility.yul\":2236:2238 */\n 0x20\n /* \"#utility.yul\":2224:2233 */\n dup3\n /* \"#utility.yul\":2215:2222 */\n dup5\n /* \"#utility.yul\":2211:2234 */\n sub\n /* \"#utility.yul\":2207:2239 */\n slt\n /* \"#utility.yul\":2204:2206 */\n iszero\n tag_637\n jumpi\n /* \"#utility.yul\":2257:2263 */\n dup1\n /* \"#utility.yul\":2249:2255 */\n dup2\n /* \"#utility.yul\":2242:2264 */\n revert\n /* \"#utility.yul\":2204:2206 */\n tag_637:\n pop\n /* \"#utility.yul\":2285:2308 */\n calldataload\n swap2\n /* \"#utility.yul\":2194:2314 */\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":2319:2579 */\n tag_124:\n 0x00\n dup1\n /* \"#utility.yul\":2445:2447 */\n 0x40\n /* \"#utility.yul\":2433:2442 */\n dup4\n /* \"#utility.yul\":2424:2431 */\n dup6\n /* \"#utility.yul\":2420:2443 */\n sub\n /* \"#utility.yul\":2416:2448 */\n slt\n /* \"#utility.yul\":2413:2415 */\n iszero\n tag_639\n jumpi\n /* \"#utility.yul\":2466:2472 */\n dup2\n /* \"#utility.yul\":2458:2464 */\n dup3\n /* \"#utility.yul\":2451:2473 */\n revert\n /* \"#utility.yul\":2413:2415 */\n tag_639:\n /* \"#utility.yul\":2507:2516 */\n dup3\n /* \"#utility.yul\":2494:2517 */\n calldataload\n /* \"#utility.yul\":2484:2517 */\n swap2\n pop\n /* \"#utility.yul\":2536:2573 */\n tag_640\n /* \"#utility.yul\":2569:2571 */\n 0x20\n /* \"#utility.yul\":2558:2567 */\n dup5\n /* \"#utility.yul\":2554:2572 */\n add\n /* \"#utility.yul\":2536:2573 */\n tag_612\n jump\t// in\n tag_640:\n /* \"#utility.yul\":2526:2573 */\n swap1\n pop\n /* \"#utility.yul\":2403:2579 */\n swap3\n pop\n swap3\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":2584:2900 */\n tag_538:\n 0x00\n dup1\n 0x00\n /* \"#utility.yul\":2741:2743 */\n 0x60\n /* \"#utility.yul\":2729:2738 */\n dup5\n /* \"#utility.yul\":2720:2727 */\n dup7\n /* \"#utility.yul\":2716:2739 */\n sub\n /* \"#utility.yul\":2712:2744 */\n slt\n /* \"#utility.yul\":2709:2711 */\n iszero\n tag_642\n jumpi\n /* \"#utility.yul\":2762:2768 */\n dup3\n /* \"#utility.yul\":2754:2760 */\n dup4\n /* \"#utility.yul\":2747:2769 */\n revert\n /* \"#utility.yul\":2709:2711 */\n tag_642:\n /* \"#utility.yul\":2796:2805 */\n dup4\n /* \"#utility.yul\":2790:2806 */\n mload\n /* \"#utility.yul\":2780:2806 */\n swap3\n pop\n /* \"#utility.yul\":2846:2848 */\n 0x20\n /* \"#utility.yul\":2835:2844 */\n dup5\n /* \"#utility.yul\":2831:2849 */\n add\n /* \"#utility.yul\":2825:2850 */\n mload\n /* \"#utility.yul\":2815:2850 */\n swap2\n pop\n /* \"#utility.yul\":2890:2892 */\n 0x40\n /* \"#utility.yul\":2879:2888 */\n dup5\n /* \"#utility.yul\":2875:2893 */\n add\n /* \"#utility.yul\":2869:2894 */\n mload\n /* \"#utility.yul\":2859:2894 */\n swap1\n pop\n /* \"#utility.yul\":2699:2900 */\n swap3\n pop\n swap3\n pop\n swap3\n jump\t// out\n /* \"#utility.yul\":2905:3108 */\n tag_135:\n sub(shl(0xa0, 0x01), 0x01)\n /* \"#utility.yul\":3069:3101 */\n swap2\n swap1\n swap2\n and\n /* \"#utility.yul\":3051:3102 */\n dup2\n mstore\n /* \"#utility.yul\":3039:3041 */\n 0x20\n /* \"#utility.yul\":3024:3042 */\n add\n swap1\n /* \"#utility.yul\":3006:3108 */\n jump\t// out\n /* \"#utility.yul\":3113:3720 */\n tag_533:\n sub(shl(0xa0, 0x01), 0x01)\n /* \"#utility.yul\":3472:3487 */\n swap7\n dup8\n and\n /* \"#utility.yul\":3454:3488 */\n dup2\n mstore\n /* \"#utility.yul\":3519:3521 */\n 0x20\n /* \"#utility.yul\":3504:3522 */\n dup2\n add\n /* \"#utility.yul\":3497:3531 */\n swap6\n swap1\n swap6\n mstore\n /* \"#utility.yul\":3562:3564 */\n 0x40\n /* \"#utility.yul\":3547:3565 */\n dup6\n add\n /* \"#utility.yul\":3540:3574 */\n swap4\n swap1\n swap4\n mstore\n /* \"#utility.yul\":3605:3607 */\n 0x60\n /* \"#utility.yul\":3590:3608 */\n dup5\n add\n /* \"#utility.yul\":3583:3617 */\n swap2\n swap1\n swap2\n mstore\n /* \"#utility.yul\":3654:3669 */\n swap1\n swap3\n and\n /* \"#utility.yul\":3648:3651 */\n 0x80\n /* \"#utility.yul\":3633:3652 */\n dup3\n add\n /* \"#utility.yul\":3626:3670 */\n mstore\n /* \"#utility.yul\":3434:3437 */\n 0xa0\n /* \"#utility.yul\":3686:3705 */\n dup2\n add\n /* \"#utility.yul\":3679:3714 */\n swap2\n swap1\n swap2\n mstore\n /* \"#utility.yul\":3403:3406 */\n 0xc0\n /* \"#utility.yul\":3388:3407 */\n add\n swap1\n /* \"#utility.yul\":3370:3720 */\n jump\t// out\n /* \"#utility.yul\":3725:3912 */\n tag_64:\n /* \"#utility.yul\":3890:3904 */\n swap1\n iszero\n /* \"#utility.yul\":3883:3905 */\n iszero\n /* \"#utility.yul\":3865:3906 */\n dup2\n mstore\n /* \"#utility.yul\":3853:3855 */\n 0x20\n /* \"#utility.yul\":3838:3856 */\n add\n swap1\n /* \"#utility.yul\":3820:3912 */\n jump\t// out\n /* \"#utility.yul\":4152:4755 */\n tag_57:\n 0x00\n /* \"#utility.yul\":4293:4295 */\n 0x20\n /* \"#utility.yul\":4322:4324 */\n dup1\n /* \"#utility.yul\":4311:4320 */\n dup4\n /* \"#utility.yul\":4304:4325 */\n mstore\n /* \"#utility.yul\":4354:4360 */\n dup4\n /* \"#utility.yul\":4348:4361 */\n mload\n /* \"#utility.yul\":4397:4403 */\n dup1\n /* \"#utility.yul\":4392:4394 */\n dup3\n /* \"#utility.yul\":4381:4390 */\n dup6\n /* \"#utility.yul\":4377:4395 */\n add\n /* \"#utility.yul\":4370:4404 */\n mstore\n /* \"#utility.yul\":4422:4426 */\n dup3\n /* \"#utility.yul\":4435:4575 */\n tag_648:\n /* \"#utility.yul\":4449:4455 */\n dup2\n /* \"#utility.yul\":4446:4447 */\n dup2\n /* \"#utility.yul\":4443:4456 */\n lt\n /* \"#utility.yul\":4435:4575 */\n iszero\n tag_650\n jumpi\n /* \"#utility.yul\":4544:4558 */\n dup6\n dup2\n add\n /* \"#utility.yul\":4540:4563 */\n dup4\n add\n /* \"#utility.yul\":4534:4564 */\n mload\n /* \"#utility.yul\":4510:4527 */\n dup6\n dup3\n add\n /* \"#utility.yul\":4529:4531 */\n 0x40\n /* \"#utility.yul\":4506:4532 */\n add\n /* \"#utility.yul\":4499:4565 */\n mstore\n /* \"#utility.yul\":4464:4474 */\n dup3\n add\n /* \"#utility.yul\":4435:4575 */\n jump(tag_648)\n tag_650:\n /* \"#utility.yul\":4593:4599 */\n dup2\n /* \"#utility.yul\":4590:4591 */\n dup2\n /* \"#utility.yul\":4587:4600 */\n gt\n /* \"#utility.yul\":4584:4586 */\n iszero\n tag_651\n jumpi\n /* \"#utility.yul\":4663:4667 */\n dup4\n /* \"#utility.yul\":4658:4660 */\n 0x40\n /* \"#utility.yul\":4649:4655 */\n dup4\n /* \"#utility.yul\":4638:4647 */\n dup8\n /* \"#utility.yul\":4634:4656 */\n add\n /* \"#utility.yul\":4630:4661 */\n add\n /* \"#utility.yul\":4623:4668 */\n mstore\n /* \"#utility.yul\":4584:4586 */\n tag_651:\n pop\n /* \"#utility.yul\":4739:4741 */\n 0x1f\n /* \"#utility.yul\":4718:4733 */\n add\n not(0x1f)\n /* \"#utility.yul\":4714:4743 */\n and\n /* \"#utility.yul\":4699:4744 */\n swap3\n swap1\n swap3\n add\n /* \"#utility.yul\":4746:4748 */\n 0x40\n /* \"#utility.yul\":4695:4749 */\n add\n swap4\n /* \"#utility.yul\":4273:4755 */\n swap3\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":4760:5159 */\n tag_396:\n /* \"#utility.yul\":4962:4964 */\n 0x20\n /* \"#utility.yul\":4944:4965 */\n dup1\n dup3\n mstore\n /* \"#utility.yul\":5001:5003 */\n 0x23\n /* \"#utility.yul\":4981:4999 */\n swap1\n dup3\n add\n /* \"#utility.yul\":4974:5004 */\n mstore\n /* \"#utility.yul\":5040:5074 */\n 0x45524332303a207472616e7366657220746f20746865207a65726f2061646472\n /* \"#utility.yul\":5035:5037 */\n 0x40\n /* \"#utility.yul\":5020:5038 */\n dup3\n add\n /* \"#utility.yul\":5013:5075 */\n mstore\n shl(0xe8, 0x657373)\n /* \"#utility.yul\":5106:5108 */\n 0x60\n /* \"#utility.y
View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment