Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save christoph2806/c774cc2c00b760832d218ddf0e47cde9 to your computer and use it in GitHub Desktop.
Save christoph2806/c774cc2c00b760832d218ddf0e47cde9 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.0+commit.c7dfd78e.js&optimize=false&runs=200&gist=
// SPDX-License-Identifier: MIT
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() {
_setOwner(_msgSender());
}
/**
* @dev Returns the address of the current owner.
*/
function owner() public view virtual returns (address) {
return _owner;
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
require(owner() == _msgSender(), "Ownable: caller is not the owner");
_;
}
/**
* @dev Leaves the contract without owner. It will not be possible to call
* `onlyOwner` functions anymore. Can only be called by the current owner.
*
* NOTE: Renouncing ownership will leave the contract without an owner,
* thereby removing any functionality that is only available to the owner.
*/
function renounceOwnership() public virtual onlyOwner {
_setOwner(address(0));
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Can only be called by the current owner.
*/
function transferOwnership(address newOwner) public virtual onlyOwner {
require(newOwner != address(0), "Ownable: new owner is the zero address");
_setOwner(newOwner);
}
function _setOwner(address newOwner) private {
address oldOwner = _owner;
_owner = newOwner;
emit OwnershipTransferred(oldOwner, newOwner);
}
}
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import "./IERC20.sol";
import "./extensions/IERC20Metadata.sol";
import "../../utils/Context.sol";
/**
* @dev Implementation of the {IERC20} interface.
*
* This implementation is agnostic to the way tokens are created. This means
* that a supply mechanism has to be added in a derived contract using {_mint}.
* For a generic mechanism see {ERC20PresetMinterPauser}.
*
* TIP: For a detailed writeup see our guide
* https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How
* to implement supply mechanisms].
*
* We have followed general OpenZeppelin Contracts guidelines: functions revert
* instead returning `false` on failure. This behavior is nonetheless
* conventional and does not conflict with the expectations of ERC20
* applications.
*
* Additionally, an {Approval} event is emitted on calls to {transferFrom}.
* This allows applications to reconstruct the allowance for all accounts just
* by listening to said events. Other implementations of the EIP may not emit
* these events, as it isn't required by the specification.
*
* Finally, the non-standard {decreaseAllowance} and {increaseAllowance}
* functions have been added to mitigate the well-known issues around setting
* allowances. See {IERC20-approve}.
*/
contract ERC20 is Context, IERC20, IERC20Metadata {
mapping(address => uint256) private _balances;
mapping(address => mapping(address => uint256)) private _allowances;
uint256 private _totalSupply;
string private _name;
string private _symbol;
/**
* @dev Sets the values for {name} and {symbol}.
*
* The default value of {decimals} is 18. To select a different value for
* {decimals} you should overload it.
*
* All two of these values are immutable: they can only be set once during
* construction.
*/
constructor(string memory name_, string memory symbol_) {
_name = name_;
_symbol = symbol_;
}
/**
* @dev Returns the name of the token.
*/
function name() public view virtual override returns (string memory) {
return _name;
}
/**
* @dev Returns the symbol of the token, usually a shorter version of the
* name.
*/
function symbol() public view virtual override returns (string memory) {
return _symbol;
}
/**
* @dev Returns the number of decimals used to get its user representation.
* For example, if `decimals` equals `2`, a balance of `505` tokens should
* be displayed to a user as `5.05` (`505 / 10 ** 2`).
*
* Tokens usually opt for a value of 18, imitating the relationship between
* Ether and Wei. This is the value {ERC20} uses, unless this function is
* overridden;
*
* NOTE: This information is only used for _display_ purposes: it in
* no way affects any of the arithmetic of the contract, including
* {IERC20-balanceOf} and {IERC20-transfer}.
*/
function decimals() public view virtual override returns (uint8) {
return 18;
}
/**
* @dev See {IERC20-totalSupply}.
*/
function totalSupply() public view virtual override returns (uint256) {
return _totalSupply;
}
/**
* @dev See {IERC20-balanceOf}.
*/
function balanceOf(address account) public view virtual override returns (uint256) {
return _balances[account];
}
/**
* @dev See {IERC20-transfer}.
*
* Requirements:
*
* - `recipient` cannot be the zero address.
* - the caller must have a balance of at least `amount`.
*/
function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
_transfer(_msgSender(), recipient, amount);
return true;
}
/**
* @dev See {IERC20-allowance}.
*/
function allowance(address owner, address spender) public view virtual override returns (uint256) {
return _allowances[owner][spender];
}
/**
* @dev See {IERC20-approve}.
*
* Requirements:
*
* - `spender` cannot be the zero address.
*/
function approve(address spender, uint256 amount) public virtual override returns (bool) {
_approve(_msgSender(), spender, amount);
return true;
}
/**
* @dev See {IERC20-transferFrom}.
*
* Emits an {Approval} event indicating the updated allowance. This is not
* required by the EIP. See the note at the beginning of {ERC20}.
*
* Requirements:
*
* - `sender` and `recipient` cannot be the zero address.
* - `sender` must have a balance of at least `amount`.
* - the caller must have allowance for ``sender``'s tokens of at least
* `amount`.
*/
function transferFrom(
address sender,
address recipient,
uint256 amount
) public virtual override returns (bool) {
_transfer(sender, recipient, amount);
uint256 currentAllowance = _allowances[sender][_msgSender()];
require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
unchecked {
_approve(sender, _msgSender(), currentAllowance - amount);
}
return true;
}
/**
* @dev Atomically increases the allowance granted to `spender` by the caller.
*
* This is an alternative to {approve} that can be used as a mitigation for
* problems described in {IERC20-approve}.
*
* Emits an {Approval} event indicating the updated allowance.
*
* Requirements:
*
* - `spender` cannot be the zero address.
*/
function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
_approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
return true;
}
/**
* @dev Atomically decreases the allowance granted to `spender` by the caller.
*
* This is an alternative to {approve} that can be used as a mitigation for
* problems described in {IERC20-approve}.
*
* Emits an {Approval} event indicating the updated allowance.
*
* Requirements:
*
* - `spender` cannot be the zero address.
* - `spender` must have allowance for the caller of at least
* `subtractedValue`.
*/
function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
uint256 currentAllowance = _allowances[_msgSender()][spender];
require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
unchecked {
_approve(_msgSender(), spender, currentAllowance - subtractedValue);
}
return true;
}
/**
* @dev Moves `amount` of tokens from `sender` to `recipient`.
*
* This internal function is equivalent to {transfer}, and can be used to
* e.g. implement automatic token fees, slashing mechanisms, etc.
*
* Emits a {Transfer} event.
*
* Requirements:
*
* - `sender` cannot be the zero address.
* - `recipient` cannot be the zero address.
* - `sender` must have a balance of at least `amount`.
*/
function _transfer(
address sender,
address recipient,
uint256 amount
) internal virtual {
require(sender != address(0), "ERC20: transfer from the zero address");
require(recipient != address(0), "ERC20: transfer to the zero address");
_beforeTokenTransfer(sender, recipient, amount);
uint256 senderBalance = _balances[sender];
require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
unchecked {
_balances[sender] = senderBalance - amount;
}
_balances[recipient] += amount;
emit Transfer(sender, recipient, amount);
_afterTokenTransfer(sender, recipient, amount);
}
/** @dev Creates `amount` tokens and assigns them to `account`, increasing
* the total supply.
*
* Emits a {Transfer} event with `from` set to the zero address.
*
* Requirements:
*
* - `account` cannot be the zero address.
*/
function _mint(address account, uint256 amount) internal virtual {
require(account != address(0), "ERC20: mint to the zero address");
_beforeTokenTransfer(address(0), account, amount);
_totalSupply += amount;
_balances[account] += amount;
emit Transfer(address(0), account, amount);
_afterTokenTransfer(address(0), account, amount);
}
/**
* @dev Destroys `amount` tokens from `account`, reducing the
* total supply.
*
* Emits a {Transfer} event with `to` set to the zero address.
*
* Requirements:
*
* - `account` cannot be the zero address.
* - `account` must have at least `amount` tokens.
*/
function _burn(address account, uint256 amount) internal virtual {
require(account != address(0), "ERC20: burn from the zero address");
_beforeTokenTransfer(account, address(0), amount);
uint256 accountBalance = _balances[account];
require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
unchecked {
_balances[account] = accountBalance - amount;
}
_totalSupply -= amount;
emit Transfer(account, address(0), amount);
_afterTokenTransfer(account, address(0), amount);
}
/**
* @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
*
* This internal function is equivalent to `approve`, and can be used to
* e.g. set automatic allowances for certain subsystems, etc.
*
* Emits an {Approval} event.
*
* Requirements:
*
* - `owner` cannot be the zero address.
* - `spender` cannot be the zero address.
*/
function _approve(
address owner,
address spender,
uint256 amount
) internal virtual {
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);
}
/**
* @dev Hook that is called before any transfer of tokens. This includes
* minting and burning.
*
* Calling conditions:
*
* - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
* will be transferred to `to`.
* - when `from` is zero, `amount` tokens will be minted for `to`.
* - when `to` is zero, `amount` of ``from``'s tokens will be burned.
* - `from` and `to` are never both zero.
*
* To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
*/
function _beforeTokenTransfer(
address from,
address to,
uint256 amount
) internal virtual {}
/**
* @dev Hook that is called after any transfer of tokens. This includes
* minting and burning.
*
* Calling conditions:
*
* - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
* has been transferred to `to`.
* - when `from` is zero, `amount` tokens have been minted for `to`.
* - when `to` is zero, `amount` of ``from``'s tokens have been burned.
* - `from` and `to` are never both zero.
*
* To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
*/
function _afterTokenTransfer(
address from,
address to,
uint256 amount
) internal virtual {}
}
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import "../IERC20.sol";
/**
* @dev Interface for the optional metadata functions from the ERC20 standard.
*
* _Available since v4.1._
*/
interface IERC20Metadata is IERC20 {
/**
* @dev Returns the name of the token.
*/
function name() external view returns (string memory);
/**
* @dev Returns the symbol of the token.
*/
function symbol() external view returns (string memory);
/**
* @dev Returns the decimals places of the token.
*/
function decimals() external view returns (uint8);
}
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
/**
* @dev Interface of the ERC20 standard as defined in the EIP.
*/
interface IERC20 {
/**
* @dev Returns the amount of tokens in existence.
*/
function totalSupply() external view returns (uint256);
/**
* @dev Returns the amount of tokens owned by `account`.
*/
function balanceOf(address account) external view returns (uint256);
/**
* @dev Moves `amount` tokens from the caller's account to `recipient`.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transfer(address recipient, uint256 amount) external returns (bool);
/**
* @dev Returns the remaining number of tokens that `spender` will be
* allowed to spend on behalf of `owner` through {transferFrom}. This is
* zero by default.
*
* This value changes when {approve} or {transferFrom} are called.
*/
function allowance(address owner, address spender) external view returns (uint256);
/**
* @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* IMPORTANT: Beware that changing an allowance with this method brings the risk
* that someone may use both the old and the new allowance by unfortunate
* transaction ordering. One possible solution to mitigate this race
* condition is to first reduce the spender's allowance to 0 and set the
* desired value afterwards:
* https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
*
* Emits an {Approval} event.
*/
function approve(address spender, uint256 amount) external returns (bool);
/**
* @dev Moves `amount` tokens from `sender` to `recipient` using the
* allowance mechanism. `amount` is then deducted from the caller's
* allowance.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transferFrom(
address sender,
address recipient,
uint256 amount
) external returns (bool);
/**
* @dev Emitted when `value` tokens are moved from one account (`from`) to
* another (`to`).
*
* Note that `value` may be zero.
*/
event Transfer(address indexed from, address indexed to, uint256 value);
/**
* @dev Emitted when the allowance of a `spender` for an `owner` is set by
* a call to {approve}. `value` is the new allowance.
*/
event Approval(address indexed owner, address indexed spender, uint256 value);
}
// SPDX-License-Identifier: MIT
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;
}
}
REMIX EXAMPLE PROJECT
Remix example project is present when Remix loads very first time or there are no files existing in the File Explorer.
It contains 3 directories:
1. 'contracts': Holds three contracts with different complexity level, denoted with number prefix in file name.
2. 'scripts': Holds two scripts to deploy a contract. It is explained below.
3. 'tests': Contains one test file for 'Ballot' contract with unit tests in Solidity.
SCRIPTS
The 'scripts' folder contains example async/await scripts for deploying the 'Storage' contract.
For the deployment of any other contract, 'contractName' and 'constructorArgs' should be updated (along with other code if required).
Scripts have full access to the web3.js and ethers.js libraries.
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.
{
"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:4151:6",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "102:258:6",
"statements": [
{
"nodeType": "YulAssignment",
"src": "112:74:6",
"value": {
"arguments": [
{
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "178:6:6"
}
],
"functionName": {
"name": "array_allocation_size_t_string_memory_ptr",
"nodeType": "YulIdentifier",
"src": "136:41:6"
},
"nodeType": "YulFunctionCall",
"src": "136:49:6"
}
],
"functionName": {
"name": "allocateMemory",
"nodeType": "YulIdentifier",
"src": "121:14:6"
},
"nodeType": "YulFunctionCall",
"src": "121:65:6"
},
"variableNames": [
{
"name": "array",
"nodeType": "YulIdentifier",
"src": "112:5:6"
}
]
},
{
"expression": {
"arguments": [
{
"name": "array",
"nodeType": "YulIdentifier",
"src": "202:5:6"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "209:6:6"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "195:6:6"
},
"nodeType": "YulFunctionCall",
"src": "195:21:6"
},
"nodeType": "YulExpressionStatement",
"src": "195:21:6"
},
{
"nodeType": "YulVariableDeclaration",
"src": "225:27:6",
"value": {
"arguments": [
{
"name": "array",
"nodeType": "YulIdentifier",
"src": "240:5:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "247:4:6",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "236:3:6"
},
"nodeType": "YulFunctionCall",
"src": "236:16:6"
},
"variables": [
{
"name": "dst",
"nodeType": "YulTypedName",
"src": "229:3:6",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "290:16:6",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "299:1:6",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "302:1:6",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "292:6:6"
},
"nodeType": "YulFunctionCall",
"src": "292:12:6"
},
"nodeType": "YulExpressionStatement",
"src": "292:12:6"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "271:3:6"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "276:6:6"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "267:3:6"
},
"nodeType": "YulFunctionCall",
"src": "267:16:6"
},
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "285:3:6"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "264:2:6"
},
"nodeType": "YulFunctionCall",
"src": "264:25:6"
},
"nodeType": "YulIf",
"src": "261:2:6"
},
{
"expression": {
"arguments": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "337:3:6"
},
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "342:3:6"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "347:6:6"
}
],
"functionName": {
"name": "copy_memory_to_memory",
"nodeType": "YulIdentifier",
"src": "315:21:6"
},
"nodeType": "YulFunctionCall",
"src": "315:39:6"
},
"nodeType": "YulExpressionStatement",
"src": "315:39:6"
}
]
},
"name": "abi_decode_available_length_t_string_memory_ptr_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "src",
"nodeType": "YulTypedName",
"src": "75:3:6",
"type": ""
},
{
"name": "length",
"nodeType": "YulTypedName",
"src": "80:6:6",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "88:3:6",
"type": ""
}
],
"returnVariables": [
{
"name": "array",
"nodeType": "YulTypedName",
"src": "96:5:6",
"type": ""
}
],
"src": "7:353:6"
},
{
"body": {
"nodeType": "YulBlock",
"src": "429:80:6",
"statements": [
{
"nodeType": "YulAssignment",
"src": "439:22:6",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "454:6:6"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "448:5:6"
},
"nodeType": "YulFunctionCall",
"src": "448:13:6"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "439:5:6"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "497:5:6"
}
],
"functionName": {
"name": "validator_revert_t_address",
"nodeType": "YulIdentifier",
"src": "470:26:6"
},
"nodeType": "YulFunctionCall",
"src": "470:33:6"
},
"nodeType": "YulExpressionStatement",
"src": "470:33:6"
}
]
},
"name": "abi_decode_t_address_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "407:6:6",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "415:3:6",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "423:5:6",
"type": ""
}
],
"src": "366:143:6"
},
{
"body": {
"nodeType": "YulBlock",
"src": "602:215:6",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "651:16:6",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "660:1:6",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "663:1:6",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "653:6:6"
},
"nodeType": "YulFunctionCall",
"src": "653:12:6"
},
"nodeType": "YulExpressionStatement",
"src": "653:12:6"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "630:6:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "638:4:6",
"type": "",
"value": "0x1f"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "626:3:6"
},
"nodeType": "YulFunctionCall",
"src": "626:17:6"
},
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "645:3:6"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "622:3:6"
},
"nodeType": "YulFunctionCall",
"src": "622:27:6"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "615:6:6"
},
"nodeType": "YulFunctionCall",
"src": "615:35:6"
},
"nodeType": "YulIf",
"src": "612:2:6"
},
{
"nodeType": "YulVariableDeclaration",
"src": "676:27:6",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "696:6:6"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "690:5:6"
},
"nodeType": "YulFunctionCall",
"src": "690:13:6"
},
"variables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "680:6:6",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "712:99:6",
"value": {
"arguments": [
{
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "784:6:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "792:4:6",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "780:3:6"
},
"nodeType": "YulFunctionCall",
"src": "780:17:6"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "799:6:6"
},
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "807:3:6"
}
],
"functionName": {
"name": "abi_decode_available_length_t_string_memory_ptr_fromMemory",
"nodeType": "YulIdentifier",
"src": "721:58:6"
},
"nodeType": "YulFunctionCall",
"src": "721:90:6"
},
"variableNames": [
{
"name": "array",
"nodeType": "YulIdentifier",
"src": "712:5:6"
}
]
}
]
},
"name": "abi_decode_t_string_memory_ptr_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "580:6:6",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "588:3:6",
"type": ""
}
],
"returnVariables": [
{
"name": "array",
"nodeType": "YulTypedName",
"src": "596:5:6",
"type": ""
}
],
"src": "529:288:6"
},
{
"body": {
"nodeType": "YulBlock",
"src": "886:80:6",
"statements": [
{
"nodeType": "YulAssignment",
"src": "896:22:6",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "911:6:6"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "905:5:6"
},
"nodeType": "YulFunctionCall",
"src": "905:13:6"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "896:5:6"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "954:5:6"
}
],
"functionName": {
"name": "validator_revert_t_uint256",
"nodeType": "YulIdentifier",
"src": "927:26:6"
},
"nodeType": "YulFunctionCall",
"src": "927:33:6"
},
"nodeType": "YulExpressionStatement",
"src": "927:33:6"
}
]
},
"name": "abi_decode_t_uint256_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "864:6:6",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "872:3:6",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "880:5:6",
"type": ""
}
],
"src": "823:143:6"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1120:817:6",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "1167:16:6",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1176:1:6",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1179:1:6",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "1169:6:6"
},
"nodeType": "YulFunctionCall",
"src": "1169:12:6"
},
"nodeType": "YulExpressionStatement",
"src": "1169:12:6"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "1141:7:6"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1150:9:6"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "1137:3:6"
},
"nodeType": "YulFunctionCall",
"src": "1137:23:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1162:3:6",
"type": "",
"value": "128"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "1133:3:6"
},
"nodeType": "YulFunctionCall",
"src": "1133:33:6"
},
"nodeType": "YulIf",
"src": "1130:2:6"
},
{
"nodeType": "YulBlock",
"src": "1193:224:6",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "1208:38:6",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1232:9:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1243:1:6",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1228:3:6"
},
"nodeType": "YulFunctionCall",
"src": "1228:17:6"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "1222:5:6"
},
"nodeType": "YulFunctionCall",
"src": "1222:24:6"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "1212:6:6",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "1293:16:6",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1302:1:6",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1305:1:6",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "1295:6:6"
},
"nodeType": "YulFunctionCall",
"src": "1295:12:6"
},
"nodeType": "YulExpressionStatement",
"src": "1295:12:6"
}
]
},
"condition": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "1265:6:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1273:18:6",
"type": "",
"value": "0xffffffffffffffff"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "1262:2:6"
},
"nodeType": "YulFunctionCall",
"src": "1262:30:6"
},
"nodeType": "YulIf",
"src": "1259:2:6"
},
{
"nodeType": "YulAssignment",
"src": "1323:84:6",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1379:9:6"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "1390:6:6"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1375:3:6"
},
"nodeType": "YulFunctionCall",
"src": "1375:22:6"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "1399:7:6"
}
],
"functionName": {
"name": "abi_decode_t_string_memory_ptr_fromMemory",
"nodeType": "YulIdentifier",
"src": "1333:41:6"
},
"nodeType": "YulFunctionCall",
"src": "1333:74:6"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "1323:6:6"
}
]
}
]
},
{
"nodeType": "YulBlock",
"src": "1427:225:6",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "1442:39:6",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1466:9:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1477:2:6",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1462:3:6"
},
"nodeType": "YulFunctionCall",
"src": "1462:18:6"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "1456:5:6"
},
"nodeType": "YulFunctionCall",
"src": "1456:25:6"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "1446:6:6",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "1528:16:6",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1537:1:6",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1540:1:6",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "1530:6:6"
},
"nodeType": "YulFunctionCall",
"src": "1530:12:6"
},
"nodeType": "YulExpressionStatement",
"src": "1530:12:6"
}
]
},
"condition": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "1500:6:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1508:18:6",
"type": "",
"value": "0xffffffffffffffff"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "1497:2:6"
},
"nodeType": "YulFunctionCall",
"src": "1497:30:6"
},
"nodeType": "YulIf",
"src": "1494:2:6"
},
{
"nodeType": "YulAssignment",
"src": "1558:84:6",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1614:9:6"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "1625:6:6"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1610:3:6"
},
"nodeType": "YulFunctionCall",
"src": "1610:22:6"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "1634:7:6"
}
],
"functionName": {
"name": "abi_decode_t_string_memory_ptr_fromMemory",
"nodeType": "YulIdentifier",
"src": "1568:41:6"
},
"nodeType": "YulFunctionCall",
"src": "1568:74:6"
},
"variableNames": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "1558:6:6"
}
]
}
]
},
{
"nodeType": "YulBlock",
"src": "1662:129:6",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "1677:16:6",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "1691:2:6",
"type": "",
"value": "64"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "1681:6:6",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "1707:74:6",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1753:9:6"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "1764:6:6"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1749:3:6"
},
"nodeType": "YulFunctionCall",
"src": "1749:22:6"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "1773:7:6"
}
],
"functionName": {
"name": "abi_decode_t_address_fromMemory",
"nodeType": "YulIdentifier",
"src": "1717:31:6"
},
"nodeType": "YulFunctionCall",
"src": "1717:64:6"
},
"variableNames": [
{
"name": "value2",
"nodeType": "YulIdentifier",
"src": "1707:6:6"
}
]
}
]
},
{
"nodeType": "YulBlock",
"src": "1801:129:6",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "1816:16:6",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "1830:2:6",
"type": "",
"value": "96"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "1820:6:6",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "1846:74:6",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1892:9:6"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "1903:6:6"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1888:3:6"
},
"nodeType": "YulFunctionCall",
"src": "1888:22:6"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "1912:7:6"
}
],
"functionName": {
"name": "abi_decode_t_uint256_fromMemory",
"nodeType": "YulIdentifier",
"src": "1856:31:6"
},
"nodeType": "YulFunctionCall",
"src": "1856:64:6"
},
"variableNames": [
{
"name": "value3",
"nodeType": "YulIdentifier",
"src": "1846:6:6"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_string_memory_ptrt_string_memory_ptrt_addresst_uint256_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "1066:9:6",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "1077:7:6",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "1089:6:6",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "1097:6:6",
"type": ""
},
{
"name": "value2",
"nodeType": "YulTypedName",
"src": "1105:6:6",
"type": ""
},
{
"name": "value3",
"nodeType": "YulTypedName",
"src": "1113:6:6",
"type": ""
}
],
"src": "972:965:6"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1983:243:6",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1993:19:6",
"value": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2009:2:6",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "2003:5:6"
},
"nodeType": "YulFunctionCall",
"src": "2003:9:6"
},
"variableNames": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "1993:6:6"
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "2021:35:6",
"value": {
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "2043:6:6"
},
{
"name": "size",
"nodeType": "YulIdentifier",
"src": "2051:4:6"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2039:3:6"
},
"nodeType": "YulFunctionCall",
"src": "2039:17:6"
},
"variables": [
{
"name": "newFreePtr",
"nodeType": "YulTypedName",
"src": "2025:10:6",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "2167:22:6",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x41",
"nodeType": "YulIdentifier",
"src": "2169:16:6"
},
"nodeType": "YulFunctionCall",
"src": "2169:18:6"
},
"nodeType": "YulExpressionStatement",
"src": "2169:18:6"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "newFreePtr",
"nodeType": "YulIdentifier",
"src": "2110:10:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2122:18:6",
"type": "",
"value": "0xffffffffffffffff"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "2107:2:6"
},
"nodeType": "YulFunctionCall",
"src": "2107:34:6"
},
{
"arguments": [
{
"name": "newFreePtr",
"nodeType": "YulIdentifier",
"src": "2146:10:6"
},
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "2158:6:6"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "2143:2:6"
},
"nodeType": "YulFunctionCall",
"src": "2143:22:6"
}
],
"functionName": {
"name": "or",
"nodeType": "YulIdentifier",
"src": "2104:2:6"
},
"nodeType": "YulFunctionCall",
"src": "2104:62:6"
},
"nodeType": "YulIf",
"src": "2101:2:6"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2205:2:6",
"type": "",
"value": "64"
},
{
"name": "newFreePtr",
"nodeType": "YulIdentifier",
"src": "2209:10:6"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "2198:6:6"
},
"nodeType": "YulFunctionCall",
"src": "2198:22:6"
},
"nodeType": "YulExpressionStatement",
"src": "2198:22:6"
}
]
},
"name": "allocateMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "size",
"nodeType": "YulTypedName",
"src": "1967:4:6",
"type": ""
}
],
"returnVariables": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "1976:6:6",
"type": ""
}
],
"src": "1943:283:6"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2299:265:6",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "2404:22:6",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x41",
"nodeType": "YulIdentifier",
"src": "2406:16:6"
},
"nodeType": "YulFunctionCall",
"src": "2406:18:6"
},
"nodeType": "YulExpressionStatement",
"src": "2406:18:6"
}
]
},
"condition": {
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "2376:6:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2384:18:6",
"type": "",
"value": "0xffffffffffffffff"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "2373:2:6"
},
"nodeType": "YulFunctionCall",
"src": "2373:30:6"
},
"nodeType": "YulIf",
"src": "2370:2:6"
},
{
"nodeType": "YulAssignment",
"src": "2456:41:6",
"value": {
"arguments": [
{
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "2472:6:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2480:4:6",
"type": "",
"value": "0x1f"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2468:3:6"
},
"nodeType": "YulFunctionCall",
"src": "2468:17:6"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2491:4:6",
"type": "",
"value": "0x1f"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "2487:3:6"
},
"nodeType": "YulFunctionCall",
"src": "2487:9:6"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "2464:3:6"
},
"nodeType": "YulFunctionCall",
"src": "2464:33:6"
},
"variableNames": [
{
"name": "size",
"nodeType": "YulIdentifier",
"src": "2456:4:6"
}
]
},
{
"nodeType": "YulAssignment",
"src": "2534:23:6",
"value": {
"arguments": [
{
"name": "size",
"nodeType": "YulIdentifier",
"src": "2546:4:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2552:4:6",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2542:3:6"
},
"nodeType": "YulFunctionCall",
"src": "2542:15:6"
},
"variableNames": [
{
"name": "size",
"nodeType": "YulIdentifier",
"src": "2534:4:6"
}
]
}
]
},
"name": "array_allocation_size_t_string_memory_ptr",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "2283:6:6",
"type": ""
}
],
"returnVariables": [
{
"name": "size",
"nodeType": "YulTypedName",
"src": "2294:4:6",
"type": ""
}
],
"src": "2232:332:6"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2615:51:6",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2625:35:6",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "2654:5:6"
}
],
"functionName": {
"name": "cleanup_t_uint160",
"nodeType": "YulIdentifier",
"src": "2636:17:6"
},
"nodeType": "YulFunctionCall",
"src": "2636:24:6"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "2625:7:6"
}
]
}
]
},
"name": "cleanup_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "2597:5:6",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "2607:7:6",
"type": ""
}
],
"src": "2570:96:6"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2717:81:6",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2727:65:6",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "2742:5:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2749:42:6",
"type": "",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "2738:3:6"
},
"nodeType": "YulFunctionCall",
"src": "2738:54:6"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "2727:7:6"
}
]
}
]
},
"name": "cleanup_t_uint160",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "2699:5:6",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "2709:7:6",
"type": ""
}
],
"src": "2672:126:6"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2849:32:6",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2859:16:6",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "2870:5:6"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "2859:7:6"
}
]
}
]
},
"name": "cleanup_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "2831:5:6",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "2841:7:6",
"type": ""
}
],
"src": "2804:77:6"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2936:258:6",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "2946:10:6",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "2955:1:6",
"type": "",
"value": "0"
},
"variables": [
{
"name": "i",
"nodeType": "YulTypedName",
"src": "2950:1:6",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "3015:63:6",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "3040:3:6"
},
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "3045:1:6"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3036:3:6"
},
"nodeType": "YulFunctionCall",
"src": "3036:11:6"
},
{
"arguments": [
{
"arguments": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "3059:3:6"
},
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "3064:1:6"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3055:3:6"
},
"nodeType": "YulFunctionCall",
"src": "3055:11:6"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "3049:5:6"
},
"nodeType": "YulFunctionCall",
"src": "3049:18:6"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3029:6:6"
},
"nodeType": "YulFunctionCall",
"src": "3029:39:6"
},
"nodeType": "YulExpressionStatement",
"src": "3029:39:6"
}
]
},
"condition": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "2976:1:6"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "2979:6:6"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "2973:2:6"
},
"nodeType": "YulFunctionCall",
"src": "2973:13:6"
},
"nodeType": "YulForLoop",
"post": {
"nodeType": "YulBlock",
"src": "2987:19:6",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2989:15:6",
"value": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "2998:1:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3001:2:6",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2994:3:6"
},
"nodeType": "YulFunctionCall",
"src": "2994:10:6"
},
"variableNames": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "2989:1:6"
}
]
}
]
},
"pre": {
"nodeType": "YulBlock",
"src": "2969:3:6",
"statements": []
},
"src": "2965:113:6"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3112:76:6",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "3162:3:6"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "3167:6:6"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3158:3:6"
},
"nodeType": "YulFunctionCall",
"src": "3158:16:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3176:1:6",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3151:6:6"
},
"nodeType": "YulFunctionCall",
"src": "3151:27:6"
},
"nodeType": "YulExpressionStatement",
"src": "3151:27:6"
}
]
},
"condition": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "3093:1:6"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "3096:6:6"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "3090:2:6"
},
"nodeType": "YulFunctionCall",
"src": "3090:13:6"
},
"nodeType": "YulIf",
"src": "3087:2:6"
}
]
},
"name": "copy_memory_to_memory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "src",
"nodeType": "YulTypedName",
"src": "2918:3:6",
"type": ""
},
{
"name": "dst",
"nodeType": "YulTypedName",
"src": "2923:3:6",
"type": ""
},
{
"name": "length",
"nodeType": "YulTypedName",
"src": "2928:6:6",
"type": ""
}
],
"src": "2887:307:6"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3251:269:6",
"statements": [
{
"nodeType": "YulAssignment",
"src": "3261:22:6",
"value": {
"arguments": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "3275:4:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3281:1:6",
"type": "",
"value": "2"
}
],
"functionName": {
"name": "div",
"nodeType": "YulIdentifier",
"src": "3271:3:6"
},
"nodeType": "YulFunctionCall",
"src": "3271:12:6"
},
"variableNames": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "3261:6:6"
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "3292:38:6",
"value": {
"arguments": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "3322:4:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3328:1:6",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "3318:3:6"
},
"nodeType": "YulFunctionCall",
"src": "3318:12:6"
},
"variables": [
{
"name": "outOfPlaceEncoding",
"nodeType": "YulTypedName",
"src": "3296:18:6",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "3369:51:6",
"statements": [
{
"nodeType": "YulAssignment",
"src": "3383:27:6",
"value": {
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "3397:6:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3405:4:6",
"type": "",
"value": "0x7f"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "3393:3:6"
},
"nodeType": "YulFunctionCall",
"src": "3393:17:6"
},
"variableNames": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "3383:6:6"
}
]
}
]
},
"condition": {
"arguments": [
{
"name": "outOfPlaceEncoding",
"nodeType": "YulIdentifier",
"src": "3349:18:6"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "3342:6:6"
},
"nodeType": "YulFunctionCall",
"src": "3342:26:6"
},
"nodeType": "YulIf",
"src": "3339:2:6"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3472:42:6",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x22",
"nodeType": "YulIdentifier",
"src": "3486:16:6"
},
"nodeType": "YulFunctionCall",
"src": "3486:18:6"
},
"nodeType": "YulExpressionStatement",
"src": "3486:18:6"
}
]
},
"condition": {
"arguments": [
{
"name": "outOfPlaceEncoding",
"nodeType": "YulIdentifier",
"src": "3436:18:6"
},
{
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "3459:6:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3467:2:6",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "3456:2:6"
},
"nodeType": "YulFunctionCall",
"src": "3456:14:6"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "3433:2:6"
},
"nodeType": "YulFunctionCall",
"src": "3433:38:6"
},
"nodeType": "YulIf",
"src": "3430:2:6"
}
]
},
"name": "extract_byte_array_length",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "data",
"nodeType": "YulTypedName",
"src": "3235:4:6",
"type": ""
}
],
"returnVariables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "3244:6:6",
"type": ""
}
],
"src": "3200:320:6"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3554:152:6",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3571:1:6",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3574:77:6",
"type": "",
"value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3564:6:6"
},
"nodeType": "YulFunctionCall",
"src": "3564:88:6"
},
"nodeType": "YulExpressionStatement",
"src": "3564:88:6"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3668:1:6",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3671:4:6",
"type": "",
"value": "0x22"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3661:6:6"
},
"nodeType": "YulFunctionCall",
"src": "3661:15:6"
},
"nodeType": "YulExpressionStatement",
"src": "3661:15:6"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3692:1:6",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3695:4:6",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "3685:6:6"
},
"nodeType": "YulFunctionCall",
"src": "3685:15:6"
},
"nodeType": "YulExpressionStatement",
"src": "3685:15:6"
}
]
},
"name": "panic_error_0x22",
"nodeType": "YulFunctionDefinition",
"src": "3526:180:6"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3740:152:6",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3757:1:6",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3760:77:6",
"type": "",
"value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3750:6:6"
},
"nodeType": "YulFunctionCall",
"src": "3750:88:6"
},
"nodeType": "YulExpressionStatement",
"src": "3750:88:6"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3854:1:6",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3857:4:6",
"type": "",
"value": "0x41"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3847:6:6"
},
"nodeType": "YulFunctionCall",
"src": "3847:15:6"
},
"nodeType": "YulExpressionStatement",
"src": "3847:15:6"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3878:1:6",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3881:4:6",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "3871:6:6"
},
"nodeType": "YulFunctionCall",
"src": "3871:15:6"
},
"nodeType": "YulExpressionStatement",
"src": "3871:15:6"
}
]
},
"name": "panic_error_0x41",
"nodeType": "YulFunctionDefinition",
"src": "3712:180:6"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3941:79:6",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "3998:16:6",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4007:1:6",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4010:1:6",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "4000:6:6"
},
"nodeType": "YulFunctionCall",
"src": "4000:12:6"
},
"nodeType": "YulExpressionStatement",
"src": "4000:12:6"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "3964:5:6"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "3989:5:6"
}
],
"functionName": {
"name": "cleanup_t_address",
"nodeType": "YulIdentifier",
"src": "3971:17:6"
},
"nodeType": "YulFunctionCall",
"src": "3971:24:6"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "3961:2:6"
},
"nodeType": "YulFunctionCall",
"src": "3961:35:6"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "3954:6:6"
},
"nodeType": "YulFunctionCall",
"src": "3954:43:6"
},
"nodeType": "YulIf",
"src": "3951:2:6"
}
]
},
"name": "validator_revert_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "3934:5:6",
"type": ""
}
],
"src": "3898:122:6"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4069:79:6",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "4126:16:6",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4135:1:6",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4138:1:6",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "4128:6:6"
},
"nodeType": "YulFunctionCall",
"src": "4128:12:6"
},
"nodeType": "YulExpressionStatement",
"src": "4128:12:6"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "4092:5:6"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "4117:5:6"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "4099:17:6"
},
"nodeType": "YulFunctionCall",
"src": "4099:24:6"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "4089:2:6"
},
"nodeType": "YulFunctionCall",
"src": "4089:35:6"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "4082:6:6"
},
"nodeType": "YulFunctionCall",
"src": "4082:43:6"
},
"nodeType": "YulIf",
"src": "4079:2:6"
}
]
},
"name": "validator_revert_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "4062:5:6",
"type": ""
}
],
"src": "4026:122:6"
}
]
},
"contents": "{\n\n function abi_decode_available_length_t_string_memory_ptr_fromMemory(src, length, end) -> array {\n array := allocateMemory(array_allocation_size_t_string_memory_ptr(length))\n mstore(array, length)\n let dst := add(array, 0x20)\n if gt(add(src, length), end) { revert(0, 0) }\n copy_memory_to_memory(src, dst, length)\n }\n\n function abi_decode_t_address_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_address(value)\n }\n\n // string\n function abi_decode_t_string_memory_ptr_fromMemory(offset, end) -> array {\n if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n let length := mload(offset)\n array := abi_decode_available_length_t_string_memory_ptr_fromMemory(add(offset, 0x20), length, end)\n }\n\n function abi_decode_t_uint256_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_uint256(value)\n }\n\n function abi_decode_tuple_t_string_memory_ptrt_string_memory_ptrt_addresst_uint256_fromMemory(headStart, dataEnd) -> value0, value1, value2, value3 {\n if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n\n {\n\n let offset := mload(add(headStart, 0))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n\n value0 := abi_decode_t_string_memory_ptr_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := mload(add(headStart, 32))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n\n value1 := abi_decode_t_string_memory_ptr_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_address_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 96\n\n value3 := abi_decode_t_uint256_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function allocateMemory(size) -> memPtr {\n memPtr := mload(64)\n let newFreePtr := add(memPtr, size)\n // protect against overflow\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n }\n\n function array_allocation_size_t_string_memory_ptr(length) -> size {\n // Make sure we can allocate memory without overflow\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n\n // round up\n size := and(add(length, 0x1f), not(0x1f))\n\n // add length slot\n size := add(size, 0x20)\n\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function copy_memory_to_memory(src, dst, length) {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n if gt(i, length)\n {\n // clear end\n mstore(add(dst, length), 0)\n }\n }\n\n function extract_byte_array_length(data) -> length {\n length := div(data, 2)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) {\n length := and(length, 0x7f)\n }\n\n if eq(outOfPlaceEncoding, lt(length, 32)) {\n panic_error_0x22()\n }\n }\n\n function panic_error_0x22() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n\n function panic_error_0x41() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n\n function validator_revert_t_address(value) {\n if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n }\n\n function validator_revert_t_uint256(value) {\n if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n }\n\n}\n",
"id": 6,
"language": "Yul",
"name": "#utility.yul"
}
],
"linkReferences": {},
"object": "60806040523480156200001157600080fd5b5060405162003ea238038062003ea28339818101604052810190620000379190620002fd565b8383816003908051906020019062000051929190620001ad565b5080600490805190602001906200006a929190620001ad565b5050506200008d62000081620000df60201b60201c565b620000e760201b60201c565b81600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600e81905550505050506200053e565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b828054620001bb9062000476565b90600052602060002090601f016020900481019282620001df57600085556200022b565b82601f10620001fa57805160ff19168380011785556200022b565b828001600101855582156200022b579182015b828111156200022a5782518255916020019190600101906200020d565b5b5090506200023a91906200023e565b5090565b5b80821115620002595760008160009055506001016200023f565b5090565b6000620002746200026e84620003cf565b6200039b565b9050828152602081018484840111156200028d57600080fd5b6200029a84828562000440565b509392505050565b600081519050620002b3816200050a565b92915050565b600082601f830112620002cb57600080fd5b8151620002dd8482602086016200025d565b91505092915050565b600081519050620002f78162000524565b92915050565b600080600080608085870312156200031457600080fd5b600085015167ffffffffffffffff8111156200032f57600080fd5b6200033d87828801620002b9565b945050602085015167ffffffffffffffff8111156200035b57600080fd5b6200036987828801620002b9565b93505060406200037c87828801620002a2565b92505060606200038f87828801620002e6565b91505092959194509250565b6000604051905081810181811067ffffffffffffffff82111715620003c557620003c4620004db565b5b8060405250919050565b600067ffffffffffffffff821115620003ed57620003ec620004db565b5b601f19601f8301169050602081019050919050565b60006200040f8262000416565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b838110156200046057808201518184015260208101905062000443565b8381111562000470576000848401525b50505050565b600060028204905060018216806200048f57607f821691505b60208210811415620004a657620004a5620004ac565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b620005158162000402565b81146200052157600080fd5b50565b6200052f8162000436565b81146200053b57600080fd5b50565b613954806200054e6000396000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c8063715018a6116100f9578063b6b55f2511610097578063d3e8948311610071578063d3e8948314610534578063dd62ed3e14610567578063e115234314610597578063f2fde38b146105b3576101c4565b8063b6b55f25146104af578063bc6a09d8146104cb578063c6b61e4c146104fb576101c4565b806395d89b41116100d357806395d89b4114610415578063986bce2c14610433578063a457c2d71461044f578063a9059cbb1461047f576101c4565b8063715018a6146103bd5780638ae2dc94146103c75780638da5cb5b146103f7576101c4565b80633037e4cd116101665780633950935111610140578063395093511461031157806366e5ba52146103415780636e739c811461035d57806370a082311461038d576101c4565b80633037e4cd146102bb578063313ce567146102d7578063366a4120146102f5576101c4565b806323b872dd116101a257806323b872dd1461023557806328d36a83146102655780632aea118d146102835780632e1a7d4d1461029f576101c4565b806306fdde03146101c9578063095ea7b3146101e757806318160ddd14610217575b600080fd5b6101d16105cf565b6040516101de9190613310565b60405180910390f35b61020160048036038101906101fc9190612a72565b610661565b60405161020e919061323e565b60405180910390f35b61021f61067f565b60405161022c9190613512565b60405180910390f35b61024f600480360381019061024a9190612a23565b610689565b60405161025c919061323e565b60405180910390f35b61026d610781565b60405161027a91906132f5565b60405180910390f35b61029d60048036038101906102989190612ad7565b6107a7565b005b6102b960048036038101906102b49190612ad7565b610a8a565b005b6102d560048036038101906102d09190612ad7565b610c8e565b005b6102df610cd3565b6040516102ec91906135a9565b60405180910390f35b61030f600480360381019061030a9190612b3c565b610cdc565b005b61032b60048036038101906103269190612a72565b610ec3565b604051610338919061323e565b60405180910390f35b61035b60048036038101906103569190612b00565b610f6f565b005b610377600480360381019061037291906129be565b610ff9565b6040516103849190613512565b60405180910390f35b6103a760048036038101906103a291906129be565b611011565b6040516103b49190613512565b60405180910390f35b6103c5611059565b005b6103e160048036038101906103dc9190612b3c565b6110e1565b6040516103ee9190613512565b60405180910390f35b6103ff611318565b60405161040c9190613147565b60405180910390f35b61041d611342565b60405161042a9190613310565b60405180910390f35b61044d60048036038101906104489190612ad7565b6113d4565b005b61046960048036038101906104649190612a72565b6113e2565b604051610476919061323e565b60405180910390f35b61049960048036038101906104949190612a72565b6114cd565b6040516104a6919061323e565b60405180910390f35b6104c960048036038101906104c49190612ad7565b6114eb565b005b6104e560048036038101906104e09190612a72565b6116c0565b6040516104f29190613512565b60405180910390f35b61051560048036038101906105109190612ad7565b6116f1565b60405161052b9a99989796959493929190613259565b60405180910390f35b61054e60048036038101906105499190612ad7565b611762565b60405161055e9493929190613564565b60405180910390f35b610581600480360381019061057c91906129e7565b6117af565b60405161058e9190613512565b60405180910390f35b6105b160048036038101906105ac9190612ad7565b611836565b005b6105cd60048036038101906105c891906129be565b611b28565b005b6060600380546105de906137c6565b80601f016020809104026020016040519081016040528092919081815260200182805461060a906137c6565b80156106575780601f1061062c57610100808354040283529160200191610657565b820191906000526020600020905b81548152906001019060200180831161063a57829003601f168201915b5050505050905090565b600061067561066e611c20565b8484611c28565b6001905092915050565b6000600254905090565b6000610696848484611df3565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006106e1611c20565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610761576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075890613412565b60405180910390fd5b6107758561076d611c20565b858403611c28565b60019150509392505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160038111156107e1577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6008828154811061081b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020906004020160030160009054906101000a900460ff166003811115610872577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b146108b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a9906133b2565b60405180910390fd5b6000600882815481106108ee577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000209060040201600001549050600e5481600c5461091391906136c1565b11156109275761092282610c8e565b610a86565b600060088381548110610963577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020906004020160010154905080600d54101561098757600d5490505b6109918282612074565b80600783815481106109cc577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002090600a020160090160008282546109ec91906135e0565b925050819055506109fe83600261210e565b7f3921e771bed0bd3a8859d908e5e31888903b50d5b8ec0004c08c71920343431a8360088581548110610a5a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002090600402016001015483604051610a7c9392919061352d565b60405180910390a1505b5050565b6000600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600081610ada33611011565b610ae491906136c1565b905080831115610af2578092505b6000831115610c505782600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600c5481548110610b75577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020016000828254610b8e91906135e0565b9250508190555082600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610be491906135e0565b92505081905550826007600c5481548110610c28577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002090600a02016004016000828254610c4891906135e0565b925050819055505b7fb4214c8c54fc7442f36d3682f59aebaf09358a4431835b30efb29d52cf9e1e913384604051610c81929190613199565b60405180910390a1505050565b610c9981600361210e565b7f08b74d3cccbcb3894ccc99c3a75f6a6890f71ea4c039fe60eabd7bee40b1231c81604051610cc89190613512565b60405180910390a150565b60006012905090565b6000600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208381548110610d55577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200154905080821115610d6e578091505b81600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208481548110610de6577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020016000828254610dff91906136c1565b9250508190555081600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610e5591906136c1565b925050819055508160078481548110610e97577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002090600a02016004016000828254610eb791906136c1565b92505081905550505050565b6000610f65610ed0611c20565b848460016000610ede611c20565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f6091906135e0565b611c28565b6001905092915050565b610f77611c20565b73ffffffffffffffffffffffffffffffffffffffff16610f95611318565b73ffffffffffffffffffffffffffffffffffffffff1614610feb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe290613432565b60405180910390fd5b610ff5828261226a565b5050565b600a6020528060005260406000206000915090505481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611061611c20565b73ffffffffffffffffffffffffffffffffffffffff1661107f611318565b73ffffffffffffffffffffffffffffffffffffffff16146110d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110cc90613432565b60405180910390fd5b6110df60006124c9565b565b60006040518060800160405280600c5481526020018481526020018381526020016001600381111561113c577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b815250600880805490508154811061117d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020906004020160008201518160000155602082015181600101556040820151816002015560608201518160030160006101000a81548160ff021916908360038111156111fa577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b0217905550905050816007600c548154811061123f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002090600a0201600801600082825461125f91906135e0565b9250508190555060016007600c54815481106112a4577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002090600a020160070160008282546112c491906135e0565b925050819055506112d7600c548361258f565b7f53e38b388d36a706c89770536e77d9db72872e0055cc5433aac31f367cfb81e383838360405161130a9392919061352d565b60405180910390a192915050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054611351906137c6565b80601f016020809104026020016040519081016040528092919081815260200182805461137d906137c6565b80156113ca5780601f1061139f576101008083540402835291602001916113ca565b820191906000526020600020905b8154815290600101906020018083116113ad57829003601f168201915b5050505050905090565b6113df81600061226a565b50565b600080600160006113f1611c20565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156114ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a5906134d2565b60405180910390fd5b6114c26114b9611c20565b85858403611c28565b600191505092915050565b60006114e16114da611c20565b8484611df3565b6001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b815260040161154a93929190613162565b602060405180830381600087803b15801561156457600080fd5b505af1158015611578573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061159c9190612aae565b506000600b54826115ad9190613636565b90506115b93382612629565b806007600c54815481106115f6577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002090600a0201600101600082825461161691906135e0565b92505081905550816007600c548154811061165a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002090600a0201600301600082825461167a91906135e0565b925050819055507f9dbb0e7dda3e09710ce75b801addc87cf9d9c6c581641b3275fca409ad086c623383836040516116b4939291906131c2565b60405180910390a15050565b600960205281600052604060002081815481106116dc57600080fd5b90600052602060002001600091509150505481565b6007818154811061170157600080fd5b90600052602060002090600a02016000915090508060000160009054906101000a900460ff1690806001015490806002015490806003015490806004015490806005015490806006015490806007015490806008015490806009015490508a565b6008818154811061177257600080fd5b90600052602060002090600402016000915090508060000154908060010154908060020154908060030160009054906101000a900460ff16905084565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60078181548110611870577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002090600a020160000160009054906101000a900460ff166118ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c5906133f2565b60405180910390fd5b6000600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110611947577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001549050600060078381548110611990577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002090600a020160050154826119ad9190613667565b90506119b93383612789565b816007600c54815481106119f6577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002090600a02016002016000828254611a1691906135e0565b9250508190555080600d6000828254611a2f91906136c1565b92505081905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401611a93929190613199565b602060405180830381600087803b158015611aad57600080fd5b505af1158015611ac1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ae59190612aae565b507fb0f19cfbed4200e9f998f24a7242ec26a8b7419b5fbaa4f550705cd11a32e59733848484604051611b1b94939291906131f9565b60405180910390a1505050565b611b30611c20565b73ffffffffffffffffffffffffffffffffffffffff16611b4e611318565b73ffffffffffffffffffffffffffffffffffffffff1614611ba4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9b90613432565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611c14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0b90613372565b60405180910390fd5b611c1d816124c9565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611c98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8f90613492565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611d08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cff90613392565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611de69190613512565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611e63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5a90613472565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611ed3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eca90613332565b60405180910390fd5b611ede838383612960565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611f64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5b906133d2565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611ff791906135e0565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161205b9190613512565b60405180910390a361206e848484612965565b50505050565b80600783815481106120af577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002090600a020160060160008282546120cf91906136c1565b9250508190555080600d60008282546120e891906136c1565b925050819055506120f761067f565b600d546121049190613636565b600b819055505050565b8060088381548110612149577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020906004020160030160006101000a81548160ff021916908360038111156121a2577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b02179055506000600883815481106121e3577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000209060040201600001549050600160078281548110612233577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002090600a0201600701600082825461225391906136c1565b9250508190555061226581600061226a565b505050565b60008214806122da5750600760018361228391906136c1565b815481106122ba577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002090600a020160000160009054906101000a900460ff165b612319576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612310906134b2565b60405180910390fd5b60078281548110612353577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002090600a020160000160009054906101000a900460ff161580156123d2575080806123d157506000600783815481106123bd577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002090600a020160070154145b5b156124c557600b5460078381548110612414577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002090600a020160050181905550600160078381548110612465577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002090600a020160000160006101000a81548160ff0219169083151502179055507f83e4d2cc842233c386ed6c222a716ef29890cdfe6561c09aea253c3df7c91434826040516124bc9190613512565b60405180910390a15b5050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80600783815481106125ca577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002090600a020160060160008282546125ea91906135e0565b9250508190555080600d600082825461260391906135e0565b9250508190555061261261067f565b600d5461261f9190613636565b600b819055505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612699576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612690906134f2565b60405180910390fd5b6126a560008383612960565b80600260008282546126b791906135e0565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461270c91906135e0565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516127719190613512565b60405180910390a361278560008383612965565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156127f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127f090613452565b60405180910390fd5b61280582600083612960565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561288b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161288290613352565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008282546128e291906136c1565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516129479190613512565b60405180910390a361295b83600084612965565b505050565b505050565b505050565b600081359050612979816138d9565b92915050565b60008135905061298e816138f0565b92915050565b6000815190506129a3816138f0565b92915050565b6000813590506129b881613907565b92915050565b6000602082840312156129d057600080fd5b60006129de8482850161296a565b91505092915050565b600080604083850312156129fa57600080fd5b6000612a088582860161296a565b9250506020612a198582860161296a565b9150509250929050565b600080600060608486031215612a3857600080fd5b6000612a468682870161296a565b9350506020612a578682870161296a565b9250506040612a68868287016129a9565b9150509250925092565b60008060408385031215612a8557600080fd5b6000612a938582860161296a565b9250506020612aa4858286016129a9565b9150509250929050565b600060208284031215612ac057600080fd5b6000612ace84828501612994565b91505092915050565b600060208284031215612ae957600080fd5b6000612af7848285016129a9565b91505092915050565b60008060408385031215612b1357600080fd5b6000612b21858286016129a9565b9250506020612b328582860161297f565b9150509250929050565b60008060408385031215612b4f57600080fd5b6000612b5d858286016129a9565b9250506020612b6e858286016129a9565b9150509250929050565b612b81816136f5565b82525050565b612b9081613707565b82525050565b612b9f8161375d565b82525050565b612bae81613781565b82525050565b6000612bbf826135c4565b612bc981856135cf565b9350612bd9818560208601613793565b612be2816138b4565b840191505092915050565b6000612bfa6023836135cf565b91507f45524332303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612c606022836135cf565b91507f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008301527f63650000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612cc66026836135cf565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612d2c6022836135cf565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612d926013836135cf565b91507f57726f6e6720706f6c69637920737461747573000000000000000000000000006000830152602082019050919050565b6000612dd26026836135cf565b91507f45524332303a207472616e7366657220616d6f756e742065786365656473206260008301527f616c616e636500000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612e38600f836135cf565b91507f45706f6368206e6f742066696e616c00000000000000000000000000000000006000830152602082019050919050565b6000612e786028836135cf565b91507f45524332303a207472616e7366657220616d6f756e742065786365656473206160008301527f6c6c6f77616e63650000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612ede6020836135cf565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b6000612f1e6021836135cf565b91507f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008301527f73000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612f846025836135cf565b91507f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612fea6024836135cf565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613050601c836135cf565b91507f4561726c6965722065706f636873206e6f742066696e616c697a6564000000006000830152602082019050919050565b60006130906025836135cf565b91507f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008301527f207a65726f0000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006130f6601f836135cf565b91507f45524332303a206d696e7420746f20746865207a65726f2061646472657373006000830152602082019050919050565b61313281613746565b82525050565b61314181613750565b82525050565b600060208201905061315c6000830184612b78565b92915050565b60006060820190506131776000830186612b78565b6131846020830185612b78565b6131916040830184613129565b949350505050565b60006040820190506131ae6000830185612b78565b6131bb6020830184613129565b9392505050565b60006060820190506131d76000830186612b78565b6131e46020830185613129565b6131f16040830184613129565b949350505050565b600060808201905061320e6000830187612b78565b61321b6020830186613129565b6132286040830185613129565b6132356060830184613129565b95945050505050565b60006020820190506132536000830184612b87565b92915050565b60006101408201905061326f600083018d612b87565b61327c602083018c613129565b613289604083018b613129565b613296606083018a613129565b6132a36080830189613129565b6132b060a0830188613129565b6132bd60c0830187613129565b6132ca60e0830186613129565b6132d8610100830185613129565b6132e6610120830184613129565b9b9a5050505050505050505050565b600060208201905061330a6000830184612b96565b92915050565b6000602082019050818103600083015261332a8184612bb4565b905092915050565b6000602082019050818103600083015261334b81612bed565b9050919050565b6000602082019050818103600083015261336b81612c53565b9050919050565b6000602082019050818103600083015261338b81612cb9565b9050919050565b600060208201905081810360008301526133ab81612d1f565b9050919050565b600060208201905081810360008301526133cb81612d85565b9050919050565b600060208201905081810360008301526133eb81612dc5565b9050919050565b6000602082019050818103600083015261340b81612e2b565b9050919050565b6000602082019050818103600083015261342b81612e6b565b9050919050565b6000602082019050818103600083015261344b81612ed1565b9050919050565b6000602082019050818103600083015261346b81612f11565b9050919050565b6000602082019050818103600083015261348b81612f77565b9050919050565b600060208201905081810360008301526134ab81612fdd565b9050919050565b600060208201905081810360008301526134cb81613043565b9050919050565b600060208201905081810360008301526134eb81613083565b9050919050565b6000602082019050818103600083015261350b816130e9565b9050919050565b60006020820190506135276000830184613129565b92915050565b60006060820190506135426000830186613129565b61354f6020830185613129565b61355c6040830184613129565b949350505050565b60006080820190506135796000830187613129565b6135866020830186613129565b6135936040830185613129565b6135a06060830184612ba5565b95945050505050565b60006020820190506135be6000830184613138565b92915050565b600081519050919050565b600082825260208201905092915050565b60006135eb82613746565b91506135f683613746565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561362b5761362a6137f8565b5b828201905092915050565b600061364182613746565b915061364c83613746565b92508261365c5761365b613827565b5b828204905092915050565b600061367282613746565b915061367d83613746565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156136b6576136b56137f8565b5b828202905092915050565b60006136cc82613746565b91506136d783613746565b9250828210156136ea576136e96137f8565b5b828203905092915050565b600061370082613726565b9050919050565b60008115159050919050565b6000819050613721826138c5565b919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006137688261376f565b9050919050565b600061377a82613726565b9050919050565b600061378c82613713565b9050919050565b60005b838110156137b1578082015181840152602081019050613796565b838111156137c0576000848401525b50505050565b600060028204905060018216806137de57607f821691505b602082108114156137f2576137f1613885565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b600481106138d6576138d5613856565b5b50565b6138e2816136f5565b81146138ed57600080fd5b50565b6138f981613707565b811461390457600080fd5b50565b61391081613746565b811461391b57600080fd5b5056fea26469706673582212203bca898f37716901c2a427673cacbc9b2efafc981fa9c32944d7bef02099ac3a64736f6c63430008000033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x3EA2 CODESIZE SUB DUP1 PUSH3 0x3EA2 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE DUP2 ADD SWAP1 PUSH3 0x37 SWAP2 SWAP1 PUSH3 0x2FD JUMP JUMPDEST DUP4 DUP4 DUP2 PUSH1 0x3 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH3 0x51 SWAP3 SWAP2 SWAP1 PUSH3 0x1AD JUMP JUMPDEST POP DUP1 PUSH1 0x4 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH3 0x6A SWAP3 SWAP2 SWAP1 PUSH3 0x1AD JUMP JUMPDEST POP POP POP PUSH3 0x8D PUSH3 0x81 PUSH3 0xDF PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0xE7 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST DUP2 PUSH1 0x6 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP1 PUSH1 0xE DUP2 SWAP1 SSTORE POP POP POP POP POP PUSH3 0x53E JUMP JUMPDEST PUSH1 0x0 CALLER SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x5 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP2 PUSH1 0x5 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH3 0x1BB SWAP1 PUSH3 0x476 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH3 0x1DF JUMPI PUSH1 0x0 DUP6 SSTORE PUSH3 0x22B JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH3 0x1FA JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x22B JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x22B JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x22A JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x20D JUMP JUMPDEST JUMPDEST POP SWAP1 POP PUSH3 0x23A SWAP2 SWAP1 PUSH3 0x23E JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x259 JUMPI PUSH1 0x0 DUP2 PUSH1 0x0 SWAP1 SSTORE POP PUSH1 0x1 ADD PUSH3 0x23F JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x274 PUSH3 0x26E DUP5 PUSH3 0x3CF JUMP JUMPDEST PUSH3 0x39B JUMP JUMPDEST SWAP1 POP DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 DUP5 DUP5 ADD GT ISZERO PUSH3 0x28D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x29A DUP5 DUP3 DUP6 PUSH3 0x440 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH3 0x2B3 DUP2 PUSH3 0x50A JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x2CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH3 0x2DD DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH3 0x25D JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH3 0x2F7 DUP2 PUSH3 0x524 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH3 0x314 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP6 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x32F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x33D DUP8 DUP3 DUP9 ADD PUSH3 0x2B9 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 DUP6 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x35B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x369 DUP8 DUP3 DUP9 ADD PUSH3 0x2B9 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 PUSH3 0x37C DUP8 DUP3 DUP9 ADD PUSH3 0x2A2 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 PUSH3 0x38F DUP8 DUP3 DUP9 ADD PUSH3 0x2E6 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP DUP2 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH3 0x3C5 JUMPI PUSH3 0x3C4 PUSH3 0x4DB JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH3 0x3ED JUMPI PUSH3 0x3EC PUSH3 0x4DB JUMP JUMPDEST JUMPDEST PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x40F DUP3 PUSH3 0x416 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x460 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH3 0x443 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH3 0x470 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 DUP3 DIV SWAP1 POP PUSH1 0x1 DUP3 AND DUP1 PUSH3 0x48F JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH3 0x4A6 JUMPI PUSH3 0x4A5 PUSH3 0x4AC JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH3 0x515 DUP2 PUSH3 0x402 JUMP JUMPDEST DUP2 EQ PUSH3 0x521 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH3 0x52F DUP2 PUSH3 0x436 JUMP JUMPDEST DUP2 EQ PUSH3 0x53B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x3954 DUP1 PUSH3 0x54E PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1C4 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x715018A6 GT PUSH2 0xF9 JUMPI DUP1 PUSH4 0xB6B55F25 GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xD3E89483 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xD3E89483 EQ PUSH2 0x534 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x567 JUMPI DUP1 PUSH4 0xE1152343 EQ PUSH2 0x597 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x5B3 JUMPI PUSH2 0x1C4 JUMP JUMPDEST DUP1 PUSH4 0xB6B55F25 EQ PUSH2 0x4AF JUMPI DUP1 PUSH4 0xBC6A09D8 EQ PUSH2 0x4CB JUMPI DUP1 PUSH4 0xC6B61E4C EQ PUSH2 0x4FB JUMPI PUSH2 0x1C4 JUMP JUMPDEST DUP1 PUSH4 0x95D89B41 GT PUSH2 0xD3 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x415 JUMPI DUP1 PUSH4 0x986BCE2C EQ PUSH2 0x433 JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x44F JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x47F JUMPI PUSH2 0x1C4 JUMP JUMPDEST DUP1 PUSH4 0x715018A6 EQ PUSH2 0x3BD JUMPI DUP1 PUSH4 0x8AE2DC94 EQ PUSH2 0x3C7 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x3F7 JUMPI PUSH2 0x1C4 JUMP JUMPDEST DUP1 PUSH4 0x3037E4CD GT PUSH2 0x166 JUMPI DUP1 PUSH4 0x39509351 GT PUSH2 0x140 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x311 JUMPI DUP1 PUSH4 0x66E5BA52 EQ PUSH2 0x341 JUMPI DUP1 PUSH4 0x6E739C81 EQ PUSH2 0x35D JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x38D JUMPI PUSH2 0x1C4 JUMP JUMPDEST DUP1 PUSH4 0x3037E4CD EQ PUSH2 0x2BB JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x2D7 JUMPI DUP1 PUSH4 0x366A4120 EQ PUSH2 0x2F5 JUMPI PUSH2 0x1C4 JUMP JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0x1A2 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x235 JUMPI DUP1 PUSH4 0x28D36A83 EQ PUSH2 0x265 JUMPI DUP1 PUSH4 0x2AEA118D EQ PUSH2 0x283 JUMPI DUP1 PUSH4 0x2E1A7D4D EQ PUSH2 0x29F JUMPI PUSH2 0x1C4 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x1C9 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x1E7 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x217 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1D1 PUSH2 0x5CF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1DE SWAP2 SWAP1 PUSH2 0x3310 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x201 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1FC SWAP2 SWAP1 PUSH2 0x2A72 JUMP JUMPDEST PUSH2 0x661 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x20E SWAP2 SWAP1 PUSH2 0x323E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x21F PUSH2 0x67F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x22C SWAP2 SWAP1 PUSH2 0x3512 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x24F PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x24A SWAP2 SWAP1 PUSH2 0x2A23 JUMP JUMPDEST PUSH2 0x689 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x25C SWAP2 SWAP1 PUSH2 0x323E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x26D PUSH2 0x781 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x27A SWAP2 SWAP1 PUSH2 0x32F5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x29D PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x298 SWAP2 SWAP1 PUSH2 0x2AD7 JUMP JUMPDEST PUSH2 0x7A7 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2B9 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2B4 SWAP2 SWAP1 PUSH2 0x2AD7 JUMP JUMPDEST PUSH2 0xA8A JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2D5 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2D0 SWAP2 SWAP1 PUSH2 0x2AD7 JUMP JUMPDEST PUSH2 0xC8E JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2DF PUSH2 0xCD3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2EC SWAP2 SWAP1 PUSH2 0x35A9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x30F PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x30A SWAP2 SWAP1 PUSH2 0x2B3C JUMP JUMPDEST PUSH2 0xCDC JUMP JUMPDEST STOP JUMPDEST PUSH2 0x32B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x326 SWAP2 SWAP1 PUSH2 0x2A72 JUMP JUMPDEST PUSH2 0xEC3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x338 SWAP2 SWAP1 PUSH2 0x323E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x35B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x356 SWAP2 SWAP1 PUSH2 0x2B00 JUMP JUMPDEST PUSH2 0xF6F JUMP JUMPDEST STOP JUMPDEST PUSH2 0x377 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x372 SWAP2 SWAP1 PUSH2 0x29BE JUMP JUMPDEST PUSH2 0xFF9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x384 SWAP2 SWAP1 PUSH2 0x3512 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x3A7 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x3A2 SWAP2 SWAP1 PUSH2 0x29BE JUMP JUMPDEST PUSH2 0x1011 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3B4 SWAP2 SWAP1 PUSH2 0x3512 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x3C5 PUSH2 0x1059 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x3E1 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x3DC SWAP2 SWAP1 PUSH2 0x2B3C JUMP JUMPDEST PUSH2 0x10E1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3EE SWAP2 SWAP1 PUSH2 0x3512 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x3FF PUSH2 0x1318 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x40C SWAP2 SWAP1 PUSH2 0x3147 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x41D PUSH2 0x1342 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x42A SWAP2 SWAP1 PUSH2 0x3310 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x44D PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x448 SWAP2 SWAP1 PUSH2 0x2AD7 JUMP JUMPDEST PUSH2 0x13D4 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x469 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x464 SWAP2 SWAP1 PUSH2 0x2A72 JUMP JUMPDEST PUSH2 0x13E2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x476 SWAP2 SWAP1 PUSH2 0x323E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x499 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x494 SWAP2 SWAP1 PUSH2 0x2A72 JUMP JUMPDEST PUSH2 0x14CD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x4A6 SWAP2 SWAP1 PUSH2 0x323E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x4C9 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x4C4 SWAP2 SWAP1 PUSH2 0x2AD7 JUMP JUMPDEST PUSH2 0x14EB JUMP JUMPDEST STOP JUMPDEST PUSH2 0x4E5 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x4E0 SWAP2 SWAP1 PUSH2 0x2A72 JUMP JUMPDEST PUSH2 0x16C0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x4F2 SWAP2 SWAP1 PUSH2 0x3512 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x515 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x510 SWAP2 SWAP1 PUSH2 0x2AD7 JUMP JUMPDEST PUSH2 0x16F1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x52B SWAP11 SWAP10 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3259 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x54E PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x549 SWAP2 SWAP1 PUSH2 0x2AD7 JUMP JUMPDEST PUSH2 0x1762 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x55E SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3564 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x581 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x57C SWAP2 SWAP1 PUSH2 0x29E7 JUMP JUMPDEST PUSH2 0x17AF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x58E SWAP2 SWAP1 PUSH2 0x3512 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x5B1 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x5AC SWAP2 SWAP1 PUSH2 0x2AD7 JUMP JUMPDEST PUSH2 0x1836 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x5CD PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x5C8 SWAP2 SWAP1 PUSH2 0x29BE JUMP JUMPDEST PUSH2 0x1B28 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x60 PUSH1 0x3 DUP1 SLOAD PUSH2 0x5DE SWAP1 PUSH2 0x37C6 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 0x60A SWAP1 PUSH2 0x37C6 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x657 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x62C JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x657 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 0x63A JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x675 PUSH2 0x66E PUSH2 0x1C20 JUMP JUMPDEST DUP5 DUP5 PUSH2 0x1C28 JUMP JUMPDEST PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x696 DUP5 DUP5 DUP5 PUSH2 0x1DF3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x6E1 PUSH2 0x1C20 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP DUP3 DUP2 LT ISZERO PUSH2 0x761 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x758 SWAP1 PUSH2 0x3412 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x775 DUP6 PUSH2 0x76D PUSH2 0x1C20 JUMP JUMPDEST DUP6 DUP5 SUB PUSH2 0x1C28 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x6 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x7E1 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x8 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x81B JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x4 MUL ADD PUSH1 0x3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x872 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST EQ PUSH2 0x8B2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x8A9 SWAP1 PUSH2 0x33B2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x8 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x8EE JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x4 MUL ADD PUSH1 0x0 ADD SLOAD SWAP1 POP PUSH1 0xE SLOAD DUP2 PUSH1 0xC SLOAD PUSH2 0x913 SWAP2 SWAP1 PUSH2 0x36C1 JUMP JUMPDEST GT ISZERO PUSH2 0x927 JUMPI PUSH2 0x922 DUP3 PUSH2 0xC8E JUMP JUMPDEST PUSH2 0xA86 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x8 DUP4 DUP2 SLOAD DUP2 LT PUSH2 0x963 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x4 MUL ADD PUSH1 0x1 ADD SLOAD SWAP1 POP DUP1 PUSH1 0xD SLOAD LT ISZERO PUSH2 0x987 JUMPI PUSH1 0xD SLOAD SWAP1 POP JUMPDEST PUSH2 0x991 DUP3 DUP3 PUSH2 0x2074 JUMP JUMPDEST DUP1 PUSH1 0x7 DUP4 DUP2 SLOAD DUP2 LT PUSH2 0x9CC JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0xA MUL ADD PUSH1 0x9 ADD PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x9EC SWAP2 SWAP1 PUSH2 0x35E0 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH2 0x9FE DUP4 PUSH1 0x2 PUSH2 0x210E JUMP JUMPDEST PUSH32 0x3921E771BED0BD3A8859D908E5E31888903B50D5B8EC0004C08C71920343431A DUP4 PUSH1 0x8 DUP6 DUP2 SLOAD DUP2 LT PUSH2 0xA5A JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x4 MUL ADD PUSH1 0x1 ADD SLOAD DUP4 PUSH1 0x40 MLOAD PUSH2 0xA7C SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x352D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP PUSH1 0x0 DUP2 PUSH2 0xADA CALLER PUSH2 0x1011 JUMP JUMPDEST PUSH2 0xAE4 SWAP2 SWAP1 PUSH2 0x36C1 JUMP JUMPDEST SWAP1 POP DUP1 DUP4 GT ISZERO PUSH2 0xAF2 JUMPI DUP1 SWAP3 POP JUMPDEST PUSH1 0x0 DUP4 GT ISZERO PUSH2 0xC50 JUMPI DUP3 PUSH1 0x9 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0xC SLOAD DUP2 SLOAD DUP2 LT PUSH2 0xB75 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0xB8E SWAP2 SWAP1 PUSH2 0x35E0 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP3 PUSH1 0xA PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0xBE4 SWAP2 SWAP1 PUSH2 0x35E0 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP3 PUSH1 0x7 PUSH1 0xC SLOAD DUP2 SLOAD DUP2 LT PUSH2 0xC28 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0xA MUL ADD PUSH1 0x4 ADD PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0xC48 SWAP2 SWAP1 PUSH2 0x35E0 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP JUMPDEST PUSH32 0xB4214C8C54FC7442F36D3682F59AEBAF09358A4431835B30EFB29D52CF9E1E91 CALLER DUP5 PUSH1 0x40 MLOAD PUSH2 0xC81 SWAP3 SWAP2 SWAP1 PUSH2 0x3199 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH2 0xC99 DUP2 PUSH1 0x3 PUSH2 0x210E JUMP JUMPDEST PUSH32 0x8B74D3CCCBCB3894CCC99C3A75F6A6890F71EA4C039FE60EABD7BEE40B1231C DUP2 PUSH1 0x40 MLOAD PUSH2 0xCC8 SWAP2 SWAP1 PUSH2 0x3512 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x12 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x9 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP4 DUP2 SLOAD DUP2 LT PUSH2 0xD55 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0xD6E JUMPI DUP1 SWAP2 POP JUMPDEST DUP2 PUSH1 0x9 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP5 DUP2 SLOAD DUP2 LT PUSH2 0xDE6 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0xDFF SWAP2 SWAP1 PUSH2 0x36C1 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0xA PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0xE55 SWAP2 SWAP1 PUSH2 0x36C1 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x7 DUP5 DUP2 SLOAD DUP2 LT PUSH2 0xE97 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0xA MUL ADD PUSH1 0x4 ADD PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0xEB7 SWAP2 SWAP1 PUSH2 0x36C1 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF65 PUSH2 0xED0 PUSH2 0x1C20 JUMP JUMPDEST DUP5 DUP5 PUSH1 0x1 PUSH1 0x0 PUSH2 0xEDE PUSH2 0x1C20 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0xF60 SWAP2 SWAP1 PUSH2 0x35E0 JUMP JUMPDEST PUSH2 0x1C28 JUMP JUMPDEST PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xF77 PUSH2 0x1C20 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xF95 PUSH2 0x1318 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xFEB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xFE2 SWAP1 PUSH2 0x3432 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xFF5 DUP3 DUP3 PUSH2 0x226A JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP2 POP SWAP1 POP SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1061 PUSH2 0x1C20 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x107F PUSH2 0x1318 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x10D5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x10CC SWAP1 PUSH2 0x3432 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x10DF PUSH1 0x0 PUSH2 0x24C9 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xC SLOAD DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x113C JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP2 MSTORE POP PUSH1 0x8 DUP1 DUP1 SLOAD SWAP1 POP DUP2 SLOAD DUP2 LT PUSH2 0x117D JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x4 MUL ADD PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD SSTORE PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD SSTORE PUSH1 0x40 DUP3 ADD MLOAD DUP2 PUSH1 0x2 ADD SSTORE PUSH1 0x60 DUP3 ADD MLOAD DUP2 PUSH1 0x3 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x11FA JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST MUL OR SWAP1 SSTORE POP SWAP1 POP POP DUP2 PUSH1 0x7 PUSH1 0xC SLOAD DUP2 SLOAD DUP2 LT PUSH2 0x123F JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0xA MUL ADD PUSH1 0x8 ADD PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x125F SWAP2 SWAP1 PUSH2 0x35E0 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH1 0x1 PUSH1 0x7 PUSH1 0xC SLOAD DUP2 SLOAD DUP2 LT PUSH2 0x12A4 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0xA MUL ADD PUSH1 0x7 ADD PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x12C4 SWAP2 SWAP1 PUSH2 0x35E0 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH2 0x12D7 PUSH1 0xC SLOAD DUP4 PUSH2 0x258F JUMP JUMPDEST PUSH32 0x53E38B388D36A706C89770536E77D9DB72872E0055CC5433AAC31F367CFB81E3 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD PUSH2 0x130A SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x352D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x5 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x4 DUP1 SLOAD PUSH2 0x1351 SWAP1 PUSH2 0x37C6 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 0x137D SWAP1 PUSH2 0x37C6 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x13CA JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x139F JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x13CA 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 0x13AD JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x13DF DUP2 PUSH1 0x0 PUSH2 0x226A JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x0 PUSH2 0x13F1 PUSH2 0x1C20 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP DUP3 DUP2 LT ISZERO PUSH2 0x14AE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x14A5 SWAP1 PUSH2 0x34D2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x14C2 PUSH2 0x14B9 PUSH2 0x1C20 JUMP JUMPDEST DUP6 DUP6 DUP5 SUB PUSH2 0x1C28 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14E1 PUSH2 0x14DA PUSH2 0x1C20 JUMP JUMPDEST DUP5 DUP5 PUSH2 0x1DF3 JUMP JUMPDEST PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x6 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x23B872DD CALLER ADDRESS DUP5 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x154A SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3162 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1564 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1578 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 0x159C SWAP2 SWAP1 PUSH2 0x2AAE JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0xB SLOAD DUP3 PUSH2 0x15AD SWAP2 SWAP1 PUSH2 0x3636 JUMP JUMPDEST SWAP1 POP PUSH2 0x15B9 CALLER DUP3 PUSH2 0x2629 JUMP JUMPDEST DUP1 PUSH1 0x7 PUSH1 0xC SLOAD DUP2 SLOAD DUP2 LT PUSH2 0x15F6 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0xA MUL ADD PUSH1 0x1 ADD PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x1616 SWAP2 SWAP1 PUSH2 0x35E0 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x7 PUSH1 0xC SLOAD DUP2 SLOAD DUP2 LT PUSH2 0x165A JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0xA MUL ADD PUSH1 0x3 ADD PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x167A SWAP2 SWAP1 PUSH2 0x35E0 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH32 0x9DBB0E7DDA3E09710CE75B801ADDC87CF9D9C6C581641B3275FCA409AD086C62 CALLER DUP4 DUP4 PUSH1 0x40 MLOAD PUSH2 0x16B4 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x31C2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0x9 PUSH1 0x20 MSTORE DUP2 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x16DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP2 POP SWAP2 POP POP SLOAD DUP2 JUMP JUMPDEST PUSH1 0x7 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x1701 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0xA MUL ADD PUSH1 0x0 SWAP2 POP SWAP1 POP DUP1 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 DUP1 PUSH1 0x1 ADD SLOAD SWAP1 DUP1 PUSH1 0x2 ADD SLOAD SWAP1 DUP1 PUSH1 0x3 ADD SLOAD SWAP1 DUP1 PUSH1 0x4 ADD SLOAD SWAP1 DUP1 PUSH1 0x5 ADD SLOAD SWAP1 DUP1 PUSH1 0x6 ADD SLOAD SWAP1 DUP1 PUSH1 0x7 ADD SLOAD SWAP1 DUP1 PUSH1 0x8 ADD SLOAD SWAP1 DUP1 PUSH1 0x9 ADD SLOAD SWAP1 POP DUP11 JUMP JUMPDEST PUSH1 0x8 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x1772 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x4 MUL ADD PUSH1 0x0 SWAP2 POP SWAP1 POP DUP1 PUSH1 0x0 ADD SLOAD SWAP1 DUP1 PUSH1 0x1 ADD SLOAD SWAP1 DUP1 PUSH1 0x2 ADD SLOAD SWAP1 DUP1 PUSH1 0x3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 POP DUP5 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x7 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x1870 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0xA MUL ADD PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0x18CE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x18C5 SWAP1 PUSH2 0x33F2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x9 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x1947 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP PUSH1 0x0 PUSH1 0x7 DUP4 DUP2 SLOAD DUP2 LT PUSH2 0x1990 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0xA MUL ADD PUSH1 0x5 ADD SLOAD DUP3 PUSH2 0x19AD SWAP2 SWAP1 PUSH2 0x3667 JUMP JUMPDEST SWAP1 POP PUSH2 0x19B9 CALLER DUP4 PUSH2 0x2789 JUMP JUMPDEST DUP2 PUSH1 0x7 PUSH1 0xC SLOAD DUP2 SLOAD DUP2 LT PUSH2 0x19F6 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0xA MUL ADD PUSH1 0x2 ADD PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x1A16 SWAP2 SWAP1 PUSH2 0x35E0 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP1 PUSH1 0xD PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x1A2F SWAP2 SWAP1 PUSH2 0x36C1 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH1 0x6 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB CALLER DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1A93 SWAP3 SWAP2 SWAP1 PUSH2 0x3199 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1AAD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1AC1 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 0x1AE5 SWAP2 SWAP1 PUSH2 0x2AAE JUMP JUMPDEST POP PUSH32 0xB0F19CFBED4200E9F998F24A7242EC26A8B7419B5FBAA4F550705CD11A32E597 CALLER DUP5 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH2 0x1B1B SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x31F9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH2 0x1B30 PUSH2 0x1C20 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1B4E PUSH2 0x1318 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1BA4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1B9B SWAP1 PUSH2 0x3432 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x1C14 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1C0B SWAP1 PUSH2 0x3372 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1C1D DUP2 PUSH2 0x24C9 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 CALLER SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x1C98 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1C8F SWAP1 PUSH2 0x3492 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x1D08 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1CFF SWAP1 PUSH2 0x3392 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP4 PUSH1 0x40 MLOAD PUSH2 0x1DE6 SWAP2 SWAP1 PUSH2 0x3512 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x1E63 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1E5A SWAP1 PUSH2 0x3472 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x1ED3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1ECA SWAP1 PUSH2 0x3332 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1EDE DUP4 DUP4 DUP4 PUSH2 0x2960 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP DUP2 DUP2 LT ISZERO PUSH2 0x1F64 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1F5B SWAP1 PUSH2 0x33D2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 DUP2 SUB PUSH1 0x0 DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x0 DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x1FF7 SWAP2 SWAP1 PUSH2 0x35E0 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP5 PUSH1 0x40 MLOAD PUSH2 0x205B SWAP2 SWAP1 PUSH2 0x3512 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH2 0x206E DUP5 DUP5 DUP5 PUSH2 0x2965 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST DUP1 PUSH1 0x7 DUP4 DUP2 SLOAD DUP2 LT PUSH2 0x20AF JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0xA MUL ADD PUSH1 0x6 ADD PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x20CF SWAP2 SWAP1 PUSH2 0x36C1 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP1 PUSH1 0xD PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x20E8 SWAP2 SWAP1 PUSH2 0x36C1 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH2 0x20F7 PUSH2 0x67F JUMP JUMPDEST PUSH1 0xD SLOAD PUSH2 0x2104 SWAP2 SWAP1 PUSH2 0x3636 JUMP JUMPDEST PUSH1 0xB DUP2 SWAP1 SSTORE POP POP POP JUMP JUMPDEST DUP1 PUSH1 0x8 DUP4 DUP2 SLOAD DUP2 LT PUSH2 0x2149 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x4 MUL ADD PUSH1 0x3 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x21A2 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST MUL OR SWAP1 SSTORE POP PUSH1 0x0 PUSH1 0x8 DUP4 DUP2 SLOAD DUP2 LT PUSH2 0x21E3 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x4 MUL ADD PUSH1 0x0 ADD SLOAD SWAP1 POP PUSH1 0x1 PUSH1 0x7 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x2233 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0xA MUL ADD PUSH1 0x7 ADD PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x2253 SWAP2 SWAP1 PUSH2 0x36C1 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH2 0x2265 DUP2 PUSH1 0x0 PUSH2 0x226A JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 EQ DUP1 PUSH2 0x22DA JUMPI POP PUSH1 0x7 PUSH1 0x1 DUP4 PUSH2 0x2283 SWAP2 SWAP1 PUSH2 0x36C1 JUMP JUMPDEST DUP2 SLOAD DUP2 LT PUSH2 0x22BA JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0xA MUL ADD PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND JUMPDEST PUSH2 0x2319 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2310 SWAP1 PUSH2 0x34B2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x7 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x2353 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0xA MUL ADD PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0x23D2 JUMPI POP DUP1 DUP1 PUSH2 0x23D1 JUMPI POP PUSH1 0x0 PUSH1 0x7 DUP4 DUP2 SLOAD DUP2 LT PUSH2 0x23BD JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0xA MUL ADD PUSH1 0x7 ADD SLOAD EQ JUMPDEST JUMPDEST ISZERO PUSH2 0x24C5 JUMPI PUSH1 0xB SLOAD PUSH1 0x7 DUP4 DUP2 SLOAD DUP2 LT PUSH2 0x2414 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0xA MUL ADD PUSH1 0x5 ADD DUP2 SWAP1 SSTORE POP PUSH1 0x1 PUSH1 0x7 DUP4 DUP2 SLOAD DUP2 LT PUSH2 0x2465 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0xA MUL ADD PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH32 0x83E4D2CC842233C386ED6C222A716EF29890CDFE6561C09AEA253C3DF7C91434 DUP3 PUSH1 0x40 MLOAD PUSH2 0x24BC SWAP2 SWAP1 PUSH2 0x3512 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x5 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP2 PUSH1 0x5 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST DUP1 PUSH1 0x7 DUP4 DUP2 SLOAD DUP2 LT PUSH2 0x25CA JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0xA MUL ADD PUSH1 0x6 ADD PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x25EA SWAP2 SWAP1 PUSH2 0x35E0 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP1 PUSH1 0xD PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x2603 SWAP2 SWAP1 PUSH2 0x35E0 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH2 0x2612 PUSH2 0x67F JUMP JUMPDEST PUSH1 0xD SLOAD PUSH2 0x261F SWAP2 SWAP1 PUSH2 0x3636 JUMP JUMPDEST PUSH1 0xB DUP2 SWAP1 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x2699 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2690 SWAP1 PUSH2 0x34F2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x26A5 PUSH1 0x0 DUP4 DUP4 PUSH2 0x2960 JUMP JUMPDEST DUP1 PUSH1 0x2 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x26B7 SWAP2 SWAP1 PUSH2 0x35E0 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP1 PUSH1 0x0 DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x270C SWAP2 SWAP1 PUSH2 0x35E0 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD PUSH2 0x2771 SWAP2 SWAP1 PUSH2 0x3512 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH2 0x2785 PUSH1 0x0 DUP4 DUP4 PUSH2 0x2965 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x27F9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x27F0 SWAP1 PUSH2 0x3452 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2805 DUP3 PUSH1 0x0 DUP4 PUSH2 0x2960 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP DUP2 DUP2 LT ISZERO PUSH2 0x288B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2882 SWAP1 PUSH2 0x3352 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 DUP2 SUB PUSH1 0x0 DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x2 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x28E2 SWAP2 SWAP1 PUSH2 0x36C1 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP5 PUSH1 0x40 MLOAD PUSH2 0x2947 SWAP2 SWAP1 PUSH2 0x3512 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH2 0x295B DUP4 PUSH1 0x0 DUP5 PUSH2 0x2965 JUMP JUMPDEST POP POP POP JUMP JUMPDEST POP POP POP JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x2979 DUP2 PUSH2 0x38D9 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x298E DUP2 PUSH2 0x38F0 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x29A3 DUP2 PUSH2 0x38F0 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x29B8 DUP2 PUSH2 0x3907 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x29D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x29DE DUP5 DUP3 DUP6 ADD PUSH2 0x296A JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x29FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2A08 DUP6 DUP3 DUP7 ADD PUSH2 0x296A JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x2A19 DUP6 DUP3 DUP7 ADD PUSH2 0x296A JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2A38 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2A46 DUP7 DUP3 DUP8 ADD PUSH2 0x296A JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x2A57 DUP7 DUP3 DUP8 ADD PUSH2 0x296A JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x2A68 DUP7 DUP3 DUP8 ADD PUSH2 0x29A9 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2A85 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2A93 DUP6 DUP3 DUP7 ADD PUSH2 0x296A JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x2AA4 DUP6 DUP3 DUP7 ADD PUSH2 0x29A9 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2AC0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2ACE DUP5 DUP3 DUP6 ADD PUSH2 0x2994 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2AE9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2AF7 DUP5 DUP3 DUP6 ADD PUSH2 0x29A9 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2B13 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2B21 DUP6 DUP3 DUP7 ADD PUSH2 0x29A9 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x2B32 DUP6 DUP3 DUP7 ADD PUSH2 0x297F JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2B4F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2B5D DUP6 DUP3 DUP7 ADD PUSH2 0x29A9 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x2B6E DUP6 DUP3 DUP7 ADD PUSH2 0x29A9 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0x2B81 DUP2 PUSH2 0x36F5 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x2B90 DUP2 PUSH2 0x3707 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x2B9F DUP2 PUSH2 0x375D JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x2BAE DUP2 PUSH2 0x3781 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2BBF DUP3 PUSH2 0x35C4 JUMP JUMPDEST PUSH2 0x2BC9 DUP2 DUP6 PUSH2 0x35CF JUMP JUMPDEST SWAP4 POP PUSH2 0x2BD9 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x3793 JUMP JUMPDEST PUSH2 0x2BE2 DUP2 PUSH2 0x38B4 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2BFA PUSH1 0x23 DUP4 PUSH2 0x35CF JUMP JUMPDEST SWAP2 POP PUSH32 0x45524332303A207472616E7366657220746F20746865207A65726F2061646472 PUSH1 0x0 DUP4 ADD MSTORE PUSH32 0x6573730000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2C60 PUSH1 0x22 DUP4 PUSH2 0x35CF JUMP JUMPDEST SWAP2 POP PUSH32 0x45524332303A206275726E20616D6F756E7420657863656564732062616C616E PUSH1 0x0 DUP4 ADD MSTORE PUSH32 0x6365000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2CC6 PUSH1 0x26 DUP4 PUSH2 0x35CF JUMP JUMPDEST SWAP2 POP PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x0 DUP4 ADD MSTORE PUSH32 0x6464726573730000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2D2C PUSH1 0x22 DUP4 PUSH2 0x35CF JUMP JUMPDEST SWAP2 POP PUSH32 0x45524332303A20617070726F766520746F20746865207A65726F206164647265 PUSH1 0x0 DUP4 ADD MSTORE PUSH32 0x7373000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2D92 PUSH1 0x13 DUP4 PUSH2 0x35CF JUMP JUMPDEST SWAP2 POP PUSH32 0x57726F6E6720706F6C6963792073746174757300000000000000000000000000 PUSH1 0x0 DUP4 ADD MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2DD2 PUSH1 0x26 DUP4 PUSH2 0x35CF JUMP JUMPDEST SWAP2 POP PUSH32 0x45524332303A207472616E7366657220616D6F756E7420657863656564732062 PUSH1 0x0 DUP4 ADD MSTORE PUSH32 0x616C616E63650000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2E38 PUSH1 0xF DUP4 PUSH2 0x35CF JUMP JUMPDEST SWAP2 POP PUSH32 0x45706F6368206E6F742066696E616C0000000000000000000000000000000000 PUSH1 0x0 DUP4 ADD MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2E78 PUSH1 0x28 DUP4 PUSH2 0x35CF JUMP JUMPDEST SWAP2 POP PUSH32 0x45524332303A207472616E7366657220616D6F756E7420657863656564732061 PUSH1 0x0 DUP4 ADD MSTORE PUSH32 0x6C6C6F77616E6365000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2EDE PUSH1 0x20 DUP4 PUSH2 0x35CF JUMP JUMPDEST SWAP2 POP PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x0 DUP4 ADD MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2F1E PUSH1 0x21 DUP4 PUSH2 0x35CF JUMP JUMPDEST SWAP2 POP PUSH32 0x45524332303A206275726E2066726F6D20746865207A65726F20616464726573 PUSH1 0x0 DUP4 ADD MSTORE PUSH32 0x7300000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2F84 PUSH1 0x25 DUP4 PUSH2 0x35CF JUMP JUMPDEST SWAP2 POP PUSH32 0x45524332303A207472616E736665722066726F6D20746865207A65726F206164 PUSH1 0x0 DUP4 ADD MSTORE PUSH32 0x6472657373000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2FEA PUSH1 0x24 DUP4 PUSH2 0x35CF JUMP JUMPDEST SWAP2 POP PUSH32 0x45524332303A20617070726F76652066726F6D20746865207A65726F20616464 PUSH1 0x0 DUP4 ADD MSTORE PUSH32 0x7265737300000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3050 PUSH1 0x1C DUP4 PUSH2 0x35CF JUMP JUMPDEST SWAP2 POP PUSH32 0x4561726C6965722065706F636873206E6F742066696E616C697A656400000000 PUSH1 0x0 DUP4 ADD MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3090 PUSH1 0x25 DUP4 PUSH2 0x35CF JUMP JUMPDEST SWAP2 POP PUSH32 0x45524332303A2064656372656173656420616C6C6F77616E63652062656C6F77 PUSH1 0x0 DUP4 ADD MSTORE PUSH32 0x207A65726F000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x30F6 PUSH1 0x1F DUP4 PUSH2 0x35CF JUMP JUMPDEST SWAP2 POP PUSH32 0x45524332303A206D696E7420746F20746865207A65726F206164647265737300 PUSH1 0x0 DUP4 ADD MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x3132 DUP2 PUSH2 0x3746 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x3141 DUP2 PUSH2 0x3750 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x315C PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x2B78 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x3177 PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0x2B78 JUMP JUMPDEST PUSH2 0x3184 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x2B78 JUMP JUMPDEST PUSH2 0x3191 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x3129 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x31AE PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x2B78 JUMP JUMPDEST PUSH2 0x31BB PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x3129 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x31D7 PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0x2B78 JUMP JUMPDEST PUSH2 0x31E4 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x3129 JUMP JUMPDEST PUSH2 0x31F1 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x3129 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x320E PUSH1 0x0 DUP4 ADD DUP8 PUSH2 0x2B78 JUMP JUMPDEST PUSH2 0x321B PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x3129 JUMP JUMPDEST PUSH2 0x3228 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x3129 JUMP JUMPDEST PUSH2 0x3235 PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x3129 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x3253 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x2B87 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x140 DUP3 ADD SWAP1 POP PUSH2 0x326F PUSH1 0x0 DUP4 ADD DUP14 PUSH2 0x2B87 JUMP JUMPDEST PUSH2 0x327C PUSH1 0x20 DUP4 ADD DUP13 PUSH2 0x3129 JUMP JUMPDEST PUSH2 0x3289 PUSH1 0x40 DUP4 ADD DUP12 PUSH2 0x3129 JUMP JUMPDEST PUSH2 0x3296 PUSH1 0x60 DUP4 ADD DUP11 PUSH2 0x3129 JUMP JUMPDEST PUSH2 0x32A3 PUSH1 0x80 DUP4 ADD DUP10 PUSH2 0x3129 JUMP JUMPDEST PUSH2 0x32B0 PUSH1 0xA0 DUP4 ADD DUP9 PUSH2 0x3129 JUMP JUMPDEST PUSH2 0x32BD PUSH1 0xC0 DUP4 ADD DUP8 PUSH2 0x3129 JUMP JUMPDEST PUSH2 0x32CA PUSH1 0xE0 DUP4 ADD DUP7 PUSH2 0x3129 JUMP JUMPDEST PUSH2 0x32D8 PUSH2 0x100 DUP4 ADD DUP6 PUSH2 0x3129 JUMP JUMPDEST PUSH2 0x32E6 PUSH2 0x120 DUP4 ADD DUP5 PUSH2 0x3129 JUMP JUMPDEST SWAP12 SWAP11 POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x330A PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x2B96 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x332A DUP2 DUP5 PUSH2 0x2BB4 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x334B DUP2 PUSH2 0x2BED JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x336B DUP2 PUSH2 0x2C53 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x338B DUP2 PUSH2 0x2CB9 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x33AB DUP2 PUSH2 0x2D1F JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x33CB DUP2 PUSH2 0x2D85 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x33EB DUP2 PUSH2 0x2DC5 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x340B DUP2 PUSH2 0x2E2B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x342B DUP2 PUSH2 0x2E6B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x344B DUP2 PUSH2 0x2ED1 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x346B DUP2 PUSH2 0x2F11 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x348B DUP2 PUSH2 0x2F77 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x34AB DUP2 PUSH2 0x2FDD JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x34CB DUP2 PUSH2 0x3043 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x34EB DUP2 PUSH2 0x3083 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x350B DUP2 PUSH2 0x30E9 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x3527 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x3129 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x3542 PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0x3129 JUMP JUMPDEST PUSH2 0x354F PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x3129 JUMP JUMPDEST PUSH2 0x355C PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x3129 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x3579 PUSH1 0x0 DUP4 ADD DUP8 PUSH2 0x3129 JUMP JUMPDEST PUSH2 0x3586 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x3129 JUMP JUMPDEST PUSH2 0x3593 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x3129 JUMP JUMPDEST PUSH2 0x35A0 PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x2BA5 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x35BE PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x3138 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x35EB DUP3 PUSH2 0x3746 JUMP JUMPDEST SWAP2 POP PUSH2 0x35F6 DUP4 PUSH2 0x3746 JUMP JUMPDEST SWAP3 POP DUP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SUB DUP3 GT ISZERO PUSH2 0x362B JUMPI PUSH2 0x362A PUSH2 0x37F8 JUMP JUMPDEST JUMPDEST DUP3 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3641 DUP3 PUSH2 0x3746 JUMP JUMPDEST SWAP2 POP PUSH2 0x364C DUP4 PUSH2 0x3746 JUMP JUMPDEST SWAP3 POP DUP3 PUSH2 0x365C JUMPI PUSH2 0x365B PUSH2 0x3827 JUMP JUMPDEST JUMPDEST DUP3 DUP3 DIV SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3672 DUP3 PUSH2 0x3746 JUMP JUMPDEST SWAP2 POP PUSH2 0x367D DUP4 PUSH2 0x3746 JUMP JUMPDEST SWAP3 POP DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x36B6 JUMPI PUSH2 0x36B5 PUSH2 0x37F8 JUMP JUMPDEST JUMPDEST DUP3 DUP3 MUL SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x36CC DUP3 PUSH2 0x3746 JUMP JUMPDEST SWAP2 POP PUSH2 0x36D7 DUP4 PUSH2 0x3746 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 LT ISZERO PUSH2 0x36EA JUMPI PUSH2 0x36E9 PUSH2 0x37F8 JUMP JUMPDEST JUMPDEST DUP3 DUP3 SUB SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3700 DUP3 PUSH2 0x3726 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP PUSH2 0x3721 DUP3 PUSH2 0x38C5 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3768 DUP3 PUSH2 0x376F JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x377A DUP3 PUSH2 0x3726 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x378C DUP3 PUSH2 0x3713 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x37B1 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x3796 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x37C0 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 DUP3 DIV SWAP1 POP PUSH1 0x1 DUP3 AND DUP1 PUSH2 0x37DE JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH2 0x37F2 JUMPI PUSH2 0x37F1 PUSH2 0x3885 JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x4 DUP2 LT PUSH2 0x38D6 JUMPI PUSH2 0x38D5 PUSH2 0x3856 JUMP JUMPDEST JUMPDEST POP JUMP JUMPDEST PUSH2 0x38E2 DUP2 PUSH2 0x36F5 JUMP JUMPDEST DUP2 EQ PUSH2 0x38ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x38F9 DUP2 PUSH2 0x3707 JUMP JUMPDEST DUP2 EQ PUSH2 0x3904 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x3910 DUP2 PUSH2 0x3746 JUMP JUMPDEST DUP2 EQ PUSH2 0x391B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 EXTCODESIZE 0xCA DUP10 DUP16 CALLDATACOPY PUSH18 0x6901C2A427673CACBC9B2EFAFC981FA9C329 DIFFICULTY 0xD7 0xBE CREATE KECCAK256 SWAP10 0xAC GASPRICE PUSH5 0x736F6C6343 STOP ADDMOD STOP STOP CALLER ",
"sourceMap": "173:6435:5:-:0;;;1510:244;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1656:5;1663:7;1980:5:1;1972;:13;;;;;;;;;;;;:::i;:::-;;2005:7;1995;:17;;;;;;;;;;;;:::i;:::-;;1906:113;;867:23:0;877:12;:10;;;:12;;:::i;:::-;867:9;;;:23;;:::i;:::-;1693:9:5::1;1681:3;;:22;;;;;;;;;;;;;;;;;;1731:16;1713:15;:34;;;;1510:244:::0;;;;173:6435;;587:96:4;640:7;666:10;659:17;;587:96;:::o;2041:169:0:-;2096:16;2115:6;;;;;;;;;;;2096:25;;2140:8;2131:6;;:17;;;;;;;;;;;;;;;;;;2194:8;2163:40;;2184:8;2163:40;;;;;;;;;;;;2041:169;;:::o;173:6435:5:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:353:6:-;;121:65;136:49;178:6;136:49;:::i;:::-;121:65;:::i;:::-;112:74;;209:6;202:5;195:21;247:4;240:5;236:16;285:3;276:6;271:3;267:16;264:25;261:2;;;302:1;299;292:12;261:2;315:39;347:6;342:3;337;315:39;:::i;:::-;102:258;;;;;;:::o;366:143::-;;454:6;448:13;439:22;;470:33;497:5;470:33;:::i;:::-;429:80;;;;:::o;529:288::-;;645:3;638:4;630:6;626:17;622:27;612:2;;663:1;660;653:12;612:2;696:6;690:13;721:90;807:3;799:6;792:4;784:6;780:17;721:90;:::i;:::-;712:99;;602:215;;;;;:::o;823:143::-;;911:6;905:13;896:22;;927:33;954:5;927:33;:::i;:::-;886:80;;;;:::o;972:965::-;;;;;1162:3;1150:9;1141:7;1137:23;1133:33;1130:2;;;1179:1;1176;1169:12;1130:2;1243:1;1232:9;1228:17;1222:24;1273:18;1265:6;1262:30;1259:2;;;1305:1;1302;1295:12;1259:2;1333:74;1399:7;1390:6;1379:9;1375:22;1333:74;:::i;:::-;1323:84;;1193:224;1477:2;1466:9;1462:18;1456:25;1508:18;1500:6;1497:30;1494:2;;;1540:1;1537;1530:12;1494:2;1568:74;1634:7;1625:6;1614:9;1610:22;1568:74;:::i;:::-;1558:84;;1427:225;1691:2;1717:64;1773:7;1764:6;1753:9;1749:22;1717:64;:::i;:::-;1707:74;;1662:129;1830:2;1856:64;1912:7;1903:6;1892:9;1888:22;1856:64;:::i;:::-;1846:74;;1801:129;1120:817;;;;;;;:::o;1943:283::-;;2009:2;2003:9;1993:19;;2051:4;2043:6;2039:17;2158:6;2146:10;2143:22;2122:18;2110:10;2107:34;2104:62;2101:2;;;2169:18;;:::i;:::-;2101:2;2209:10;2205:2;2198:22;1983:243;;;;:::o;2232:332::-;;2384:18;2376:6;2373:30;2370:2;;;2406:18;;:::i;:::-;2370:2;2491:4;2487:9;2480:4;2472:6;2468:17;2464:33;2456:41;;2552:4;2546;2542:15;2534:23;;2299:265;;;:::o;2570:96::-;;2636:24;2654:5;2636:24;:::i;:::-;2625:35;;2615:51;;;:::o;2672:126::-;;2749:42;2742:5;2738:54;2727:65;;2717:81;;;:::o;2804:77::-;;2870:5;2859:16;;2849:32;;;:::o;2887:307::-;2955:1;2965:113;2979:6;2976:1;2973:13;2965:113;;;3064:1;3059:3;3055:11;3049:18;3045:1;3040:3;3036:11;3029:39;3001:2;2998:1;2994:10;2989:15;;2965:113;;;3096:6;3093:1;3090:13;3087:2;;;3176:1;3167:6;3162:3;3158:16;3151:27;3087:2;2936:258;;;;:::o;3200:320::-;;3281:1;3275:4;3271:12;3261:22;;3328:1;3322:4;3318:12;3349:18;3339:2;;3405:4;3397:6;3393:17;3383:27;;3339:2;3467;3459:6;3456:14;3436:18;3433:38;3430:2;;;3486:18;;:::i;:::-;3430:2;3251:269;;;;:::o;3526:180::-;3574:77;3571:1;3564:88;3671:4;3668:1;3661:15;3695:4;3692:1;3685:15;3712:180;3760:77;3757:1;3750:88;3857:4;3854:1;3847:15;3881:4;3878:1;3871:15;3898:122;3971:24;3989:5;3971:24;:::i;:::-;3964:5;3961:35;3951:2;;4010:1;4007;4000:12;3951:2;3941:79;:::o;4026:122::-;4099:24;4117:5;4099:24;:::i;:::-;4092:5;4089:35;4079:2;;4138:1;4135;4128:12;4079:2;4069:79;:::o;173:6435:5:-;;;;;;;"
},
"deployedBytecode": {
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:26469:6",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "59:87:6",
"statements": [
{
"nodeType": "YulAssignment",
"src": "69:29:6",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "91:6:6"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "78:12:6"
},
"nodeType": "YulFunctionCall",
"src": "78:20:6"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "69:5:6"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "134:5:6"
}
],
"functionName": {
"name": "validator_revert_t_address",
"nodeType": "YulIdentifier",
"src": "107:26:6"
},
"nodeType": "YulFunctionCall",
"src": "107:33:6"
},
"nodeType": "YulExpressionStatement",
"src": "107:33:6"
}
]
},
"name": "abi_decode_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "37:6:6",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "45:3:6",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "53:5:6",
"type": ""
}
],
"src": "7:139:6"
},
{
"body": {
"nodeType": "YulBlock",
"src": "201:84:6",
"statements": [
{
"nodeType": "YulAssignment",
"src": "211:29:6",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "233:6:6"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "220:12:6"
},
"nodeType": "YulFunctionCall",
"src": "220:20:6"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "211:5:6"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "273:5:6"
}
],
"functionName": {
"name": "validator_revert_t_bool",
"nodeType": "YulIdentifier",
"src": "249:23:6"
},
"nodeType": "YulFunctionCall",
"src": "249:30:6"
},
"nodeType": "YulExpressionStatement",
"src": "249:30:6"
}
]
},
"name": "abi_decode_t_bool",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "179:6:6",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "187:3:6",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "195:5:6",
"type": ""
}
],
"src": "152:133:6"
},
{
"body": {
"nodeType": "YulBlock",
"src": "351:77:6",
"statements": [
{
"nodeType": "YulAssignment",
"src": "361:22:6",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "376:6:6"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "370:5:6"
},
"nodeType": "YulFunctionCall",
"src": "370:13:6"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "361:5:6"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "416:5:6"
}
],
"functionName": {
"name": "validator_revert_t_bool",
"nodeType": "YulIdentifier",
"src": "392:23:6"
},
"nodeType": "YulFunctionCall",
"src": "392:30:6"
},
"nodeType": "YulExpressionStatement",
"src": "392:30:6"
}
]
},
"name": "abi_decode_t_bool_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "329:6:6",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "337:3:6",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "345:5:6",
"type": ""
}
],
"src": "291:137:6"
},
{
"body": {
"nodeType": "YulBlock",
"src": "486:87:6",
"statements": [
{
"nodeType": "YulAssignment",
"src": "496:29:6",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "518:6:6"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "505:12:6"
},
"nodeType": "YulFunctionCall",
"src": "505:20:6"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "496:5:6"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "561:5:6"
}
],
"functionName": {
"name": "validator_revert_t_uint256",
"nodeType": "YulIdentifier",
"src": "534:26:6"
},
"nodeType": "YulFunctionCall",
"src": "534:33:6"
},
"nodeType": "YulExpressionStatement",
"src": "534:33:6"
}
]
},
"name": "abi_decode_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "464:6:6",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "472:3:6",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "480:5:6",
"type": ""
}
],
"src": "434:139:6"
},
{
"body": {
"nodeType": "YulBlock",
"src": "645:196:6",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "691:16:6",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "700:1:6",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "703:1:6",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "693:6:6"
},
"nodeType": "YulFunctionCall",
"src": "693:12:6"
},
"nodeType": "YulExpressionStatement",
"src": "693:12:6"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "666:7:6"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "675:9:6"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "662:3:6"
},
"nodeType": "YulFunctionCall",
"src": "662:23:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "687:2:6",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "658:3:6"
},
"nodeType": "YulFunctionCall",
"src": "658:32:6"
},
"nodeType": "YulIf",
"src": "655:2:6"
},
{
"nodeType": "YulBlock",
"src": "717:117:6",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "732:15:6",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "746:1:6",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "736:6:6",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "761:63:6",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "796:9:6"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "807:6:6"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "792:3:6"
},
"nodeType": "YulFunctionCall",
"src": "792:22:6"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "816:7:6"
}
],
"functionName": {
"name": "abi_decode_t_address",
"nodeType": "YulIdentifier",
"src": "771:20:6"
},
"nodeType": "YulFunctionCall",
"src": "771:53:6"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "761:6:6"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "615:9:6",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "626:7:6",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "638:6:6",
"type": ""
}
],
"src": "579:262:6"
},
{
"body": {
"nodeType": "YulBlock",
"src": "930:324:6",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "976:16:6",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "985:1:6",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "988:1:6",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "978:6:6"
},
"nodeType": "YulFunctionCall",
"src": "978:12:6"
},
"nodeType": "YulExpressionStatement",
"src": "978:12:6"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "951:7:6"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "960:9:6"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "947:3:6"
},
"nodeType": "YulFunctionCall",
"src": "947:23:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "972:2:6",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "943:3:6"
},
"nodeType": "YulFunctionCall",
"src": "943:32:6"
},
"nodeType": "YulIf",
"src": "940:2:6"
},
{
"nodeType": "YulBlock",
"src": "1002:117:6",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "1017:15:6",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "1031:1:6",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "1021:6:6",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "1046:63:6",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1081:9:6"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "1092:6:6"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1077:3:6"
},
"nodeType": "YulFunctionCall",
"src": "1077:22:6"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "1101:7:6"
}
],
"functionName": {
"name": "abi_decode_t_address",
"nodeType": "YulIdentifier",
"src": "1056:20:6"
},
"nodeType": "YulFunctionCall",
"src": "1056:53:6"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "1046:6:6"
}
]
}
]
},
{
"nodeType": "YulBlock",
"src": "1129:118:6",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "1144:16:6",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "1158:2:6",
"type": "",
"value": "32"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "1148:6:6",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "1174:63:6",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1209:9:6"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "1220:6:6"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1205:3:6"
},
"nodeType": "YulFunctionCall",
"src": "1205:22:6"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "1229:7:6"
}
],
"functionName": {
"name": "abi_decode_t_address",
"nodeType": "YulIdentifier",
"src": "1184:20:6"
},
"nodeType": "YulFunctionCall",
"src": "1184:53:6"
},
"variableNames": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "1174:6:6"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_addresst_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "892:9:6",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "903:7:6",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "915:6:6",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "923:6:6",
"type": ""
}
],
"src": "847:407:6"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1360:452:6",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "1406:16:6",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1415:1:6",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1418:1:6",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "1408:6:6"
},
"nodeType": "YulFunctionCall",
"src": "1408:12:6"
},
"nodeType": "YulExpressionStatement",
"src": "1408:12:6"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "1381:7:6"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1390:9:6"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "1377:3:6"
},
"nodeType": "YulFunctionCall",
"src": "1377:23:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1402:2:6",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "1373:3:6"
},
"nodeType": "YulFunctionCall",
"src": "1373:32:6"
},
"nodeType": "YulIf",
"src": "1370:2:6"
},
{
"nodeType": "YulBlock",
"src": "1432:117:6",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "1447:15:6",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "1461:1:6",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "1451:6:6",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "1476:63:6",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1511:9:6"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "1522:6:6"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1507:3:6"
},
"nodeType": "YulFunctionCall",
"src": "1507:22:6"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "1531:7:6"
}
],
"functionName": {
"name": "abi_decode_t_address",
"nodeType": "YulIdentifier",
"src": "1486:20:6"
},
"nodeType": "YulFunctionCall",
"src": "1486:53:6"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "1476:6:6"
}
]
}
]
},
{
"nodeType": "YulBlock",
"src": "1559:118:6",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "1574:16:6",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "1588:2:6",
"type": "",
"value": "32"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "1578:6:6",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "1604:63:6",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1639:9:6"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "1650:6:6"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1635:3:6"
},
"nodeType": "YulFunctionCall",
"src": "1635:22:6"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "1659:7:6"
}
],
"functionName": {
"name": "abi_decode_t_address",
"nodeType": "YulIdentifier",
"src": "1614:20:6"
},
"nodeType": "YulFunctionCall",
"src": "1614:53:6"
},
"variableNames": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "1604:6:6"
}
]
}
]
},
{
"nodeType": "YulBlock",
"src": "1687:118:6",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "1702:16:6",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "1716:2:6",
"type": "",
"value": "64"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "1706:6:6",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "1732:63:6",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1767:9:6"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "1778:6:6"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1763:3:6"
},
"nodeType": "YulFunctionCall",
"src": "1763:22:6"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "1787:7:6"
}
],
"functionName": {
"name": "abi_decode_t_uint256",
"nodeType": "YulIdentifier",
"src": "1742:20:6"
},
"nodeType": "YulFunctionCall",
"src": "1742:53:6"
},
"variableNames": [
{
"name": "value2",
"nodeType": "YulIdentifier",
"src": "1732:6:6"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_addresst_addresst_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "1314:9:6",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "1325:7:6",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "1337:6:6",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "1345:6:6",
"type": ""
},
{
"name": "value2",
"nodeType": "YulTypedName",
"src": "1353:6:6",
"type": ""
}
],
"src": "1260:552:6"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1901:324:6",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "1947:16:6",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1956:1:6",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1959:1:6",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "1949:6:6"
},
"nodeType": "YulFunctionCall",
"src": "1949:12:6"
},
"nodeType": "YulExpressionStatement",
"src": "1949:12:6"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "1922:7:6"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1931:9:6"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "1918:3:6"
},
"nodeType": "YulFunctionCall",
"src": "1918:23:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1943:2:6",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "1914:3:6"
},
"nodeType": "YulFunctionCall",
"src": "1914:32:6"
},
"nodeType": "YulIf",
"src": "1911:2:6"
},
{
"nodeType": "YulBlock",
"src": "1973:117:6",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "1988:15:6",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "2002:1:6",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "1992:6:6",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "2017:63:6",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2052:9:6"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "2063:6:6"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2048:3:6"
},
"nodeType": "YulFunctionCall",
"src": "2048:22:6"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "2072:7:6"
}
],
"functionName": {
"name": "abi_decode_t_address",
"nodeType": "YulIdentifier",
"src": "2027:20:6"
},
"nodeType": "YulFunctionCall",
"src": "2027:53:6"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "2017:6:6"
}
]
}
]
},
{
"nodeType": "YulBlock",
"src": "2100:118:6",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "2115:16:6",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "2129:2:6",
"type": "",
"value": "32"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "2119:6:6",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "2145:63:6",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2180:9:6"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "2191:6:6"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2176:3:6"
},
"nodeType": "YulFunctionCall",
"src": "2176:22:6"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "2200:7:6"
}
],
"functionName": {
"name": "abi_decode_t_uint256",
"nodeType": "YulIdentifier",
"src": "2155:20:6"
},
"nodeType": "YulFunctionCall",
"src": "2155:53:6"
},
"variableNames": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "2145:6:6"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_addresst_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "1863:9:6",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "1874:7:6",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "1886:6:6",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "1894:6:6",
"type": ""
}
],
"src": "1818:407:6"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2305:204:6",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "2351:16:6",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2360:1:6",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2363:1:6",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "2353:6:6"
},
"nodeType": "YulFunctionCall",
"src": "2353:12:6"
},
"nodeType": "YulExpressionStatement",
"src": "2353:12:6"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "2326:7:6"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2335:9:6"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "2322:3:6"
},
"nodeType": "YulFunctionCall",
"src": "2322:23:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2347:2:6",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "2318:3:6"
},
"nodeType": "YulFunctionCall",
"src": "2318:32:6"
},
"nodeType": "YulIf",
"src": "2315:2:6"
},
{
"nodeType": "YulBlock",
"src": "2377:125:6",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "2392:15:6",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "2406:1:6",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "2396:6:6",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "2421:71:6",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2464:9:6"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "2475:6:6"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2460:3:6"
},
"nodeType": "YulFunctionCall",
"src": "2460:22:6"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "2484:7:6"
}
],
"functionName": {
"name": "abi_decode_t_bool_fromMemory",
"nodeType": "YulIdentifier",
"src": "2431:28:6"
},
"nodeType": "YulFunctionCall",
"src": "2431:61:6"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "2421:6:6"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_bool_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "2275:9:6",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "2286:7:6",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "2298:6:6",
"type": ""
}
],
"src": "2231:278:6"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2581:196:6",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "2627:16:6",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2636:1:6",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2639:1:6",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "2629:6:6"
},
"nodeType": "YulFunctionCall",
"src": "2629:12:6"
},
"nodeType": "YulExpressionStatement",
"src": "2629:12:6"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "2602:7:6"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2611:9:6"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "2598:3:6"
},
"nodeType": "YulFunctionCall",
"src": "2598:23:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2623:2:6",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "2594:3:6"
},
"nodeType": "YulFunctionCall",
"src": "2594:32:6"
},
"nodeType": "YulIf",
"src": "2591:2:6"
},
{
"nodeType": "YulBlock",
"src": "2653:117:6",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "2668:15:6",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "2682:1:6",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "2672:6:6",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "2697:63:6",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2732:9:6"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "2743:6:6"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2728:3:6"
},
"nodeType": "YulFunctionCall",
"src": "2728:22:6"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "2752:7:6"
}
],
"functionName": {
"name": "abi_decode_t_uint256",
"nodeType": "YulIdentifier",
"src": "2707:20:6"
},
"nodeType": "YulFunctionCall",
"src": "2707:53:6"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "2697:6:6"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "2551:9:6",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "2562:7:6",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "2574:6:6",
"type": ""
}
],
"src": "2515:262:6"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2863:321:6",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "2909:16:6",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2918:1:6",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2921:1:6",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "2911:6:6"
},
"nodeType": "YulFunctionCall",
"src": "2911:12:6"
},
"nodeType": "YulExpressionStatement",
"src": "2911:12:6"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "2884:7:6"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2893:9:6"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "2880:3:6"
},
"nodeType": "YulFunctionCall",
"src": "2880:23:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2905:2:6",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "2876:3:6"
},
"nodeType": "YulFunctionCall",
"src": "2876:32:6"
},
"nodeType": "YulIf",
"src": "2873:2:6"
},
{
"nodeType": "YulBlock",
"src": "2935:117:6",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "2950:15:6",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "2964:1:6",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "2954:6:6",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "2979:63:6",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3014:9:6"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "3025:6:6"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3010:3:6"
},
"nodeType": "YulFunctionCall",
"src": "3010:22:6"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "3034:7:6"
}
],
"functionName": {
"name": "abi_decode_t_uint256",
"nodeType": "YulIdentifier",
"src": "2989:20:6"
},
"nodeType": "YulFunctionCall",
"src": "2989:53:6"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "2979:6:6"
}
]
}
]
},
{
"nodeType": "YulBlock",
"src": "3062:115:6",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "3077:16:6",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "3091:2:6",
"type": "",
"value": "32"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "3081:6:6",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "3107:60:6",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3139:9:6"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "3150:6:6"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3135:3:6"
},
"nodeType": "YulFunctionCall",
"src": "3135:22:6"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "3159:7:6"
}
],
"functionName": {
"name": "abi_decode_t_bool",
"nodeType": "YulIdentifier",
"src": "3117:17:6"
},
"nodeType": "YulFunctionCall",
"src": "3117:50:6"
},
"variableNames": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "3107:6:6"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_uint256t_bool",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "2825:9:6",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "2836:7:6",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "2848:6:6",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "2856:6:6",
"type": ""
}
],
"src": "2783:401:6"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3273:324:6",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "3319:16:6",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3328:1:6",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3331:1:6",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "3321:6:6"
},
"nodeType": "YulFunctionCall",
"src": "3321:12:6"
},
"nodeType": "YulExpressionStatement",
"src": "3321:12:6"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "3294:7:6"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3303:9:6"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "3290:3:6"
},
"nodeType": "YulFunctionCall",
"src": "3290:23:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3315:2:6",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "3286:3:6"
},
"nodeType": "YulFunctionCall",
"src": "3286:32:6"
},
"nodeType": "YulIf",
"src": "3283:2:6"
},
{
"nodeType": "YulBlock",
"src": "3345:117:6",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "3360:15:6",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "3374:1:6",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "3364:6:6",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "3389:63:6",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3424:9:6"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "3435:6:6"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3420:3:6"
},
"nodeType": "YulFunctionCall",
"src": "3420:22:6"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "3444:7:6"
}
],
"functionName": {
"name": "abi_decode_t_uint256",
"nodeType": "YulIdentifier",
"src": "3399:20:6"
},
"nodeType": "YulFunctionCall",
"src": "3399:53:6"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "3389:6:6"
}
]
}
]
},
{
"nodeType": "YulBlock",
"src": "3472:118:6",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "3487:16:6",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "3501:2:6",
"type": "",
"value": "32"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "3491:6:6",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "3517:63:6",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3552:9:6"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "3563:6:6"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3548:3:6"
},
"nodeType": "YulFunctionCall",
"src": "3548:22:6"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "3572:7:6"
}
],
"functionName": {
"name": "abi_decode_t_uint256",
"nodeType": "YulIdentifier",
"src": "3527:20:6"
},
"nodeType": "YulFunctionCall",
"src": "3527:53:6"
},
"variableNames": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "3517:6:6"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_uint256t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "3235:9:6",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "3246:7:6",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "3258:6:6",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "3266:6:6",
"type": ""
}
],
"src": "3190:407:6"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3668:53:6",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "3685:3:6"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "3708:5:6"
}
],
"functionName": {
"name": "cleanup_t_address",
"nodeType": "YulIdentifier",
"src": "3690:17:6"
},
"nodeType": "YulFunctionCall",
"src": "3690:24:6"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3678:6:6"
},
"nodeType": "YulFunctionCall",
"src": "3678:37:6"
},
"nodeType": "YulExpressionStatement",
"src": "3678:37:6"
}
]
},
"name": "abi_encode_t_address_to_t_address_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "3656:5:6",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "3663:3:6",
"type": ""
}
],
"src": "3603:118:6"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3786:50:6",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "3803:3:6"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "3823:5:6"
}
],
"functionName": {
"name": "cleanup_t_bool",
"nodeType": "YulIdentifier",
"src": "3808:14:6"
},
"nodeType": "YulFunctionCall",
"src": "3808:21:6"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3796:6:6"
},
"nodeType": "YulFunctionCall",
"src": "3796:34:6"
},
"nodeType": "YulExpressionStatement",
"src": "3796:34:6"
}
]
},
"name": "abi_encode_t_bool_to_t_bool_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "3774:5:6",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "3781:3:6",
"type": ""
}
],
"src": "3727:109:6"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3920:79:6",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "3937:3:6"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "3986:5:6"
}
],
"functionName": {
"name": "convert_t_contract$_ERC20_$649_to_t_address",
"nodeType": "YulIdentifier",
"src": "3942:43:6"
},
"nodeType": "YulFunctionCall",
"src": "3942:50:6"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3930:6:6"
},
"nodeType": "YulFunctionCall",
"src": "3930:63:6"
},
"nodeType": "YulExpressionStatement",
"src": "3930:63:6"
}
]
},
"name": "abi_encode_t_contract$_ERC20_$649_to_t_address_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "3908:5:6",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "3915:3:6",
"type": ""
}
],
"src": "3842:157:6"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4084:80:6",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "4101:3:6"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "4151:5:6"
}
],
"functionName": {
"name": "convert_t_enum$_PolicyStatus_$790_to_t_uint8",
"nodeType": "YulIdentifier",
"src": "4106:44:6"
},
"nodeType": "YulFunctionCall",
"src": "4106:51:6"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "4094:6:6"
},
"nodeType": "YulFunctionCall",
"src": "4094:64:6"
},
"nodeType": "YulExpressionStatement",
"src": "4094:64:6"
}
]
},
"name": "abi_encode_t_enum$_PolicyStatus_$790_to_t_uint8_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "4072:5:6",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "4079:3:6",
"type": ""
}
],
"src": "4005:159:6"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4262:272:6",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "4272:53:6",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "4319:5:6"
}
],
"functionName": {
"name": "array_length_t_string_memory_ptr",
"nodeType": "YulIdentifier",
"src": "4286:32:6"
},
"nodeType": "YulFunctionCall",
"src": "4286:39:6"
},
"variables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "4276:6:6",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "4334:78:6",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "4400:3:6"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "4405:6:6"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "4341:58:6"
},
"nodeType": "YulFunctionCall",
"src": "4341:71:6"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "4334:3:6"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "4447:5:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4454:4:6",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4443:3:6"
},
"nodeType": "YulFunctionCall",
"src": "4443:16:6"
},
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "4461:3:6"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "4466:6:6"
}
],
"functionName": {
"name": "copy_memory_to_memory",
"nodeType": "YulIdentifier",
"src": "4421:21:6"
},
"nodeType": "YulFunctionCall",
"src": "4421:52:6"
},
"nodeType": "YulExpressionStatement",
"src": "4421:52:6"
},
{
"nodeType": "YulAssignment",
"src": "4482:46:6",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "4493:3:6"
},
{
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "4520:6:6"
}
],
"functionName": {
"name": "round_up_to_mul_of_32",
"nodeType": "YulIdentifier",
"src": "4498:21:6"
},
"nodeType": "YulFunctionCall",
"src": "4498:29:6"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4489:3:6"
},
"nodeType": "YulFunctionCall",
"src": "4489:39:6"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "4482:3:6"
}
]
}
]
},
"name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "4243:5:6",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "4250:3:6",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "4258:3:6",
"type": ""
}
],
"src": "4170:364:6"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4686:221:6",
"statements": [
{
"nodeType": "YulAssignment",
"src": "4696:74:6",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "4762:3:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4767:2:6",
"type": "",
"value": "35"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "4703:58:6"
},
"nodeType": "YulFunctionCall",
"src": "4703:67:6"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "4696:3:6"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "4791:3:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4796:1:6",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4787:3:6"
},
"nodeType": "YulFunctionCall",
"src": "4787:11:6"
},
{
"kind": "string",
"nodeType": "YulLiteral",
"src": "4800:34:6",
"type": "",
"value": "ERC20: transfer to the zero addr"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "4780:6:6"
},
"nodeType": "YulFunctionCall",
"src": "4780:55:6"
},
"nodeType": "YulExpressionStatement",
"src": "4780:55:6"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "4856:3:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4861:2:6",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4852:3:6"
},
"nodeType": "YulFunctionCall",
"src": "4852:12:6"
},
{
"kind": "string",
"nodeType": "YulLiteral",
"src": "4866:5:6",
"type": "",
"value": "ess"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "4845:6:6"
},
"nodeType": "YulFunctionCall",
"src": "4845:27:6"
},
"nodeType": "YulExpressionStatement",
"src": "4845:27:6"
},
{
"nodeType": "YulAssignment",
"src": "4882:19:6",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "4893:3:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4898:2:6",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4889:3:6"
},
"nodeType": "YulFunctionCall",
"src": "4889:12:6"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "4882:3:6"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "4674:3:6",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "4682:3:6",
"type": ""
}
],
"src": "4540:367:6"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5059:220:6",
"statements": [
{
"nodeType": "YulAssignment",
"src": "5069:74:6",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "5135:3:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5140:2:6",
"type": "",
"value": "34"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "5076:58:6"
},
"nodeType": "YulFunctionCall",
"src": "5076:67:6"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "5069:3:6"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "5164:3:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5169:1:6",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5160:3:6"
},
"nodeType": "YulFunctionCall",
"src": "5160:11:6"
},
{
"kind": "string",
"nodeType": "YulLiteral",
"src": "5173:34:6",
"type": "",
"value": "ERC20: burn amount exceeds balan"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "5153:6:6"
},
"nodeType": "YulFunctionCall",
"src": "5153:55:6"
},
"nodeType": "YulExpressionStatement",
"src": "5153:55:6"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "5229:3:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5234:2:6",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5225:3:6"
},
"nodeType": "YulFunctionCall",
"src": "5225:12:6"
},
{
"kind": "string",
"nodeType": "YulLiteral",
"src": "5239:4:6",
"type": "",
"value": "ce"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "5218:6:6"
},
"nodeType": "YulFunctionCall",
"src": "5218:26:6"
},
"nodeType": "YulExpressionStatement",
"src": "5218:26:6"
},
{
"nodeType": "YulAssignment",
"src": "5254:19:6",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "5265:3:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5270:2:6",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5261:3:6"
},
"nodeType": "YulFunctionCall",
"src": "5261:12:6"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "5254:3:6"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "5047:3:6",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "5055:3:6",
"type": ""
}
],
"src": "4913:366:6"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5431:224:6",
"statements": [
{
"nodeType": "YulAssignment",
"src": "5441:74:6",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "5507:3:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5512:2:6",
"type": "",
"value": "38"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "5448:58:6"
},
"nodeType": "YulFunctionCall",
"src": "5448:67:6"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "5441:3:6"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "5536:3:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5541:1:6",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5532:3:6"
},
"nodeType": "YulFunctionCall",
"src": "5532:11:6"
},
{
"kind": "string",
"nodeType": "YulLiteral",
"src": "5545:34:6",
"type": "",
"value": "Ownable: new owner is the zero a"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "5525:6:6"
},
"nodeType": "YulFunctionCall",
"src": "5525:55:6"
},
"nodeType": "YulExpressionStatement",
"src": "5525:55:6"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "5601:3:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5606:2:6",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5597:3:6"
},
"nodeType": "YulFunctionCall",
"src": "5597:12:6"
},
{
"kind": "string",
"nodeType": "YulLiteral",
"src": "5611:8:6",
"type": "",
"value": "ddress"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "5590:6:6"
},
"nodeType": "YulFunctionCall",
"src": "5590:30:6"
},
"nodeType": "YulExpressionStatement",
"src": "5590:30:6"
},
{
"nodeType": "YulAssignment",
"src": "5630:19:6",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "5641:3:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5646:2:6",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5637:3:6"
},
"nodeType": "YulFunctionCall",
"src": "5637:12:6"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "5630:3:6"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "5419:3:6",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "5427:3:6",
"type": ""
}
],
"src": "5285:370:6"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5807:220:6",
"statements": [
{
"nodeType": "YulAssignment",
"src": "5817:74:6",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "5883:3:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5888:2:6",
"type": "",
"value": "34"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "5824:58:6"
},
"nodeType": "YulFunctionCall",
"src": "5824:67:6"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "5817:3:6"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "5912:3:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5917:1:6",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5908:3:6"
},
"nodeType": "YulFunctionCall",
"src": "5908:11:6"
},
{
"kind": "string",
"nodeType": "YulLiteral",
"src": "5921:34:6",
"type": "",
"value": "ERC20: approve to the zero addre"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "5901:6:6"
},
"nodeType": "YulFunctionCall",
"src": "5901:55:6"
},
"nodeType": "YulExpressionStatement",
"src": "5901:55:6"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "5977:3:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5982:2:6",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5973:3:6"
},
"nodeType": "YulFunctionCall",
"src": "5973:12:6"
},
{
"kind": "string",
"nodeType": "YulLiteral",
"src": "5987:4:6",
"type": "",
"value": "ss"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "5966:6:6"
},
"nodeType": "YulFunctionCall",
"src": "5966:26:6"
},
"nodeType": "YulExpressionStatement",
"src": "5966:26:6"
},
{
"nodeType": "YulAssignment",
"src": "6002:19:6",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "6013:3:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6018:2:6",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6009:3:6"
},
"nodeType": "YulFunctionCall",
"src": "6009:12:6"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "6002:3:6"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "5795:3:6",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "5803:3:6",
"type": ""
}
],
"src": "5661:366:6"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6179:171:6",
"statements": [
{
"nodeType": "YulAssignment",
"src": "6189:74:6",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "6255:3:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6260:2:6",
"type": "",
"value": "19"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "6196:58:6"
},
"nodeType": "YulFunctionCall",
"src": "6196:67:6"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "6189:3:6"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "6284:3:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6289:1:6",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6280:3:6"
},
"nodeType": "YulFunctionCall",
"src": "6280:11:6"
},
{
"kind": "string",
"nodeType": "YulLiteral",
"src": "6293:21:6",
"type": "",
"value": "Wrong policy status"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "6273:6:6"
},
"nodeType": "YulFunctionCall",
"src": "6273:42:6"
},
"nodeType": "YulExpressionStatement",
"src": "6273:42:6"
},
{
"nodeType": "YulAssignment",
"src": "6325:19:6",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "6336:3:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6341:2:6",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6332:3:6"
},
"nodeType": "YulFunctionCall",
"src": "6332:12:6"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "6325:3:6"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_39fe4003c125aa721d6588a5d77e0d923dc2e9d13bd0e280ff1830a144b9eb79_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "6167:3:6",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "6175:3:6",
"type": ""
}
],
"src": "6033:317:6"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6502:224:6",
"statements": [
{
"nodeType": "YulAssignment",
"src": "6512:74:6",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "6578:3:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6583:2:6",
"type": "",
"value": "38"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "6519:58:6"
},
"nodeType": "YulFunctionCall",
"src": "6519:67:6"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "6512:3:6"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "6607:3:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6612:1:6",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6603:3:6"
},
"nodeType": "YulFunctionCall",
"src": "6603:11:6"
},
{
"kind": "string",
"nodeType": "YulLiteral",
"src": "6616:34:6",
"type": "",
"value": "ERC20: transfer amount exceeds b"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "6596:6:6"
},
"nodeType": "YulFunctionCall",
"src": "6596:55:6"
},
"nodeType": "YulExpressionStatement",
"src": "6596:55:6"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "6672:3:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6677:2:6",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6668:3:6"
},
"nodeType": "YulFunctionCall",
"src": "6668:12:6"
},
{
"kind": "string",
"nodeType": "YulLiteral",
"src": "6682:8:6",
"type": "",
"value": "alance"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "6661:6:6"
},
"nodeType": "YulFunctionCall",
"src": "6661:30:6"
},
"nodeType": "YulExpressionStatement",
"src": "6661:30:6"
},
{
"nodeType": "YulAssignment",
"src": "6701:19:6",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "6712:3:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6717:2:6",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6708:3:6"
},
"nodeType": "YulFunctionCall",
"src": "6708:12:6"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "6701:3:6"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "6490:3:6",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "6498:3:6",
"type": ""
}
],
"src": "6356:370:6"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6878:167:6",
"statements": [
{
"nodeType": "YulAssignment",
"src": "6888:74:6",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "6954:3:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6959:2:6",
"type": "",
"value": "15"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "6895:58:6"
},
"nodeType": "YulFunctionCall",
"src": "6895:67:6"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "6888:3:6"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "6983:3:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6988:1:6",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6979:3:6"
},
"nodeType": "YulFunctionCall",
"src": "6979:11:6"
},
{
"kind": "string",
"nodeType": "YulLiteral",
"src": "6992:17:6",
"type": "",
"value": "Epoch not final"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "6972:6:6"
},
"nodeType": "YulFunctionCall",
"src": "6972:38:6"
},
"nodeType": "YulExpressionStatement",
"src": "6972:38:6"
},
{
"nodeType": "YulAssignment",
"src": "7020:19:6",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "7031:3:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7036:2:6",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7027:3:6"
},
"nodeType": "YulFunctionCall",
"src": "7027:12:6"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "7020:3:6"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_96dceaa3bc5ab8e938e1bb244b260a4b95a0a92ddbf5ea2a868311c57c109912_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "6866:3:6",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "6874:3:6",
"type": ""
}
],
"src": "6732:313:6"
},
{
"body": {
"nodeType": "YulBlock",
"src": "7197:226:6",
"statements": [
{
"nodeType": "YulAssignment",
"src": "7207:74:6",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "7273:3:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7278:2:6",
"type": "",
"value": "40"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "7214:58:6"
},
"nodeType": "YulFunctionCall",
"src": "7214:67:6"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "7207:3:6"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "7302:3:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7307:1:6",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7298:3:6"
},
"nodeType": "YulFunctionCall",
"src": "7298:11:6"
},
{
"kind": "string",
"nodeType": "YulLiteral",
"src": "7311:34:6",
"type": "",
"value": "ERC20: transfer amount exceeds a"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "7291:6:6"
},
"nodeType": "YulFunctionCall",
"src": "7291:55:6"
},
"nodeType": "YulExpressionStatement",
"src": "7291:55:6"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "7367:3:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7372:2:6",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7363:3:6"
},
"nodeType": "YulFunctionCall",
"src": "7363:12:6"
},
{
"kind": "string",
"nodeType": "YulLiteral",
"src": "7377:10:6",
"type": "",
"value": "llowance"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "7356:6:6"
},
"nodeType": "YulFunctionCall",
"src": "7356:32:6"
},
"nodeType": "YulExpressionStatement",
"src": "7356:32:6"
},
{
"nodeType": "YulAssignment",
"src": "7398:19:6",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "7409:3:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7414:2:6",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7405:3:6"
},
"nodeType": "YulFunctionCall",
"src": "7405:12:6"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "7398:3:6"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "7185:3:6",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "7193:3:6",
"type": ""
}
],
"src": "7051:372:6"
},
{
"body": {
"nodeType": "YulBlock",
"src": "7575:184:6",
"statements": [
{
"nodeType": "YulAssignment",
"src": "7585:74:6",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "7651:3:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7656:2:6",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "7592:58:6"
},
"nodeType": "YulFunctionCall",
"src": "7592:67:6"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "7585:3:6"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "7680:3:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7685:1:6",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7676:3:6"
},
"nodeType": "YulFunctionCall",
"src": "7676:11:6"
},
{
"kind": "string",
"nodeType": "YulLiteral",
"src": "7689:34:6",
"type": "",
"value": "Ownable: caller is not the owner"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "7669:6:6"
},
"nodeType": "YulFunctionCall",
"src": "7669:55:6"
},
"nodeType": "YulExpressionStatement",
"src": "7669:55:6"
},
{
"nodeType": "YulAssignment",
"src": "7734:19:6",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "7745:3:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7750:2:6",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7741:3:6"
},
"nodeType": "YulFunctionCall",
"src": "7741:12:6"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "7734:3:6"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "7563:3:6",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "7571:3:6",
"type": ""
}
],
"src": "7429:330:6"
},
{
"body": {
"nodeType": "YulBlock",
"src": "7911:219:6",
"statements": [
{
"nodeType": "YulAssignment",
"src": "7921:74:6",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "7987:3:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7992:2:6",
"type": "",
"value": "33"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "7928:58:6"
},
"nodeType": "YulFunctionCall",
"src": "7928:67:6"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "7921:3:6"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "8016:3:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8021:1:6",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8012:3:6"
},
"nodeType": "YulFunctionCall",
"src": "8012:11:6"
},
{
"kind": "string",
"nodeType": "YulLiteral",
"src": "8025:34:6",
"type": "",
"value": "ERC20: burn from the zero addres"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "8005:6:6"
},
"nodeType": "YulFunctionCall",
"src": "8005:55:6"
},
"nodeType": "YulExpressionStatement",
"src": "8005:55:6"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "8081:3:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8086:2:6",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8077:3:6"
},
"nodeType": "YulFunctionCall",
"src": "8077:12:6"
},
{
"kind": "string",
"nodeType": "YulLiteral",
"src": "8091:3:6",
"type": "",
"value": "s"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "8070:6:6"
},
"nodeType": "YulFunctionCall",
"src": "8070:25:6"
},
"nodeType": "YulExpressionStatement",
"src": "8070:25:6"
},
{
"nodeType": "YulAssignment",
"src": "8105:19:6",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "8116:3:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8121:2:6",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8112:3:6"
},
"nodeType": "YulFunctionCall",
"src": "8112:12:6"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "8105:3:6"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "7899:3:6",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "7907:3:6",
"type": ""
}
],
"src": "7765:365:6"
},
{
"body": {
"nodeType": "YulBlock",
"src": "8282:223:6",
"statements": [
{
"nodeType": "YulAssignment",
"src": "8292:74:6",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "8358:3:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8363:2:6",
"type": "",
"value": "37"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "8299:58:6"
},
"nodeType": "YulFunctionCall",
"src": "8299:67:6"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "8292:3:6"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "8387:3:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8392:1:6",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8383:3:6"
},
"nodeType": "YulFunctionCall",
"src": "8383:11:6"
},
{
"kind": "string",
"nodeType": "YulLiteral",
"src": "8396:34:6",
"type": "",
"value": "ERC20: transfer from the zero ad"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "8376:6:6"
},
"nodeType": "YulFunctionCall",
"src": "8376:55:6"
},
"nodeType": "YulExpressionStatement",
"src": "8376:55:6"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "8452:3:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8457:2:6",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8448:3:6"
},
"nodeType": "YulFunctionCall",
"src": "8448:12:6"
},
{
"kind": "string",
"nodeType": "YulLiteral",
"src": "8462:7:6",
"type": "",
"value": "dress"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "8441:6:6"
},
"nodeType": "YulFunctionCall",
"src": "8441:29:6"
},
"nodeType": "YulExpressionStatement",
"src": "8441:29:6"
},
{
"nodeType": "YulAssignment",
"src": "8480:19:6",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "8491:3:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8496:2:6",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8487:3:6"
},
"nodeType": "YulFunctionCall",
"src": "8487:12:6"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "8480:3:6"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "8270:3:6",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "8278:3:6",
"type": ""
}
],
"src": "8136:369:6"
},
{
"body": {
"nodeType": "YulBlock",
"src": "8657:222:6",
"statements": [
{
"nodeType": "YulAssignment",
"src": "8667:74:6",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "8733:3:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8738:2:6",
"type": "",
"value": "36"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "8674:58:6"
},
"nodeType": "YulFunctionCall",
"src": "8674:67:6"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "8667:3:6"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "8762:3:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8767:1:6",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8758:3:6"
},
"nodeType": "YulFunctionCall",
"src": "8758:11:6"
},
{
"kind": "string",
"nodeType": "YulLiteral",
"src": "8771:34:6",
"type": "",
"value": "ERC20: approve from the zero add"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "8751:6:6"
},
"nodeType": "YulFunctionCall",
"src": "8751:55:6"
},
"nodeType": "YulExpressionStatement",
"src": "8751:55:6"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "8827:3:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8832:2:6",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8823:3:6"
},
"nodeType": "YulFunctionCall",
"src": "8823:12:6"
},
{
"kind": "string",
"nodeType": "YulLiteral",
"src": "8837:6:6",
"type": "",
"value": "ress"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "8816:6:6"
},
"nodeType": "YulFunctionCall",
"src": "8816:28:6"
},
"nodeType": "YulExpressionStatement",
"src": "8816:28:6"
},
{
"nodeType": "YulAssignment",
"src": "8854:19:6",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "8865:3:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8870:2:6",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8861:3:6"
},
"nodeType": "YulFunctionCall",
"src": "8861:12:6"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "8854:3:6"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "8645:3:6",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "8653:3:6",
"type": ""
}
],
"src": "8511:368:6"
},
{
"body": {
"nodeType": "YulBlock",
"src": "9031:180:6",
"statements": [
{
"nodeType": "YulAssignment",
"src": "9041:74:6",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "9107:3:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9112:2:6",
"type": "",
"value": "28"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "9048:58:6"
},
"nodeType": "YulFunctionCall",
"src": "9048:67:6"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "9041:3:6"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "9136:3:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9141:1:6",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "9132:3:6"
},
"nodeType": "YulFunctionCall",
"src": "9132:11:6"
},
{
"kind": "string",
"nodeType": "YulLiteral",
"src": "9145:30:6",
"type": "",
"value": "Earlier epochs not finalized"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "9125:6:6"
},
"nodeType": "YulFunctionCall",
"src": "9125:51:6"
},
"nodeType": "YulExpressionStatement",
"src": "9125:51:6"
},
{
"nodeType": "YulAssignment",
"src": "9186:19:6",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "9197:3:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9202:2:6",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "9193:3:6"
},
"nodeType": "YulFunctionCall",
"src": "9193:12:6"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "9186:3:6"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_edb82ed7e638b37d924b3e4ecefd93a822e5898fc6bb26fe45690e2d740d6dfc_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "9019:3:6",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "9027:3:6",
"type": ""
}
],
"src": "8885:326:6"
},
{
"body": {
"nodeType": "YulBlock",
"src": "9363:223:6",
"statements": [
{
"nodeType": "YulAssignment",
"src": "9373:74:6",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "9439:3:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9444:2:6",
"type": "",
"value": "37"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "9380:58:6"
},
"nodeType": "YulFunctionCall",
"src": "9380:67:6"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "9373:3:6"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "9468:3:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9473:1:6",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "9464:3:6"
},
"nodeType": "YulFunctionCall",
"src": "9464:11:6"
},
{
"kind": "string",
"nodeType": "YulLiteral",
"src": "9477:34:6",
"type": "",
"value": "ERC20: decreased allowance below"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "9457:6:6"
},
"nodeType": "YulFunctionCall",
"src": "9457:55:6"
},
"nodeType": "YulExpressionStatement",
"src": "9457:55:6"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "9533:3:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9538:2:6",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "9529:3:6"
},
"nodeType": "YulFunctionCall",
"src": "9529:12:6"
},
{
"kind": "string",
"nodeType": "YulLiteral",
"src": "9543:7:6",
"type": "",
"value": " zero"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "9522:6:6"
},
"nodeType": "YulFunctionCall",
"src": "9522:29:6"
},
"nodeType": "YulExpressionStatement",
"src": "9522:29:6"
},
{
"nodeType": "YulAssignment",
"src": "9561:19:6",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "9572:3:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9577:2:6",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "9568:3:6"
},
"nodeType": "YulFunctionCall",
"src": "9568:12:6"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "9561:3:6"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "9351:3:6",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "9359:3:6",
"type": ""
}
],
"src": "9217:369:6"
},
{
"body": {
"nodeType": "YulBlock",
"src": "9738:183:6",
"statements": [
{
"nodeType": "YulAssignment",
"src": "9748:74:6",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "9814:3:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9819:2:6",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "9755:58:6"
},
"nodeType": "YulFunctionCall",
"src": "9755:67:6"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "9748:3:6"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "9843:3:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9848:1:6",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "9839:3:6"
},
"nodeType": "YulFunctionCall",
"src": "9839:11:6"
},
{
"kind": "string",
"nodeType": "YulLiteral",
"src": "9852:33:6",
"type": "",
"value": "ERC20: mint to the zero address"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "9832:6:6"
},
"nodeType": "YulFunctionCall",
"src": "9832:54:6"
},
"nodeType": "YulExpressionStatement",
"src": "9832:54:6"
},
{
"nodeType": "YulAssignment",
"src": "9896:19:6",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "9907:3:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9912:2:6",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "9903:3:6"
},
"nodeType": "YulFunctionCall",
"src": "9903:12:6"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "9896:3:6"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "9726:3:6",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "9734:3:6",
"type": ""
}
],
"src": "9592:329:6"
},
{
"body": {
"nodeType": "YulBlock",
"src": "9992:53:6",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "10009:3:6"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "10032:5:6"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "10014:17:6"
},
"nodeType": "YulFunctionCall",
"src": "10014:24:6"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "10002:6:6"
},
"nodeType": "YulFunctionCall",
"src": "10002:37:6"
},
"nodeType": "YulExpressionStatement",
"src": "10002:37:6"
}
]
},
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "9980:5:6",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "9987:3:6",
"type": ""
}
],
"src": "9927:118:6"
},
{
"body": {
"nodeType": "YulBlock",
"src": "10112:51:6",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "10129:3:6"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "10150:5:6"
}
],
"functionName": {
"name": "cleanup_t_uint8",
"nodeType": "YulIdentifier",
"src": "10134:15:6"
},
"nodeType": "YulFunctionCall",
"src": "10134:22:6"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "10122:6:6"
},
"nodeType": "YulFunctionCall",
"src": "10122:35:6"
},
"nodeType": "YulExpressionStatement",
"src": "10122:35:6"
}
]
},
"name": "abi_encode_t_uint8_to_t_uint8_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "10100:5:6",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "10107:3:6",
"type": ""
}
],
"src": "10051:112:6"
},
{
"body": {
"nodeType": "YulBlock",
"src": "10267:124:6",
"statements": [
{
"nodeType": "YulAssignment",
"src": "10277:26:6",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "10289:9:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10300:2:6",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "10285:3:6"
},
"nodeType": "YulFunctionCall",
"src": "10285:18:6"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "10277:4:6"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "10357:6:6"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "10370:9:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10381:1:6",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "10366:3:6"
},
"nodeType": "YulFunctionCall",
"src": "10366:17:6"
}
],
"functionName": {
"name": "abi_encode_t_address_to_t_address_fromStack",
"nodeType": "YulIdentifier",
"src": "10313:43:6"
},
"nodeType": "YulFunctionCall",
"src": "10313:71:6"
},
"nodeType": "YulExpressionStatement",
"src": "10313:71:6"
}
]
},
"name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "10239:9:6",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "10251:6:6",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "10262:4:6",
"type": ""
}
],
"src": "10169:222:6"
},
{
"body": {
"nodeType": "YulBlock",
"src": "10551:288:6",
"statements": [
{
"nodeType": "YulAssignment",
"src": "10561:26:6",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "10573:9:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10584:2:6",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "10569:3:6"
},
"nodeType": "YulFunctionCall",
"src": "10569:18:6"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "10561:4:6"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "10641:6:6"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "10654:9:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10665:1:6",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "10650:3:6"
},
"nodeType": "YulFunctionCall",
"src": "10650:17:6"
}
],
"functionName": {
"name": "abi_encode_t_address_to_t_address_fromStack",
"nodeType": "YulIdentifier",
"src": "10597:43:6"
},
"nodeType": "YulFunctionCall",
"src": "10597:71:6"
},
"nodeType": "YulExpressionStatement",
"src": "10597:71:6"
},
{
"expression": {
"arguments": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "10722:6:6"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "10735:9:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10746:2:6",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "10731:3:6"
},
"nodeType": "YulFunctionCall",
"src": "10731:18:6"
}
],
"functionName": {
"name": "abi_encode_t_address_to_t_address_fromStack",
"nodeType": "YulIdentifier",
"src": "10678:43:6"
},
"nodeType": "YulFunctionCall",
"src": "10678:72:6"
},
"nodeType": "YulExpressionStatement",
"src": "10678:72:6"
},
{
"expression": {
"arguments": [
{
"name": "value2",
"nodeType": "YulIdentifier",
"src": "10804:6:6"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "10817:9:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10828:2:6",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "10813:3:6"
},
"nodeType": "YulFunctionCall",
"src": "10813:18:6"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulIdentifier",
"src": "10760:43:6"
},
"nodeType": "YulFunctionCall",
"src": "10760:72:6"
},
"nodeType": "YulExpressionStatement",
"src": "10760:72:6"
}
]
},
"name": "abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "10507:9:6",
"type": ""
},
{
"name": "value2",
"nodeType": "YulTypedName",
"src": "10519:6:6",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "10527:6:6",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "10535:6:6",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "10546:4:6",
"type": ""
}
],
"src": "10397:442:6"
},
{
"body": {
"nodeType": "YulBlock",
"src": "10971:206:6",
"statements": [
{
"nodeType": "YulAssignment",
"src": "10981:26:6",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "10993:9:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11004:2:6",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "10989:3:6"
},
"nodeType": "YulFunctionCall",
"src": "10989:18:6"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "10981:4:6"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "11061:6:6"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "11074:9:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11085:1:6",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "11070:3:6"
},
"nodeType": "YulFunctionCall",
"src": "11070:17:6"
}
],
"functionName": {
"name": "abi_encode_t_address_to_t_address_fromStack",
"nodeType": "YulIdentifier",
"src": "11017:43:6"
},
"nodeType": "YulFunctionCall",
"src": "11017:71:6"
},
"nodeType": "YulExpressionStatement",
"src": "11017:71:6"
},
{
"expression": {
"arguments": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "11142:6:6"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "11155:9:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11166:2:6",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "11151:3:6"
},
"nodeType": "YulFunctionCall",
"src": "11151:18:6"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulIdentifier",
"src": "11098:43:6"
},
"nodeType": "YulFunctionCall",
"src": "11098:72:6"
},
"nodeType": "YulExpressionStatement",
"src": "11098:72:6"
}
]
},
"name": "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "10935:9:6",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "10947:6:6",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "10955:6:6",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "10966:4:6",
"type": ""
}
],
"src": "10845:332:6"
},
{
"body": {
"nodeType": "YulBlock",
"src": "11337:288:6",
"statements": [
{
"nodeType": "YulAssignment",
"src": "11347:26:6",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "11359:9:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11370:2:6",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "11355:3:6"
},
"nodeType": "YulFunctionCall",
"src": "11355:18:6"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "11347:4:6"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "11427:6:6"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "11440:9:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11451:1:6",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "11436:3:6"
},
"nodeType": "YulFunctionCall",
"src": "11436:17:6"
}
],
"functionName": {
"name": "abi_encode_t_address_to_t_address_fromStack",
"nodeType": "YulIdentifier",
"src": "11383:43:6"
},
"nodeType": "YulFunctionCall",
"src": "11383:71:6"
},
"nodeType": "YulExpressionStatement",
"src": "11383:71:6"
},
{
"expression": {
"arguments": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "11508:6:6"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "11521:9:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11532:2:6",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "11517:3:6"
},
"nodeType": "YulFunctionCall",
"src": "11517:18:6"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulIdentifier",
"src": "11464:43:6"
},
"nodeType": "YulFunctionCall",
"src": "11464:72:6"
},
"nodeType": "YulExpressionStatement",
"src": "11464:72:6"
},
{
"expression": {
"arguments": [
{
"name": "value2",
"nodeType": "YulIdentifier",
"src": "11590:6:6"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "11603:9:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11614:2:6",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "11599:3:6"
},
"nodeType": "YulFunctionCall",
"src": "11599:18:6"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulIdentifier",
"src": "11546:43:6"
},
"nodeType": "YulFunctionCall",
"src": "11546:72:6"
},
"nodeType": "YulExpressionStatement",
"src": "11546:72:6"
}
]
},
"name": "abi_encode_tuple_t_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "11293:9:6",
"type": ""
},
{
"name": "value2",
"nodeType": "YulTypedName",
"src": "11305:6:6",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "11313:6:6",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "11321:6:6",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "11332:4:6",
"type": ""
}
],
"src": "11183:442:6"
},
{
"body": {
"nodeType": "YulBlock",
"src": "11813:371:6",
"statements": [
{
"nodeType": "YulAssignment",
"src": "11823:27:6",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "11835:9:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11846:3:6",
"type": "",
"value": "128"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "11831:3:6"
},
"nodeType": "YulFunctionCall",
"src": "11831:19:6"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "11823:4:6"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "11904:6:6"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "11917:9:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11928:1:6",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "11913:3:6"
},
"nodeType": "YulFunctionCall",
"src": "11913:17:6"
}
],
"functionName": {
"name": "abi_encode_t_address_to_t_address_fromStack",
"nodeType": "YulIdentifier",
"src": "11860:43:6"
},
"nodeType": "YulFunctionCall",
"src": "11860:71:6"
},
"nodeType": "YulExpressionStatement",
"src": "11860:71:6"
},
{
"expression": {
"arguments": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "11985:6:6"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "11998:9:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "12009:2:6",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "11994:3:6"
},
"nodeType": "YulFunctionCall",
"src": "11994:18:6"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulIdentifier",
"src": "11941:43:6"
},
"nodeType": "YulFunctionCall",
"src": "11941:72:6"
},
"nodeType": "YulExpressionStatement",
"src": "11941:72:6"
},
{
"expression": {
"arguments": [
{
"name": "value2",
"nodeType": "YulIdentifier",
"src": "12067:6:6"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "12080:9:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "12091:2:6",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "12076:3:6"
},
"nodeType": "YulFunctionCall",
"src": "12076:18:6"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulIdentifier",
"src": "12023:43:6"
},
"nodeType": "YulFunctionCall",
"src": "12023:72:6"
},
"nodeType": "YulExpressionStatement",
"src": "12023:72:6"
},
{
"expression": {
"arguments": [
{
"name": "value3",
"nodeType": "YulIdentifier",
"src": "12149:6:6"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "12162:9:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "12173:2:6",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "12158:3:6"
},
"nodeType": "YulFunctionCall",
"src": "12158:18:6"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulIdentifier",
"src": "12105:43:6"
},
"nodeType": "YulFunctionCall",
"src": "12105:72:6"
},
"nodeType": "YulExpressionStatement",
"src": "12105:72:6"
}
]
},
"name": "abi_encode_tuple_t_address_t_uint256_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256_t_uint256__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "11761:9:6",
"type": ""
},
{
"name": "value3",
"nodeType": "YulTypedName",
"src": "11773:6:6",
"type": ""
},
{
"name": "value2",
"nodeType": "YulTypedName",
"src": "11781:6:6",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "11789:6:6",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "11797:6:6",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "11808:4:6",
"type": ""
}
],
"src": "11631:553:6"
},
{
"body": {
"nodeType": "YulBlock",
"src": "12282:118:6",
"statements": [
{
"nodeType": "YulAssignment",
"src": "12292:26:6",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "12304:9:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "12315:2:6",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "12300:3:6"
},
"nodeType": "YulFunctionCall",
"src": "12300:18:6"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "12292:4:6"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "12366:6:6"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "12379:9:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "12390:1:6",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "12375:3:6"
},
"nodeType": "YulFunctionCall",
"src": "12375:17:6"
}
],
"functionName": {
"name": "abi_encode_t_bool_to_t_bool_fromStack",
"nodeType": "YulIdentifier",
"src": "12328:37:6"
},
"nodeType": "YulFunctionCall",
"src": "12328:65:6"
},
"nodeType": "YulExpressionStatement",
"src": "12328:65:6"
}
]
},
"name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "12254:9:6",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "12266:6:6",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "12277:4:6",
"type": ""
}
],
"src": "12190:210:6"
},
{
"body": {
"nodeType": "YulBlock",
"src": "12750:863:6",
"statements": [
{
"nodeType": "YulAssignment",
"src": "12760:27:6",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "12772:9:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "12783:3:6",
"type": "",
"value": "320"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "12768:3:6"
},
"nodeType": "YulFunctionCall",
"src": "12768:19:6"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "12760:4:6"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "12835:6:6"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "12848:9:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "12859:1:6",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "12844:3:6"
},
"nodeType": "YulFunctionCall",
"src": "12844:17:6"
}
],
"functionName": {
"name": "abi_encode_t_bool_to_t_bool_fromStack",
"nodeType": "YulIdentifier",
"src": "12797:37:6"
},
"nodeType": "YulFunctionCall",
"src": "12797:65:6"
},
"nodeType": "YulExpressionStatement",
"src": "12797:65:6"
},
{
"expression": {
"arguments": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "12916:6:6"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "12929:9:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "12940:2:6",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "12925:3:6"
},
"nodeType": "YulFunctionCall",
"src": "12925:18:6"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulIdentifier",
"src": "12872:43:6"
},
"nodeType": "YulFunctionCall",
"src": "12872:72:6"
},
"nodeType": "YulExpressionStatement",
"src": "12872:72:6"
},
{
"expression": {
"arguments": [
{
"name": "value2",
"nodeType": "YulIdentifier",
"src": "12998:6:6"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "13011:9:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "13022:2:6",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "13007:3:6"
},
"nodeType": "YulFunctionCall",
"src": "13007:18:6"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulIdentifier",
"src": "12954:43:6"
},
"nodeType": "YulFunctionCall",
"src": "12954:72:6"
},
"nodeType": "YulExpressionStatement",
"src": "12954:72:6"
},
{
"expression": {
"arguments": [
{
"name": "value3",
"nodeType": "YulIdentifier",
"src": "13080:6:6"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "13093:9:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "13104:2:6",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "13089:3:6"
},
"nodeType": "YulFunctionCall",
"src": "13089:18:6"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulIdentifier",
"src": "13036:43:6"
},
"nodeType": "YulFunctionCall",
"src": "13036:72:6"
},
"nodeType": "YulExpressionStatement",
"src": "13036:72:6"
},
{
"expression": {
"arguments": [
{
"name": "value4",
"nodeType": "YulIdentifier",
"src": "13162:6:6"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "13175:9:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "13186:3:6",
"type": "",
"value": "128"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "13171:3:6"
},
"nodeType": "YulFunctionCall",
"src": "13171:19:6"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulIdentifier",
"src": "13118:43:6"
},
"nodeType": "YulFunctionCall",
"src": "13118:73:6"
},
"nodeType": "YulExpressionStatement",
"src": "13118:73:6"
},
{
"expression": {
"arguments": [
{
"name": "value5",
"nodeType": "YulIdentifier",
"src": "13245:6:6"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "13258:9:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "13269:3:6",
"type": "",
"value": "160"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "13254:3:6"
},
"nodeType": "YulFunctionCall",
"src": "13254:19:6"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulIdentifier",
"src": "13201:43:6"
},
"nodeType": "YulFunctionCall",
"src": "13201:73:6"
},
"nodeType": "YulExpressionStatement",
"src": "13201:73:6"
},
{
"expression": {
"arguments": [
{
"name": "value6",
"nodeType": "YulIdentifier",
"src": "13328:6:6"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "13341:9:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "13352:3:6",
"type": "",
"value": "192"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "13337:3:6"
},
"nodeType": "YulFunctionCall",
"src": "13337:19:6"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulIdentifier",
"src": "13284:43:6"
},
"nodeType": "YulFunctionCall",
"src": "13284:73:6"
},
"nodeType": "YulExpressionStatement",
"src": "13284:73:6"
},
{
"expression": {
"arguments": [
{
"name": "value7",
"nodeType": "YulIdentifier",
"src": "13411:6:6"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "13424:9:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "13435:3:6",
"type": "",
"value": "224"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "13420:3:6"
},
"nodeType": "YulFunctionCall",
"src": "13420:19:6"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulIdentifier",
"src": "13367:43:6"
},
"nodeType": "YulFunctionCall",
"src": "13367:73:6"
},
"nodeType": "YulExpressionStatement",
"src": "13367:73:6"
},
{
"expression": {
"arguments": [
{
"name": "value8",
"nodeType": "YulIdentifier",
"src": "13494:6:6"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "13507:9:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "13518:3:6",
"type": "",
"value": "256"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "13503:3:6"
},
"nodeType": "YulFunctionCall",
"src": "13503:19:6"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulIdentifier",
"src": "13450:43:6"
},
"nodeType": "YulFunctionCall",
"src": "13450:73:6"
},
"nodeType": "YulExpressionStatement",
"src": "13450:73:6"
},
{
"expression": {
"arguments": [
{
"name": "value9",
"nodeType": "YulIdentifier",
"src": "13577:6:6"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "13590:9:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "13601:3:6",
"type": "",
"value": "288"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "13586:3:6"
},
"nodeType": "YulFunctionCall",
"src": "13586:19:6"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulIdentifier",
"src": "13533:43:6"
},
"nodeType": "YulFunctionCall",
"src": "13533:73:6"
},
"nodeType": "YulExpressionStatement",
"src": "13533:73:6"
}
]
},
"name": "abi_encode_tuple_t_bool_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256__to_t_bool_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "12650:9:6",
"type": ""
},
{
"name": "value9",
"nodeType": "YulTypedName",
"src": "12662:6:6",
"type": ""
},
{
"name": "value8",
"nodeType": "YulTypedName",
"src": "12670:6:6",
"type": ""
},
{
"name": "value7",
"nodeType": "YulTypedName",
"src": "12678:6:6",
"type": ""
},
{
"name": "value6",
"nodeType": "YulTypedName",
"src": "12686:6:6",
"type": ""
},
{
"name": "value5",
"nodeType": "YulTypedName",
"src": "12694:6:6",
"type": ""
},
{
"name": "value4",
"nodeType": "YulTypedName",
"src": "12702:6:6",
"type": ""
},
{
"name": "value3",
"nodeType": "YulTypedName",
"src": "12710:6:6",
"type": ""
},
{
"name": "value2",
"nodeType": "YulTypedName",
"src": "12718:6:6",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "12726:6:6",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "12734:6:6",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "12745:4:6",
"type": ""
}
],
"src": "12406:1207:6"
},
{
"body": {
"nodeType": "YulBlock",
"src": "13730:137:6",
"statements": [
{
"nodeType": "YulAssignment",
"src": "13740:26:6",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "13752:9:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "13763:2:6",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "13748:3:6"
},
"nodeType": "YulFunctionCall",
"src": "13748:18:6"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "13740:4:6"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "13833:6:6"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "13846:9:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "13857:1:6",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "13842:3:6"
},
"nodeType": "YulFunctionCall",
"src": "13842:17:6"
}
],
"functionName": {
"name": "abi_encode_t_contract$_ERC20_$649_to_t_address_fromStack",
"nodeType": "YulIdentifier",
"src": "13776:56:6"
},
"nodeType": "YulFunctionCall",
"src": "13776:84:6"
},
"nodeType": "YulExpressionStatement",
"src": "13776:84:6"
}
]
},
"name": "abi_encode_tuple_t_contract$_ERC20_$649__to_t_address__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "13702:9:6",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "13714:6:6",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "13725:4:6",
"type": ""
}
],
"src": "13619:248:6"
},
{
"body": {
"nodeType": "YulBlock",
"src": "13991:195:6",
"statements": [
{
"nodeType": "YulAssignment",
"src": "14001:26:6",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "14013:9:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "14024:2:6",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "14009:3:6"
},
"nodeType": "YulFunctionCall",
"src": "14009:18:6"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "14001:4:6"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "14048:9:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "14059:1:6",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "14044:3:6"
},
"nodeType": "YulFunctionCall",
"src": "14044:17:6"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "14067:4:6"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "14073:9:6"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "14063:3:6"
},
"nodeType": "YulFunctionCall",
"src": "14063:20:6"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "14037:6:6"
},
"nodeType": "YulFunctionCall",
"src": "14037:47:6"
},
"nodeType": "YulExpressionStatement",
"src": "14037:47:6"
},
{
"nodeType": "YulAssignment",
"src": "14093:86:6",
"value": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "14165:6:6"
},
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "14174:4:6"
}
],
"functionName": {
"name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "14101:63:6"
},
"nodeType": "YulFunctionCall",
"src": "14101:78:6"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "14093:4:6"
}
]
}
]
},
"name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "13963:9:6",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "13975:6:6",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "13986:4:6",
"type": ""
}
],
"src": "13873:313:6"
},
{
"body": {
"nodeType": "YulBlock",
"src": "14363:248:6",
"statements": [
{
"nodeType": "YulAssignment",
"src": "14373:26:6",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "14385:9:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "14396:2:6",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "14381:3:6"
},
"nodeType": "YulFunctionCall",
"src": "14381:18:6"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "14373:4:6"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "14420:9:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "14431:1:6",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "14416:3:6"
},
"nodeType": "YulFunctionCall",
"src": "14416:17:6"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "14439:4:6"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "14445:9:6"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "14435:3:6"
},
"nodeType": "YulFunctionCall",
"src": "14435:20:6"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "14409:6:6"
},
"nodeType": "YulFunctionCall",
"src": "14409:47:6"
},
"nodeType": "YulExpressionStatement",
"src": "14409:47:6"
},
{
"nodeType": "YulAssignment",
"src": "14465:139:6",
"value": {
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "14599:4:6"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "14473:124:6"
},
"nodeType": "YulFunctionCall",
"src": "14473:131:6"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "14465:4:6"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "14343:9:6",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "14358:4:6",
"type": ""
}
],
"src": "14192:419:6"
},
{
"body": {
"nodeType": "YulBlock",
"src": "14788:248:6",
"statements": [
{
"nodeType": "YulAssignment",
"src": "14798:26:6",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "14810:9:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "14821:2:6",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "14806:3:6"
},
"nodeType": "YulFunctionCall",
"src": "14806:18:6"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "14798:4:6"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "14845:9:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "14856:1:6",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "14841:3:6"
},
"nodeType": "YulFunctionCall",
"src": "14841:17:6"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "14864:4:6"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "14870:9:6"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "14860:3:6"
},
"nodeType": "YulFunctionCall",
"src": "14860:20:6"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "14834:6:6"
},
"nodeType": "YulFunctionCall",
"src": "14834:47:6"
},
"nodeType": "YulExpressionStatement",
"src": "14834:47:6"
},
{
"nodeType": "YulAssignment",
"src": "14890:139:6",
"value": {
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "15024:4:6"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "14898:124:6"
},
"nodeType": "YulFunctionCall",
"src": "14898:131:6"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "14890:4:6"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "14768:9:6",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "14783:4:6",
"type": ""
}
],
"src": "14617:419:6"
},
{
"body": {
"nodeType": "YulBlock",
"src": "15213:248:6",
"statements": [
{
"nodeType": "YulAssignment",
"src": "15223:26:6",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "15235:9:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "15246:2:6",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "15231:3:6"
},
"nodeType": "YulFunctionCall",
"src": "15231:18:6"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "15223:4:6"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "15270:9:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "15281:1:6",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "15266:3:6"
},
"nodeType": "YulFunctionCall",
"src": "15266:17:6"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "15289:4:6"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "15295:9:6"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "15285:3:6"
},
"nodeType": "YulFunctionCall",
"src": "15285:20:6"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "15259:6:6"
},
"nodeType": "YulFunctionCall",
"src": "15259:47:6"
},
"nodeType": "YulExpressionStatement",
"src": "15259:47:6"
},
{
"nodeType": "YulAssignment",
"src": "15315:139:6",
"value": {
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "15449:4:6"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "15323:124:6"
},
"nodeType": "YulFunctionCall",
"src": "15323:131:6"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "15315:4:6"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "15193:9:6",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "15208:4:6",
"type": ""
}
],
"src": "15042:419:6"
},
{
"body": {
"nodeType": "YulBlock",
"src": "15638:248:6",
"statements": [
{
"nodeType": "YulAssignment",
"src": "15648:26:6",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "15660:9:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "15671:2:6",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "15656:3:6"
},
"nodeType": "YulFunctionCall",
"src": "15656:18:6"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "15648:4:6"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "15695:9:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "15706:1:6",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "15691:3:6"
},
"nodeType": "YulFunctionCall",
"src": "15691:17:6"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "15714:4:6"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "15720:9:6"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "15710:3:6"
},
"nodeType": "YulFunctionCall",
"src": "15710:20:6"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "15684:6:6"
},
"nodeType": "YulFunctionCall",
"src": "15684:47:6"
},
"nodeType": "YulExpressionStatement",
"src": "15684:47:6"
},
{
"nodeType": "YulAssignment",
"src": "15740:139:6",
"value": {
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "15874:4:6"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "15748:124:6"
},
"nodeType": "YulFunctionCall",
"src": "15748:131:6"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "15740:4:6"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "15618:9:6",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "15633:4:6",
"type": ""
}
],
"src": "15467:419:6"
},
{
"body": {
"nodeType": "YulBlock",
"src": "16063:248:6",
"statements": [
{
"nodeType": "YulAssignment",
"src": "16073:26:6",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "16085:9:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "16096:2:6",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "16081:3:6"
},
"nodeType": "YulFunctionCall",
"src": "16081:18:6"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "16073:4:6"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "16120:9:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "16131:1:6",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "16116:3:6"
},
"nodeType": "YulFunctionCall",
"src": "16116:17:6"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "16139:4:6"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "16145:9:6"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "16135:3:6"
},
"nodeType": "YulFunctionCall",
"src": "16135:20:6"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "16109:6:6"
},
"nodeType": "YulFunctionCall",
"src": "16109:47:6"
},
"nodeType": "YulExpressionStatement",
"src": "16109:47:6"
},
{
"nodeType": "YulAssignment",
"src": "16165:139:6",
"value": {
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "16299:4:6"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_39fe4003c125aa721d6588a5d77e0d923dc2e9d13bd0e280ff1830a144b9eb79_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "16173:124:6"
},
"nodeType": "YulFunctionCall",
"src": "16173:131:6"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "16165:4:6"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_39fe4003c125aa721d6588a5d77e0d923dc2e9d13bd0e280ff1830a144b9eb79__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "16043:9:6",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "16058:4:6",
"type": ""
}
],
"src": "15892:419:6"
},
{
"body": {
"nodeType": "YulBlock",
"src": "16488:248:6",
"statements": [
{
"nodeType": "YulAssignment",
"src": "16498:26:6",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "16510:9:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "16521:2:6",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "16506:3:6"
},
"nodeType": "YulFunctionCall",
"src": "16506:18:6"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "16498:4:6"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "16545:9:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "16556:1:6",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "16541:3:6"
},
"nodeType": "YulFunctionCall",
"src": "16541:17:6"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "16564:4:6"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "16570:9:6"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "16560:3:6"
},
"nodeType": "YulFunctionCall",
"src": "16560:20:6"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "16534:6:6"
},
"nodeType": "YulFunctionCall",
"src": "16534:47:6"
},
"nodeType": "YulExpressionStatement",
"src": "16534:47:6"
},
{
"nodeType": "YulAssignment",
"src": "16590:139:6",
"value": {
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "16724:4:6"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "16598:124:6"
},
"nodeType": "YulFunctionCall",
"src": "16598:131:6"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "16590:4:6"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "16468:9:6",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "16483:4:6",
"type": ""
}
],
"src": "16317:419:6"
},
{
"body": {
"nodeType": "YulBlock",
"src": "16913:248:6",
"statements": [
{
"nodeType": "YulAssignment",
"src": "16923:26:6",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "16935:9:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "16946:2:6",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "16931:3:6"
},
"nodeType": "YulFunctionCall",
"src": "16931:18:6"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "16923:4:6"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "16970:9:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "16981:1:6",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "16966:3:6"
},
"nodeType": "YulFunctionCall",
"src": "16966:17:6"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "16989:4:6"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "16995:9:6"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "16985:3:6"
},
"nodeType": "YulFunctionCall",
"src": "16985:20:6"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "16959:6:6"
},
"nodeType": "YulFunctionCall",
"src": "16959:47:6"
},
"nodeType": "YulExpressionStatement",
"src": "16959:47:6"
},
{
"nodeType": "YulAssignment",
"src": "17015:139:6",
"value": {
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "17149:4:6"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_96dceaa3bc5ab8e938e1bb244b260a4b95a0a92ddbf5ea2a868311c57c109912_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "17023:124:6"
},
"nodeType": "YulFunctionCall",
"src": "17023:131:6"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "17015:4:6"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_96dceaa3bc5ab8e938e1bb244b260a4b95a0a92ddbf5ea2a868311c57c109912__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "16893:9:6",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "16908:4:6",
"type": ""
}
],
"src": "16742:419:6"
},
{
"body": {
"nodeType": "YulBlock",
"src": "17338:248:6",
"statements": [
{
"nodeType": "YulAssignment",
"src": "17348:26:6",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "17360:9:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "17371:2:6",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "17356:3:6"
},
"nodeType": "YulFunctionCall",
"src": "17356:18:6"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "17348:4:6"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "17395:9:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "17406:1:6",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "17391:3:6"
},
"nodeType": "YulFunctionCall",
"src": "17391:17:6"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "17414:4:6"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "17420:9:6"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "17410:3:6"
},
"nodeType": "YulFunctionCall",
"src": "17410:20:6"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "17384:6:6"
},
"nodeType": "YulFunctionCall",
"src": "17384:47:6"
},
"nodeType": "YulExpressionStatement",
"src": "17384:47:6"
},
{
"nodeType": "YulAssignment",
"src": "17440:139:6",
"value": {
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "17574:4:6"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "17448:124:6"
},
"nodeType": "YulFunctionCall",
"src": "17448:131:6"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "17440:4:6"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "17318:9:6",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "17333:4:6",
"type": ""
}
],
"src": "17167:419:6"
},
{
"body": {
"nodeType": "YulBlock",
"src": "17763:248:6",
"statements": [
{
"nodeType": "YulAssignment",
"src": "17773:26:6",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "17785:9:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "17796:2:6",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "17781:3:6"
},
"nodeType": "YulFunctionCall",
"src": "17781:18:6"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "17773:4:6"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "17820:9:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "17831:1:6",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "17816:3:6"
},
"nodeType": "YulFunctionCall",
"src": "17816:17:6"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "17839:4:6"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "17845:9:6"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "17835:3:6"
},
"nodeType": "YulFunctionCall",
"src": "17835:20:6"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "17809:6:6"
},
"nodeType": "YulFunctionCall",
"src": "17809:47:6"
},
"nodeType": "YulExpressionStatement",
"src": "17809:47:6"
},
{
"nodeType": "YulAssignment",
"src": "17865:139:6",
"value": {
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "17999:4:6"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "17873:124:6"
},
"nodeType": "YulFunctionCall",
"src": "17873:131:6"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "17865:4:6"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "17743:9:6",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "17758:4:6",
"type": ""
}
],
"src": "17592:419:6"
},
{
"body": {
"nodeType": "YulBlock",
"src": "18188:248:6",
"statements": [
{
"nodeType": "YulAssignment",
"src": "18198:26:6",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "18210:9:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "18221:2:6",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "18206:3:6"
},
"nodeType": "YulFunctionCall",
"src": "18206:18:6"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "18198:4:6"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "18245:9:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "18256:1:6",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "18241:3:6"
},
"nodeType": "YulFunctionCall",
"src": "18241:17:6"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "18264:4:6"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "18270:9:6"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "18260:3:6"
},
"nodeType": "YulFunctionCall",
"src": "18260:20:6"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "18234:6:6"
},
"nodeType": "YulFunctionCall",
"src": "18234:47:6"
},
"nodeType": "YulExpressionStatement",
"src": "18234:47:6"
},
{
"nodeType": "YulAssignment",
"src": "18290:139:6",
"value": {
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "18424:4:6"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "18298:124:6"
},
"nodeType": "YulFunctionCall",
"src": "18298:131:6"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "18290:4:6"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "18168:9:6",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "18183:4:6",
"type": ""
}
],
"src": "18017:419:6"
},
{
"body": {
"nodeType": "YulBlock",
"src": "18613:248:6",
"statements": [
{
"nodeType": "YulAssignment",
"src": "18623:26:6",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "18635:9:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "18646:2:6",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "18631:3:6"
},
"nodeType": "YulFunctionCall",
"src": "18631:18:6"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "18623:4:6"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "18670:9:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "18681:1:6",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "18666:3:6"
},
"nodeType": "YulFunctionCall",
"src": "18666:17:6"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "18689:4:6"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "18695:9:6"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "18685:3:6"
},
"nodeType": "YulFunctionCall",
"src": "18685:20:6"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "18659:6:6"
},
"nodeType": "YulFunctionCall",
"src": "18659:47:6"
},
"nodeType": "YulExpressionStatement",
"src": "18659:47:6"
},
{
"nodeType": "YulAssignment",
"src": "18715:139:6",
"value": {
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "18849:4:6"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "18723:124:6"
},
"nodeType": "YulFunctionCall",
"src": "18723:131:6"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "18715:4:6"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "18593:9:6",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "18608:4:6",
"type": ""
}
],
"src": "18442:419:6"
},
{
"body": {
"nodeType": "YulBlock",
"src": "19038:248:6",
"statements": [
{
"nodeType": "YulAssignment",
"src": "19048:26:6",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "19060:9:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "19071:2:6",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "19056:3:6"
},
"nodeType": "YulFunctionCall",
"src": "19056:18:6"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "19048:4:6"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "19095:9:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "19106:1:6",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "19091:3:6"
},
"nodeType": "YulFunctionCall",
"src": "19091:17:6"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "19114:4:6"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "19120:9:6"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "19110:3:6"
},
"nodeType": "YulFunctionCall",
"src": "19110:20:6"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "19084:6:6"
},
"nodeType": "YulFunctionCall",
"src": "19084:47:6"
},
"nodeType": "YulExpressionStatement",
"src": "19084:47:6"
},
{
"nodeType": "YulAssignment",
"src": "19140:139:6",
"value": {
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "19274:4:6"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "19148:124:6"
},
"nodeType": "YulFunctionCall",
"src": "19148:131:6"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "19140:4:6"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "19018:9:6",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "19033:4:6",
"type": ""
}
],
"src": "18867:419:6"
},
{
"body": {
"nodeType": "YulBlock",
"src": "19463:248:6",
"statements": [
{
"nodeType": "YulAssignment",
"src": "19473:26:6",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "19485:9:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "19496:2:6",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "19481:3:6"
},
"nodeType": "YulFunctionCall",
"src": "19481:18:6"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "19473:4:6"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "19520:9:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "19531:1:6",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "19516:3:6"
},
"nodeType": "YulFunctionCall",
"src": "19516:17:6"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "19539:4:6"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "19545:9:6"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "19535:3:6"
},
"nodeType": "YulFunctionCall",
"src": "19535:20:6"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "19509:6:6"
},
"nodeType": "YulFunctionCall",
"src": "19509:47:6"
},
"nodeType": "YulExpressionStatement",
"src": "19509:47:6"
},
{
"nodeType": "YulAssignment",
"src": "19565:139:6",
"value": {
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "19699:4:6"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_edb82ed7e638b37d924b3e4ecefd93a822e5898fc6bb26fe45690e2d740d6dfc_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "19573:124:6"
},
"nodeType": "YulFunctionCall",
"src": "19573:131:6"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "19565:4:6"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_edb82ed7e638b37d924b3e4ecefd93a822e5898fc6bb26fe45690e2d740d6dfc__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "19443:9:6",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "19458:4:6",
"type": ""
}
],
"src": "19292:419:6"
},
{
"body": {
"nodeType": "YulBlock",
"src": "19888:248:6",
"statements": [
{
"nodeType": "YulAssignment",
"src": "19898:26:6",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "19910:9:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "19921:2:6",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "19906:3:6"
},
"nodeType": "YulFunctionCall",
"src": "19906:18:6"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "19898:4:6"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "19945:9:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "19956:1:6",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "19941:3:6"
},
"nodeType": "YulFunctionCall",
"src": "19941:17:6"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "19964:4:6"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "19970:9:6"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "19960:3:6"
},
"nodeType": "YulFunctionCall",
"src": "19960:20:6"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "19934:6:6"
},
"nodeType": "YulFunctionCall",
"src": "19934:47:6"
},
"nodeType": "YulExpressionStatement",
"src": "19934:47:6"
},
{
"nodeType": "YulAssignment",
"src": "19990:139:6",
"value": {
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "20124:4:6"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "19998:124:6"
},
"nodeType": "YulFunctionCall",
"src": "19998:131:6"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "19990:4:6"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "19868:9:6",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "19883:4:6",
"type": ""
}
],
"src": "19717:419:6"
},
{
"body": {
"nodeType": "YulBlock",
"src": "20313:248:6",
"statements": [
{
"nodeType": "YulAssignment",
"src": "20323:26:6",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "20335:9:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "20346:2:6",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "20331:3:6"
},
"nodeType": "YulFunctionCall",
"src": "20331:18:6"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "20323:4:6"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "20370:9:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "20381:1:6",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "20366:3:6"
},
"nodeType": "YulFunctionCall",
"src": "20366:17:6"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "20389:4:6"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "20395:9:6"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "20385:3:6"
},
"nodeType": "YulFunctionCall",
"src": "20385:20:6"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "20359:6:6"
},
"nodeType": "YulFunctionCall",
"src": "20359:47:6"
},
"nodeType": "YulExpressionStatement",
"src": "20359:47:6"
},
{
"nodeType": "YulAssignment",
"src": "20415:139:6",
"value": {
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "20549:4:6"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "20423:124:6"
},
"nodeType": "YulFunctionCall",
"src": "20423:131:6"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "20415:4:6"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "20293:9:6",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "20308:4:6",
"type": ""
}
],
"src": "20142:419:6"
},
{
"body": {
"nodeType": "YulBlock",
"src": "20665:124:6",
"statements": [
{
"nodeType": "YulAssignment",
"src": "20675:26:6",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "20687:9:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "20698:2:6",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "20683:3:6"
},
"nodeType": "YulFunctionCall",
"src": "20683:18:6"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "20675:4:6"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "20755:6:6"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "20768:9:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "20779:1:6",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "20764:3:6"
},
"nodeType": "YulFunctionCall",
"src": "20764:17:6"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulIdentifier",
"src": "20711:43:6"
},
"nodeType": "YulFunctionCall",
"src": "20711:71:6"
},
"nodeType": "YulExpressionStatement",
"src": "20711:71:6"
}
]
},
"name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "20637:9:6",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "20649:6:6",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "20660:4:6",
"type": ""
}
],
"src": "20567:222:6"
},
{
"body": {
"nodeType": "YulBlock",
"src": "20949:288:6",
"statements": [
{
"nodeType": "YulAssignment",
"src": "20959:26:6",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "20971:9:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "20982:2:6",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "20967:3:6"
},
"nodeType": "YulFunctionCall",
"src": "20967:18:6"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "20959:4:6"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "21039:6:6"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "21052:9:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "21063:1:6",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "21048:3:6"
},
"nodeType": "YulFunctionCall",
"src": "21048:17:6"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulIdentifier",
"src": "20995:43:6"
},
"nodeType": "YulFunctionCall",
"src": "20995:71:6"
},
"nodeType": "YulExpressionStatement",
"src": "20995:71:6"
},
{
"expression": {
"arguments": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "21120:6:6"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "21133:9:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "21144:2:6",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "21129:3:6"
},
"nodeType": "YulFunctionCall",
"src": "21129:18:6"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulIdentifier",
"src": "21076:43:6"
},
"nodeType": "YulFunctionCall",
"src": "21076:72:6"
},
"nodeType": "YulExpressionStatement",
"src": "21076:72:6"
},
{
"expression": {
"arguments": [
{
"name": "value2",
"nodeType": "YulIdentifier",
"src": "21202:6:6"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "21215:9:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "21226:2:6",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "21211:3:6"
},
"nodeType": "YulFunctionCall",
"src": "21211:18:6"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulIdentifier",
"src": "21158:43:6"
},
"nodeType": "YulFunctionCall",
"src": "21158:72:6"
},
"nodeType": "YulExpressionStatement",
"src": "21158:72:6"
}
]
},
"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": "20905:9:6",
"type": ""
},
{
"name": "value2",
"nodeType": "YulTypedName",
"src": "20917:6:6",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "20925:6:6",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "20933:6:6",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "20944:4:6",
"type": ""
}
],
"src": "20795:442:6"
},
{
"body": {
"nodeType": "YulBlock",
"src": "21439:385:6",
"statements": [
{
"nodeType": "YulAssignment",
"src": "21449:27:6",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "21461:9:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "21472:3:6",
"type": "",
"value": "128"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "21457:3:6"
},
"nodeType": "YulFunctionCall",
"src": "21457:19:6"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "21449:4:6"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "21530:6:6"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "21543:9:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "21554:1:6",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "21539:3:6"
},
"nodeType": "YulFunctionCall",
"src": "21539:17:6"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulIdentifier",
"src": "21486:43:6"
},
"nodeType": "YulFunctionCall",
"src": "21486:71:6"
},
"nodeType": "YulExpressionStatement",
"src": "21486:71:6"
},
{
"expression": {
"arguments": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "21611:6:6"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "21624:9:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "21635:2:6",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "21620:3:6"
},
"nodeType": "YulFunctionCall",
"src": "21620:18:6"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulIdentifier",
"src": "21567:43:6"
},
"nodeType": "YulFunctionCall",
"src": "21567:72:6"
},
"nodeType": "YulExpressionStatement",
"src": "21567:72:6"
},
{
"expression": {
"arguments": [
{
"name": "value2",
"nodeType": "YulIdentifier",
"src": "21693:6:6"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "21706:9:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "21717:2:6",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "21702:3:6"
},
"nodeType": "YulFunctionCall",
"src": "21702:18:6"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulIdentifier",
"src": "21649:43:6"
},
"nodeType": "YulFunctionCall",
"src": "21649:72:6"
},
"nodeType": "YulExpressionStatement",
"src": "21649:72:6"
},
{
"expression": {
"arguments": [
{
"name": "value3",
"nodeType": "YulIdentifier",
"src": "21789:6:6"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "21802:9:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "21813:2:6",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "21798:3:6"
},
"nodeType": "YulFunctionCall",
"src": "21798:18:6"
}
],
"functionName": {
"name": "abi_encode_t_enum$_PolicyStatus_$790_to_t_uint8_fromStack",
"nodeType": "YulIdentifier",
"src": "21731:57:6"
},
"nodeType": "YulFunctionCall",
"src": "21731:86:6"
},
"nodeType": "YulExpressionStatement",
"src": "21731:86:6"
}
]
},
"name": "abi_encode_tuple_t_uint256_t_uint256_t_uint256_t_enum$_PolicyStatus_$790__to_t_uint256_t_uint256_t_uint256_t_uint8__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "21387:9:6",
"type": ""
},
{
"name": "value3",
"nodeType": "YulTypedName",
"src": "21399:6:6",
"type": ""
},
{
"name": "value2",
"nodeType": "YulTypedName",
"src": "21407:6:6",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "21415:6:6",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "21423:6:6",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "21434:4:6",
"type": ""
}
],
"src": "21243:581:6"
},
{
"body": {
"nodeType": "YulBlock",
"src": "21924:120:6",
"statements": [
{
"nodeType": "YulAssignment",
"src": "21934:26:6",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "21946:9:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "21957:2:6",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "21942:3:6"
},
"nodeType": "YulFunctionCall",
"src": "21942:18:6"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "21934:4:6"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "22010:6:6"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "22023:9:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "22034:1:6",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "22019:3:6"
},
"nodeType": "YulFunctionCall",
"src": "22019:17:6"
}
],
"functionName": {
"name": "abi_encode_t_uint8_to_t_uint8_fromStack",
"nodeType": "YulIdentifier",
"src": "21970:39:6"
},
"nodeType": "YulFunctionCall",
"src": "21970:67:6"
},
"nodeType": "YulExpressionStatement",
"src": "21970:67:6"
}
]
},
"name": "abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "21896:9:6",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "21908:6:6",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "21919:4:6",
"type": ""
}
],
"src": "21830:214:6"
},
{
"body": {
"nodeType": "YulBlock",
"src": "22109:40:6",
"statements": [
{
"nodeType": "YulAssignment",
"src": "22120:22:6",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "22136:5:6"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "22130:5:6"
},
"nodeType": "YulFunctionCall",
"src": "22130:12:6"
},
"variableNames": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "22120:6:6"
}
]
}
]
},
"name": "array_length_t_string_memory_ptr",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "22092:5:6",
"type": ""
}
],
"returnVariables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "22102:6:6",
"type": ""
}
],
"src": "22050:99:6"
},
{
"body": {
"nodeType": "YulBlock",
"src": "22251:73:6",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "22268:3:6"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "22273:6:6"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "22261:6:6"
},
"nodeType": "YulFunctionCall",
"src": "22261:19:6"
},
"nodeType": "YulExpressionStatement",
"src": "22261:19:6"
},
{
"nodeType": "YulAssignment",
"src": "22289:29:6",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "22308:3:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "22313:4:6",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "22304:3:6"
},
"nodeType": "YulFunctionCall",
"src": "22304:14:6"
},
"variableNames": [
{
"name": "updated_pos",
"nodeType": "YulIdentifier",
"src": "22289:11:6"
}
]
}
]
},
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "22223:3:6",
"type": ""
},
{
"name": "length",
"nodeType": "YulTypedName",
"src": "22228:6:6",
"type": ""
}
],
"returnVariables": [
{
"name": "updated_pos",
"nodeType": "YulTypedName",
"src": "22239:11:6",
"type": ""
}
],
"src": "22155:169:6"
},
{
"body": {
"nodeType": "YulBlock",
"src": "22374:261:6",
"statements": [
{
"nodeType": "YulAssignment",
"src": "22384:25:6",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "22407:1:6"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "22389:17:6"
},
"nodeType": "YulFunctionCall",
"src": "22389:20:6"
},
"variableNames": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "22384:1:6"
}
]
},
{
"nodeType": "YulAssignment",
"src": "22418:25:6",
"value": {
"arguments": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "22441:1:6"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "22423:17:6"
},
"nodeType": "YulFunctionCall",
"src": "22423:20:6"
},
"variableNames": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "22418:1:6"
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "22581:22:6",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x11",
"nodeType": "YulIdentifier",
"src": "22583:16:6"
},
"nodeType": "YulFunctionCall",
"src": "22583:18:6"
},
"nodeType": "YulExpressionStatement",
"src": "22583:18:6"
}
]
},
"condition": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "22502:1:6"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "22509:66:6",
"type": "",
"value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "22577:1:6"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "22505:3:6"
},
"nodeType": "YulFunctionCall",
"src": "22505:74:6"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "22499:2:6"
},
"nodeType": "YulFunctionCall",
"src": "22499:81:6"
},
"nodeType": "YulIf",
"src": "22496:2:6"
},
{
"nodeType": "YulAssignment",
"src": "22613:16:6",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "22624:1:6"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "22627:1:6"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "22620:3:6"
},
"nodeType": "YulFunctionCall",
"src": "22620:9:6"
},
"variableNames": [
{
"name": "sum",
"nodeType": "YulIdentifier",
"src": "22613:3:6"
}
]
}
]
},
"name": "checked_add_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "x",
"nodeType": "YulTypedName",
"src": "22361:1:6",
"type": ""
},
{
"name": "y",
"nodeType": "YulTypedName",
"src": "22364:1:6",
"type": ""
}
],
"returnVariables": [
{
"name": "sum",
"nodeType": "YulTypedName",
"src": "22370:3:6",
"type": ""
}
],
"src": "22330:305:6"
},
{
"body": {
"nodeType": "YulBlock",
"src": "22683:143:6",
"statements": [
{
"nodeType": "YulAssignment",
"src": "22693:25:6",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "22716:1:6"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "22698:17:6"
},
"nodeType": "YulFunctionCall",
"src": "22698:20:6"
},
"variableNames": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "22693:1:6"
}
]
},
{
"nodeType": "YulAssignment",
"src": "22727:25:6",
"value": {
"arguments": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "22750:1:6"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "22732:17:6"
},
"nodeType": "YulFunctionCall",
"src": "22732:20:6"
},
"variableNames": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "22727:1:6"
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "22774:22:6",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x12",
"nodeType": "YulIdentifier",
"src": "22776:16:6"
},
"nodeType": "YulFunctionCall",
"src": "22776:18:6"
},
"nodeType": "YulExpressionStatement",
"src": "22776:18:6"
}
]
},
"condition": {
"arguments": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "22771:1:6"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "22764:6:6"
},
"nodeType": "YulFunctionCall",
"src": "22764:9:6"
},
"nodeType": "YulIf",
"src": "22761:2:6"
},
{
"nodeType": "YulAssignment",
"src": "22806:14:6",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "22815:1:6"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "22818:1:6"
}
],
"functionName": {
"name": "div",
"nodeType": "YulIdentifier",
"src": "22811:3:6"
},
"nodeType": "YulFunctionCall",
"src": "22811:9:6"
},
"variableNames": [
{
"name": "r",
"nodeType": "YulIdentifier",
"src": "22806:1:6"
}
]
}
]
},
"name": "checked_div_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "x",
"nodeType": "YulTypedName",
"src": "22672:1:6",
"type": ""
},
{
"name": "y",
"nodeType": "YulTypedName",
"src": "22675:1:6",
"type": ""
}
],
"returnVariables": [
{
"name": "r",
"nodeType": "YulTypedName",
"src": "22681:1:6",
"type": ""
}
],
"src": "22641:185:6"
},
{
"body": {
"nodeType": "YulBlock",
"src": "22880:300:6",
"statements": [
{
"nodeType": "YulAssignment",
"src": "22890:25:6",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "22913:1:6"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "22895:17:6"
},
"nodeType": "YulFunctionCall",
"src": "22895:20:6"
},
"variableNames": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "22890:1:6"
}
]
},
{
"nodeType": "YulAssignment",
"src": "22924:25:6",
"value": {
"arguments": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "22947:1:6"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "22929:17:6"
},
"nodeType": "YulFunctionCall",
"src": "22929:20:6"
},
"variableNames": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "22924:1:6"
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "23122:22:6",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x11",
"nodeType": "YulIdentifier",
"src": "23124:16:6"
},
"nodeType": "YulFunctionCall",
"src": "23124:18:6"
},
"nodeType": "YulExpressionStatement",
"src": "23124:18:6"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "23034:1:6"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "23027:6:6"
},
"nodeType": "YulFunctionCall",
"src": "23027:9:6"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "23020:6:6"
},
"nodeType": "YulFunctionCall",
"src": "23020:17:6"
},
{
"arguments": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "23042:1:6"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "23049:66:6",
"type": "",
"value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
},
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "23117:1:6"
}
],
"functionName": {
"name": "div",
"nodeType": "YulIdentifier",
"src": "23045:3:6"
},
"nodeType": "YulFunctionCall",
"src": "23045:74:6"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "23039:2:6"
},
"nodeType": "YulFunctionCall",
"src": "23039:81:6"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "23016:3:6"
},
"nodeType": "YulFunctionCall",
"src": "23016:105:6"
},
"nodeType": "YulIf",
"src": "23013:2:6"
},
{
"nodeType": "YulAssignment",
"src": "23154:20:6",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "23169:1:6"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "23172:1:6"
}
],
"functionName": {
"name": "mul",
"nodeType": "YulIdentifier",
"src": "23165:3:6"
},
"nodeType": "YulFunctionCall",
"src": "23165:9:6"
},
"variableNames": [
{
"name": "product",
"nodeType": "YulIdentifier",
"src": "23154:7:6"
}
]
}
]
},
"name": "checked_mul_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "x",
"nodeType": "YulTypedName",
"src": "22863:1:6",
"type": ""
},
{
"name": "y",
"nodeType": "YulTypedName",
"src": "22866:1:6",
"type": ""
}
],
"returnVariables": [
{
"name": "product",
"nodeType": "YulTypedName",
"src": "22872:7:6",
"type": ""
}
],
"src": "22832:348:6"
},
{
"body": {
"nodeType": "YulBlock",
"src": "23231:146:6",
"statements": [
{
"nodeType": "YulAssignment",
"src": "23241:25:6",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "23264:1:6"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "23246:17:6"
},
"nodeType": "YulFunctionCall",
"src": "23246:20:6"
},
"variableNames": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "23241:1:6"
}
]
},
{
"nodeType": "YulAssignment",
"src": "23275:25:6",
"value": {
"arguments": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "23298:1:6"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "23280:17:6"
},
"nodeType": "YulFunctionCall",
"src": "23280:20:6"
},
"variableNames": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "23275:1:6"
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "23322:22:6",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x11",
"nodeType": "YulIdentifier",
"src": "23324:16:6"
},
"nodeType": "YulFunctionCall",
"src": "23324:18:6"
},
"nodeType": "YulExpressionStatement",
"src": "23324:18:6"
}
]
},
"condition": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "23316:1:6"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "23319:1:6"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "23313:2:6"
},
"nodeType": "YulFunctionCall",
"src": "23313:8:6"
},
"nodeType": "YulIf",
"src": "23310:2:6"
},
{
"nodeType": "YulAssignment",
"src": "23354:17:6",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "23366:1:6"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "23369:1:6"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "23362:3:6"
},
"nodeType": "YulFunctionCall",
"src": "23362:9:6"
},
"variableNames": [
{
"name": "diff",
"nodeType": "YulIdentifier",
"src": "23354:4:6"
}
]
}
]
},
"name": "checked_sub_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "x",
"nodeType": "YulTypedName",
"src": "23217:1:6",
"type": ""
},
{
"name": "y",
"nodeType": "YulTypedName",
"src": "23220:1:6",
"type": ""
}
],
"returnVariables": [
{
"name": "diff",
"nodeType": "YulTypedName",
"src": "23226:4:6",
"type": ""
}
],
"src": "23186:191:6"
},
{
"body": {
"nodeType": "YulBlock",
"src": "23428:51:6",
"statements": [
{
"nodeType": "YulAssignment",
"src": "23438:35:6",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "23467:5:6"
}
],
"functionName": {
"name": "cleanup_t_uint160",
"nodeType": "YulIdentifier",
"src": "23449:17:6"
},
"nodeType": "YulFunctionCall",
"src": "23449:24:6"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "23438:7:6"
}
]
}
]
},
"name": "cleanup_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "23410:5:6",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "23420:7:6",
"type": ""
}
],
"src": "23383:96:6"
},
{
"body": {
"nodeType": "YulBlock",
"src": "23527:48:6",
"statements": [
{
"nodeType": "YulAssignment",
"src": "23537:32:6",
"value": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "23562:5:6"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "23555:6:6"
},
"nodeType": "YulFunctionCall",
"src": "23555:13:6"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "23548:6:6"
},
"nodeType": "YulFunctionCall",
"src": "23548:21:6"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "23537:7:6"
}
]
}
]
},
"name": "cleanup_t_bool",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "23509:5:6",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "23519:7:6",
"type": ""
}
],
"src": "23485:90:6"
},
{
"body": {
"nodeType": "YulBlock",
"src": "23642:82:6",
"statements": [
{
"nodeType": "YulAssignment",
"src": "23652:16:6",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "23663:5:6"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "23652:7:6"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "23712:5:6"
}
],
"functionName": {
"name": "validator_assert_t_enum$_PolicyStatus_$790",
"nodeType": "YulIdentifier",
"src": "23669:42:6"
},
"nodeType": "YulFunctionCall",
"src": "23669:49:6"
},
"nodeType": "YulExpressionStatement",
"src": "23669:49:6"
}
]
},
"name": "cleanup_t_enum$_PolicyStatus_$790",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "23624:5:6",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "23634:7:6",
"type": ""
}
],
"src": "23581:143:6"
},
{
"body": {
"nodeType": "YulBlock",
"src": "23775:81:6",
"statements": [
{
"nodeType": "YulAssignment",
"src": "23785:65:6",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "23800:5:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "23807:42:6",
"type": "",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "23796:3:6"
},
"nodeType": "YulFunctionCall",
"src": "23796:54:6"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "23785:7:6"
}
]
}
]
},
"name": "cleanup_t_uint160",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "23757:5:6",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "23767:7:6",
"type": ""
}
],
"src": "23730:126:6"
},
{
"body": {
"nodeType": "YulBlock",
"src": "23907:32:6",
"statements": [
{
"nodeType": "YulAssignment",
"src": "23917:16:6",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "23928:5:6"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "23917:7:6"
}
]
}
]
},
"name": "cleanup_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "23889:5:6",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "23899:7:6",
"type": ""
}
],
"src": "23862:77:6"
},
{
"body": {
"nodeType": "YulBlock",
"src": "23988:43:6",
"statements": [
{
"nodeType": "YulAssignment",
"src": "23998:27:6",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "24013:5:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "24020:4:6",
"type": "",
"value": "0xff"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "24009:3:6"
},
"nodeType": "YulFunctionCall",
"src": "24009:16:6"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "23998:7:6"
}
]
}
]
},
"name": "cleanup_t_uint8",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "23970:5:6",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "23980:7:6",
"type": ""
}
],
"src": "23945:86:6"
},
{
"body": {
"nodeType": "YulBlock",
"src": "24110:79:6",
"statements": [
{
"nodeType": "YulAssignment",
"src": "24120:63:6",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "24177:5:6"
}
],
"functionName": {
"name": "convert_t_contract$_ERC20_$649_to_t_uint160",
"nodeType": "YulIdentifier",
"src": "24133:43:6"
},
"nodeType": "YulFunctionCall",
"src": "24133:50:6"
},
"variableNames": [
{
"name": "converted",
"nodeType": "YulIdentifier",
"src": "24120:9:6"
}
]
}
]
},
"name": "convert_t_contract$_ERC20_$649_to_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "24090:5:6",
"type": ""
}
],
"returnVariables": [
{
"name": "converted",
"nodeType": "YulTypedName",
"src": "24100:9:6",
"type": ""
}
],
"src": "24037:152:6"
},
{
"body": {
"nodeType": "YulBlock",
"src": "24268:53:6",
"statements": [
{
"nodeType": "YulAssignment",
"src": "24278:37:6",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "24309:5:6"
}
],
"functionName": {
"name": "cleanup_t_uint160",
"nodeType": "YulIdentifier",
"src": "24291:17:6"
},
"nodeType": "YulFunctionCall",
"src": "24291:24:6"
},
"variableNames": [
{
"name": "converted",
"nodeType": "YulIdentifier",
"src": "24278:9:6"
}
]
}
]
},
"name": "convert_t_contract$_ERC20_$649_to_t_uint160",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "24248:5:6",
"type": ""
}
],
"returnVariables": [
{
"name": "converted",
"nodeType": "YulTypedName",
"src": "24258:9:6",
"type": ""
}
],
"src": "24195:126:6"
},
{
"body": {
"nodeType": "YulBlock",
"src": "24401:69:6",
"statements": [
{
"nodeType": "YulAssignment",
"src": "24411:53:6",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "24458:5:6"
}
],
"functionName": {
"name": "cleanup_t_enum$_PolicyStatus_$790",
"nodeType": "YulIdentifier",
"src": "24424:33:6"
},
"nodeType": "YulFunctionCall",
"src": "24424:40:6"
},
"variableNames": [
{
"name": "converted",
"nodeType": "YulIdentifier",
"src": "24411:9:6"
}
]
}
]
},
"name": "convert_t_enum$_PolicyStatus_$790_to_t_uint8",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "24381:5:6",
"type": ""
}
],
"returnVariables": [
{
"name": "converted",
"nodeType": "YulTypedName",
"src": "24391:9:6",
"type": ""
}
],
"src": "24327:143:6"
},
{
"body": {
"nodeType": "YulBlock",
"src": "24525:258:6",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "24535:10:6",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "24544:1:6",
"type": "",
"value": "0"
},
"variables": [
{
"name": "i",
"nodeType": "YulTypedName",
"src": "24539:1:6",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "24604:63:6",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "24629:3:6"
},
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "24634:1:6"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "24625:3:6"
},
"nodeType": "YulFunctionCall",
"src": "24625:11:6"
},
{
"arguments": [
{
"arguments": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "24648:3:6"
},
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "24653:1:6"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "24644:3:6"
},
"nodeType": "YulFunctionCall",
"src": "24644:11:6"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "24638:5:6"
},
"nodeType": "YulFunctionCall",
"src": "24638:18:6"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "24618:6:6"
},
"nodeType": "YulFunctionCall",
"src": "24618:39:6"
},
"nodeType": "YulExpressionStatement",
"src": "24618:39:6"
}
]
},
"condition": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "24565:1:6"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "24568:6:6"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "24562:2:6"
},
"nodeType": "YulFunctionCall",
"src": "24562:13:6"
},
"nodeType": "YulForLoop",
"post": {
"nodeType": "YulBlock",
"src": "24576:19:6",
"statements": [
{
"nodeType": "YulAssignment",
"src": "24578:15:6",
"value": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "24587:1:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "24590:2:6",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "24583:3:6"
},
"nodeType": "YulFunctionCall",
"src": "24583:10:6"
},
"variableNames": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "24578:1:6"
}
]
}
]
},
"pre": {
"nodeType": "YulBlock",
"src": "24558:3:6",
"statements": []
},
"src": "24554:113:6"
},
{
"body": {
"nodeType": "YulBlock",
"src": "24701:76:6",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "24751:3:6"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "24756:6:6"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "24747:3:6"
},
"nodeType": "YulFunctionCall",
"src": "24747:16:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "24765:1:6",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "24740:6:6"
},
"nodeType": "YulFunctionCall",
"src": "24740:27:6"
},
"nodeType": "YulExpressionStatement",
"src": "24740:27:6"
}
]
},
"condition": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "24682:1:6"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "24685:6:6"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "24679:2:6"
},
"nodeType": "YulFunctionCall",
"src": "24679:13:6"
},
"nodeType": "YulIf",
"src": "24676:2:6"
}
]
},
"name": "copy_memory_to_memory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "src",
"nodeType": "YulTypedName",
"src": "24507:3:6",
"type": ""
},
{
"name": "dst",
"nodeType": "YulTypedName",
"src": "24512:3:6",
"type": ""
},
{
"name": "length",
"nodeType": "YulTypedName",
"src": "24517:6:6",
"type": ""
}
],
"src": "24476:307:6"
},
{
"body": {
"nodeType": "YulBlock",
"src": "24840:269:6",
"statements": [
{
"nodeType": "YulAssignment",
"src": "24850:22:6",
"value": {
"arguments": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "24864:4:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "24870:1:6",
"type": "",
"value": "2"
}
],
"functionName": {
"name": "div",
"nodeType": "YulIdentifier",
"src": "24860:3:6"
},
"nodeType": "YulFunctionCall",
"src": "24860:12:6"
},
"variableNames": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "24850:6:6"
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "24881:38:6",
"value": {
"arguments": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "24911:4:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "24917:1:6",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "24907:3:6"
},
"nodeType": "YulFunctionCall",
"src": "24907:12:6"
},
"variables": [
{
"name": "outOfPlaceEncoding",
"nodeType": "YulTypedName",
"src": "24885:18:6",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "24958:51:6",
"statements": [
{
"nodeType": "YulAssignment",
"src": "24972:27:6",
"value": {
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "24986:6:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "24994:4:6",
"type": "",
"value": "0x7f"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "24982:3:6"
},
"nodeType": "YulFunctionCall",
"src": "24982:17:6"
},
"variableNames": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "24972:6:6"
}
]
}
]
},
"condition": {
"arguments": [
{
"name": "outOfPlaceEncoding",
"nodeType": "YulIdentifier",
"src": "24938:18:6"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "24931:6:6"
},
"nodeType": "YulFunctionCall",
"src": "24931:26:6"
},
"nodeType": "YulIf",
"src": "24928:2:6"
},
{
"body": {
"nodeType": "YulBlock",
"src": "25061:42:6",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x22",
"nodeType": "YulIdentifier",
"src": "25075:16:6"
},
"nodeType": "YulFunctionCall",
"src": "25075:18:6"
},
"nodeType": "YulExpressionStatement",
"src": "25075:18:6"
}
]
},
"condition": {
"arguments": [
{
"name": "outOfPlaceEncoding",
"nodeType": "YulIdentifier",
"src": "25025:18:6"
},
{
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "25048:6:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "25056:2:6",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "25045:2:6"
},
"nodeType": "YulFunctionCall",
"src": "25045:14:6"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "25022:2:6"
},
"nodeType": "YulFunctionCall",
"src": "25022:38:6"
},
"nodeType": "YulIf",
"src": "25019:2:6"
}
]
},
"name": "extract_byte_array_length",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "data",
"nodeType": "YulTypedName",
"src": "24824:4:6",
"type": ""
}
],
"returnVariables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "24833:6:6",
"type": ""
}
],
"src": "24789:320:6"
},
{
"body": {
"nodeType": "YulBlock",
"src": "25143:152:6",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "25160:1:6",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "25163:77:6",
"type": "",
"value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "25153:6:6"
},
"nodeType": "YulFunctionCall",
"src": "25153:88:6"
},
"nodeType": "YulExpressionStatement",
"src": "25153:88:6"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "25257:1:6",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "25260:4:6",
"type": "",
"value": "0x11"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "25250:6:6"
},
"nodeType": "YulFunctionCall",
"src": "25250:15:6"
},
"nodeType": "YulExpressionStatement",
"src": "25250:15:6"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "25281:1:6",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "25284:4:6",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "25274:6:6"
},
"nodeType": "YulFunctionCall",
"src": "25274:15:6"
},
"nodeType": "YulExpressionStatement",
"src": "25274:15:6"
}
]
},
"name": "panic_error_0x11",
"nodeType": "YulFunctionDefinition",
"src": "25115:180:6"
},
{
"body": {
"nodeType": "YulBlock",
"src": "25329:152:6",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "25346:1:6",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "25349:77:6",
"type": "",
"value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "25339:6:6"
},
"nodeType": "YulFunctionCall",
"src": "25339:88:6"
},
"nodeType": "YulExpressionStatement",
"src": "25339:88:6"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "25443:1:6",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "25446:4:6",
"type": "",
"value": "0x12"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "25436:6:6"
},
"nodeType": "YulFunctionCall",
"src": "25436:15:6"
},
"nodeType": "YulExpressionStatement",
"src": "25436:15:6"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "25467:1:6",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "25470:4:6",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "25460:6:6"
},
"nodeType": "YulFunctionCall",
"src": "25460:15:6"
},
"nodeType": "YulExpressionStatement",
"src": "25460:15:6"
}
]
},
"name": "panic_error_0x12",
"nodeType": "YulFunctionDefinition",
"src": "25301:180:6"
},
{
"body": {
"nodeType": "YulBlock",
"src": "25515:152:6",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "25532:1:6",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "25535:77:6",
"type": "",
"value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "25525:6:6"
},
"nodeType": "YulFunctionCall",
"src": "25525:88:6"
},
"nodeType": "YulExpressionStatement",
"src": "25525:88:6"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "25629:1:6",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "25632:4:6",
"type": "",
"value": "0x21"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "25622:6:6"
},
"nodeType": "YulFunctionCall",
"src": "25622:15:6"
},
"nodeType": "YulExpressionStatement",
"src": "25622:15:6"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "25653:1:6",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "25656:4:6",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "25646:6:6"
},
"nodeType": "YulFunctionCall",
"src": "25646:15:6"
},
"nodeType": "YulExpressionStatement",
"src": "25646:15:6"
}
]
},
"name": "panic_error_0x21",
"nodeType": "YulFunctionDefinition",
"src": "25487:180:6"
},
{
"body": {
"nodeType": "YulBlock",
"src": "25701:152:6",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "25718:1:6",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "25721:77:6",
"type": "",
"value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "25711:6:6"
},
"nodeType": "YulFunctionCall",
"src": "25711:88:6"
},
"nodeType": "YulExpressionStatement",
"src": "25711:88:6"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "25815:1:6",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "25818:4:6",
"type": "",
"value": "0x22"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "25808:6:6"
},
"nodeType": "YulFunctionCall",
"src": "25808:15:6"
},
"nodeType": "YulExpressionStatement",
"src": "25808:15:6"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "25839:1:6",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "25842:4:6",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "25832:6:6"
},
"nodeType": "YulFunctionCall",
"src": "25832:15:6"
},
"nodeType": "YulExpressionStatement",
"src": "25832:15:6"
}
]
},
"name": "panic_error_0x22",
"nodeType": "YulFunctionDefinition",
"src": "25673:180:6"
},
{
"body": {
"nodeType": "YulBlock",
"src": "25907:54:6",
"statements": [
{
"nodeType": "YulAssignment",
"src": "25917:38:6",
"value": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "25935:5:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "25942:2:6",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "25931:3:6"
},
"nodeType": "YulFunctionCall",
"src": "25931:14:6"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "25951:2:6",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "25947:3:6"
},
"nodeType": "YulFunctionCall",
"src": "25947:7:6"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "25927:3:6"
},
"nodeType": "YulFunctionCall",
"src": "25927:28:6"
},
"variableNames": [
{
"name": "result",
"nodeType": "YulIdentifier",
"src": "25917:6:6"
}
]
}
]
},
"name": "round_up_to_mul_of_32",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "25890:5:6",
"type": ""
}
],
"returnVariables": [
{
"name": "result",
"nodeType": "YulTypedName",
"src": "25900:6:6",
"type": ""
}
],
"src": "25859:102:6"
},
{
"body": {
"nodeType": "YulBlock",
"src": "26026:62:6",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "26060:22:6",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x21",
"nodeType": "YulIdentifier",
"src": "26062:16:6"
},
"nodeType": "YulFunctionCall",
"src": "26062:18:6"
},
"nodeType": "YulExpressionStatement",
"src": "26062:18:6"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "26049:5:6"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "26056:1:6",
"type": "",
"value": "4"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "26046:2:6"
},
"nodeType": "YulFunctionCall",
"src": "26046:12:6"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "26039:6:6"
},
"nodeType": "YulFunctionCall",
"src": "26039:20:6"
},
"nodeType": "YulIf",
"src": "26036:2:6"
}
]
},
"name": "validator_assert_t_enum$_PolicyStatus_$790",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "26019:5:6",
"type": ""
}
],
"src": "25967:121:6"
},
{
"body": {
"nodeType": "YulBlock",
"src": "26137:79:6",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "26194:16:6",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "26203:1:6",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "26206:1:6",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "26196:6:6"
},
"nodeType": "YulFunctionCall",
"src": "26196:12:6"
},
"nodeType": "YulExpressionStatement",
"src": "26196:12:6"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "26160:5:6"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "26185:5:6"
}
],
"functionName": {
"name": "cleanup_t_address",
"nodeType": "YulIdentifier",
"src": "26167:17:6"
},
"nodeType": "YulFunctionCall",
"src": "26167:24:6"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "26157:2:6"
},
"nodeType": "YulFunctionCall",
"src": "26157:35:6"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "26150:6:6"
},
"nodeType": "YulFunctionCall",
"src": "26150:43:6"
},
"nodeType": "YulIf",
"src": "26147:2:6"
}
]
},
"name": "validator_revert_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "26130:5:6",
"type": ""
}
],
"src": "26094:122:6"
},
{
"body": {
"nodeType": "YulBlock",
"src": "26262:76:6",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "26316:16:6",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "26325:1:6",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "26328:1:6",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "26318:6:6"
},
"nodeType": "YulFunctionCall",
"src": "26318:12:6"
},
"nodeType": "YulExpressionStatement",
"src": "26318:12:6"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "26285:5:6"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "26307:5:6"
}
],
"functionName": {
"name": "cleanup_t_bool",
"nodeType": "YulIdentifier",
"src": "26292:14:6"
},
"nodeType": "YulFunctionCall",
"src": "26292:21:6"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "26282:2:6"
},
"nodeType": "YulFunctionCall",
"src": "26282:32:6"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "26275:6:6"
},
"nodeType": "YulFunctionCall",
"src": "26275:40:6"
},
"nodeType": "YulIf",
"src": "26272:2:6"
}
]
},
"name": "validator_revert_t_bool",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "26255:5:6",
"type": ""
}
],
"src": "26222:116:6"
},
{
"body": {
"nodeType": "YulBlock",
"src": "26387:79:6",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "26444:16:6",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "26453:1:6",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "26456:1:6",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "26446:6:6"
},
"nodeType": "YulFunctionCall",
"src": "26446:12:6"
},
"nodeType": "YulExpressionStatement",
"src": "26446:12:6"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "26410:5:6"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "26435:5:6"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "26417:17:6"
},
"nodeType": "YulFunctionCall",
"src": "26417:24:6"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "26407:2:6"
},
"nodeType": "YulFunctionCall",
"src": "26407:35:6"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "26400:6:6"
},
"nodeType": "YulFunctionCall",
"src": "26400:43:6"
},
"nodeType": "YulIf",
"src": "26397:2:6"
}
]
},
"name": "validator_revert_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "26380:5:6",
"type": ""
}
],
"src": "26344:122:6"
}
]
},
"contents": "{\n\n function abi_decode_t_address(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_address(value)\n }\n\n function abi_decode_t_bool(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_bool(value)\n }\n\n function abi_decode_t_bool_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_bool(value)\n }\n\n function abi_decode_t_uint256(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint256(value)\n }\n\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bool_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_uint256t_bool(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_bool(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_uint256t_uint256(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_t_address_to_t_address_fromStack(value, pos) {\n mstore(pos, cleanup_t_address(value))\n }\n\n function abi_encode_t_bool_to_t_bool_fromStack(value, pos) {\n mstore(pos, cleanup_t_bool(value))\n }\n\n function abi_encode_t_contract$_ERC20_$649_to_t_address_fromStack(value, pos) {\n mstore(pos, convert_t_contract$_ERC20_$649_to_t_address(value))\n }\n\n function abi_encode_t_enum$_PolicyStatus_$790_to_t_uint8_fromStack(value, pos) {\n mstore(pos, convert_t_enum$_PolicyStatus_$790_to_t_uint8(value))\n }\n\n function abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_string_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length)\n copy_memory_to_memory(add(value, 0x20), pos, length)\n end := add(pos, round_up_to_mul_of_32(length))\n }\n\n function abi_encode_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 35)\n\n mstore(add(pos, 0), \"ERC20: transfer to the zero addr\")\n\n mstore(add(pos, 32), \"ess\")\n\n end := add(pos, 64)\n }\n\n function abi_encode_t_stringliteral_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 34)\n\n mstore(add(pos, 0), \"ERC20: burn amount exceeds balan\")\n\n mstore(add(pos, 32), \"ce\")\n\n end := add(pos, 64)\n }\n\n function abi_encode_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 38)\n\n mstore(add(pos, 0), \"Ownable: new owner is the zero a\")\n\n mstore(add(pos, 32), \"ddress\")\n\n end := add(pos, 64)\n }\n\n function abi_encode_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 34)\n\n mstore(add(pos, 0), \"ERC20: approve to the zero addre\")\n\n mstore(add(pos, 32), \"ss\")\n\n end := add(pos, 64)\n }\n\n function abi_encode_t_stringliteral_39fe4003c125aa721d6588a5d77e0d923dc2e9d13bd0e280ff1830a144b9eb79_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 19)\n\n mstore(add(pos, 0), \"Wrong policy status\")\n\n end := add(pos, 32)\n }\n\n function abi_encode_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 38)\n\n mstore(add(pos, 0), \"ERC20: transfer amount exceeds b\")\n\n mstore(add(pos, 32), \"alance\")\n\n end := add(pos, 64)\n }\n\n function abi_encode_t_stringliteral_96dceaa3bc5ab8e938e1bb244b260a4b95a0a92ddbf5ea2a868311c57c109912_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 15)\n\n mstore(add(pos, 0), \"Epoch not final\")\n\n end := add(pos, 32)\n }\n\n function abi_encode_t_stringliteral_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 40)\n\n mstore(add(pos, 0), \"ERC20: transfer amount exceeds a\")\n\n mstore(add(pos, 32), \"llowance\")\n\n end := add(pos, 64)\n }\n\n function abi_encode_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 32)\n\n mstore(add(pos, 0), \"Ownable: caller is not the owner\")\n\n end := add(pos, 32)\n }\n\n function abi_encode_t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 33)\n\n mstore(add(pos, 0), \"ERC20: burn from the zero addres\")\n\n mstore(add(pos, 32), \"s\")\n\n end := add(pos, 64)\n }\n\n function abi_encode_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 37)\n\n mstore(add(pos, 0), \"ERC20: transfer from the zero ad\")\n\n mstore(add(pos, 32), \"dress\")\n\n end := add(pos, 64)\n }\n\n function abi_encode_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 36)\n\n mstore(add(pos, 0), \"ERC20: approve from the zero add\")\n\n mstore(add(pos, 32), \"ress\")\n\n end := add(pos, 64)\n }\n\n function abi_encode_t_stringliteral_edb82ed7e638b37d924b3e4ecefd93a822e5898fc6bb26fe45690e2d740d6dfc_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 28)\n\n mstore(add(pos, 0), \"Earlier epochs not finalized\")\n\n end := add(pos, 32)\n }\n\n function abi_encode_t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 37)\n\n mstore(add(pos, 0), \"ERC20: decreased allowance below\")\n\n mstore(add(pos, 32), \" zero\")\n\n end := add(pos, 64)\n }\n\n function abi_encode_t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 31)\n\n mstore(add(pos, 0), \"ERC20: mint to the zero address\")\n\n end := add(pos, 32)\n }\n\n function abi_encode_t_uint256_to_t_uint256_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\n }\n\n function abi_encode_t_uint8_to_t_uint8_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint8(value))\n }\n\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed(headStart , value2, value1, value0) -> tail {\n tail := add(headStart, 96)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_address_to_t_address_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value2, add(headStart, 64))\n\n }\n\n function abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value1, add(headStart, 32))\n\n }\n\n function abi_encode_tuple_t_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed(headStart , value2, value1, value0) -> tail {\n tail := add(headStart, 96)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value2, add(headStart, 64))\n\n }\n\n function abi_encode_tuple_t_address_t_uint256_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256_t_uint256__fromStack_reversed(headStart , value3, value2, value1, value0) -> tail {\n tail := add(headStart, 128)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value2, add(headStart, 64))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value3, add(headStart, 96))\n\n }\n\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_bool_to_t_bool_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_encode_tuple_t_bool_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256__to_t_bool_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256__fromStack_reversed(headStart , value9, value8, value7, value6, value5, value4, value3, value2, value1, value0) -> tail {\n tail := add(headStart, 320)\n\n abi_encode_t_bool_to_t_bool_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value2, add(headStart, 64))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value3, add(headStart, 96))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value4, add(headStart, 128))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value5, add(headStart, 160))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value6, add(headStart, 192))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value7, add(headStart, 224))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value8, add(headStart, 256))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value9, add(headStart, 288))\n\n }\n\n function abi_encode_tuple_t_contract$_ERC20_$649__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_contract$_ERC20_$649_to_t_address_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value0, tail)\n\n }\n\n function abi_encode_tuple_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_stringliteral_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_stringliteral_39fe4003c125aa721d6588a5d77e0d923dc2e9d13bd0e280ff1830a144b9eb79__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_39fe4003c125aa721d6588a5d77e0d923dc2e9d13bd0e280ff1830a144b9eb79_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_stringliteral_96dceaa3bc5ab8e938e1bb244b260a4b95a0a92ddbf5ea2a868311c57c109912__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_96dceaa3bc5ab8e938e1bb244b260a4b95a0a92ddbf5ea2a868311c57c109912_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_stringliteral_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_stringliteral_edb82ed7e638b37d924b3e4ecefd93a822e5898fc6bb26fe45690e2d740d6dfc__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_edb82ed7e638b37d924b3e4ecefd93a822e5898fc6bb26fe45690e2d740d6dfc_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n }\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 tail := add(headStart, 96)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value2, add(headStart, 64))\n\n }\n\n function abi_encode_tuple_t_uint256_t_uint256_t_uint256_t_enum$_PolicyStatus_$790__to_t_uint256_t_uint256_t_uint256_t_uint8__fromStack_reversed(headStart , value3, value2, value1, value0) -> tail {\n tail := add(headStart, 128)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value2, add(headStart, 64))\n\n abi_encode_t_enum$_PolicyStatus_$790_to_t_uint8_fromStack(value3, add(headStart, 96))\n\n }\n\n function abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint8_to_t_uint8_fromStack(value0, add(headStart, 0))\n\n }\n\n function array_length_t_string_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function checked_add_t_uint256(x, y) -> sum {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n\n // overflow, if x > (maxValue - y)\n if gt(x, sub(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff, y)) { panic_error_0x11() }\n\n sum := add(x, y)\n }\n\n function checked_div_t_uint256(x, y) -> r {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n if iszero(y) { panic_error_0x12() }\n\n r := div(x, y)\n }\n\n function checked_mul_t_uint256(x, y) -> product {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n\n // overflow, if x != 0 and y > (maxValue / x)\n if and(iszero(iszero(x)), gt(y, div(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff, x))) { panic_error_0x11() }\n\n product := mul(x, y)\n }\n\n function checked_sub_t_uint256(x, y) -> diff {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n\n if lt(x, y) { panic_error_0x11() }\n\n diff := sub(x, y)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function cleanup_t_bool(value) -> cleaned {\n cleaned := iszero(iszero(value))\n }\n\n function cleanup_t_enum$_PolicyStatus_$790(value) -> cleaned {\n cleaned := value validator_assert_t_enum$_PolicyStatus_$790(value)\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function cleanup_t_uint8(value) -> cleaned {\n cleaned := and(value, 0xff)\n }\n\n function convert_t_contract$_ERC20_$649_to_t_address(value) -> converted {\n converted := convert_t_contract$_ERC20_$649_to_t_uint160(value)\n }\n\n function convert_t_contract$_ERC20_$649_to_t_uint160(value) -> converted {\n converted := cleanup_t_uint160(value)\n }\n\n function convert_t_enum$_PolicyStatus_$790_to_t_uint8(value) -> converted {\n converted := cleanup_t_enum$_PolicyStatus_$790(value)\n }\n\n function copy_memory_to_memory(src, dst, length) {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n if gt(i, length)\n {\n // clear end\n mstore(add(dst, length), 0)\n }\n }\n\n function extract_byte_array_length(data) -> length {\n length := div(data, 2)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) {\n length := and(length, 0x7f)\n }\n\n if eq(outOfPlaceEncoding, lt(length, 32)) {\n panic_error_0x22()\n }\n }\n\n function panic_error_0x11() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n\n function panic_error_0x12() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x12)\n revert(0, 0x24)\n }\n\n function panic_error_0x21() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n\n function panic_error_0x22() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n\n function round_up_to_mul_of_32(value) -> result {\n result := and(add(value, 31), not(31))\n }\n\n function validator_assert_t_enum$_PolicyStatus_$790(value) {\n if iszero(lt(value, 4)) { panic_error_0x21() }\n }\n\n function validator_revert_t_address(value) {\n if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n }\n\n function validator_revert_t_bool(value) {\n if iszero(eq(value, cleanup_t_bool(value))) { revert(0, 0) }\n }\n\n function validator_revert_t_uint256(value) {\n if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n }\n\n}\n",
"id": 6,
"language": "Yul",
"name": "#utility.yul"
}
],
"immutableReferences": {},
"linkReferences": {},
"object": "608060405234801561001057600080fd5b50600436106101c45760003560e01c8063715018a6116100f9578063b6b55f2511610097578063d3e8948311610071578063d3e8948314610534578063dd62ed3e14610567578063e115234314610597578063f2fde38b146105b3576101c4565b8063b6b55f25146104af578063bc6a09d8146104cb578063c6b61e4c146104fb576101c4565b806395d89b41116100d357806395d89b4114610415578063986bce2c14610433578063a457c2d71461044f578063a9059cbb1461047f576101c4565b8063715018a6146103bd5780638ae2dc94146103c75780638da5cb5b146103f7576101c4565b80633037e4cd116101665780633950935111610140578063395093511461031157806366e5ba52146103415780636e739c811461035d57806370a082311461038d576101c4565b80633037e4cd146102bb578063313ce567146102d7578063366a4120146102f5576101c4565b806323b872dd116101a257806323b872dd1461023557806328d36a83146102655780632aea118d146102835780632e1a7d4d1461029f576101c4565b806306fdde03146101c9578063095ea7b3146101e757806318160ddd14610217575b600080fd5b6101d16105cf565b6040516101de9190613310565b60405180910390f35b61020160048036038101906101fc9190612a72565b610661565b60405161020e919061323e565b60405180910390f35b61021f61067f565b60405161022c9190613512565b60405180910390f35b61024f600480360381019061024a9190612a23565b610689565b60405161025c919061323e565b60405180910390f35b61026d610781565b60405161027a91906132f5565b60405180910390f35b61029d60048036038101906102989190612ad7565b6107a7565b005b6102b960048036038101906102b49190612ad7565b610a8a565b005b6102d560048036038101906102d09190612ad7565b610c8e565b005b6102df610cd3565b6040516102ec91906135a9565b60405180910390f35b61030f600480360381019061030a9190612b3c565b610cdc565b005b61032b60048036038101906103269190612a72565b610ec3565b604051610338919061323e565b60405180910390f35b61035b60048036038101906103569190612b00565b610f6f565b005b610377600480360381019061037291906129be565b610ff9565b6040516103849190613512565b60405180910390f35b6103a760048036038101906103a291906129be565b611011565b6040516103b49190613512565b60405180910390f35b6103c5611059565b005b6103e160048036038101906103dc9190612b3c565b6110e1565b6040516103ee9190613512565b60405180910390f35b6103ff611318565b60405161040c9190613147565b60405180910390f35b61041d611342565b60405161042a9190613310565b60405180910390f35b61044d60048036038101906104489190612ad7565b6113d4565b005b61046960048036038101906104649190612a72565b6113e2565b604051610476919061323e565b60405180910390f35b61049960048036038101906104949190612a72565b6114cd565b6040516104a6919061323e565b60405180910390f35b6104c960048036038101906104c49190612ad7565b6114eb565b005b6104e560048036038101906104e09190612a72565b6116c0565b6040516104f29190613512565b60405180910390f35b61051560048036038101906105109190612ad7565b6116f1565b60405161052b9a99989796959493929190613259565b60405180910390f35b61054e60048036038101906105499190612ad7565b611762565b60405161055e9493929190613564565b60405180910390f35b610581600480360381019061057c91906129e7565b6117af565b60405161058e9190613512565b60405180910390f35b6105b160048036038101906105ac9190612ad7565b611836565b005b6105cd60048036038101906105c891906129be565b611b28565b005b6060600380546105de906137c6565b80601f016020809104026020016040519081016040528092919081815260200182805461060a906137c6565b80156106575780601f1061062c57610100808354040283529160200191610657565b820191906000526020600020905b81548152906001019060200180831161063a57829003601f168201915b5050505050905090565b600061067561066e611c20565b8484611c28565b6001905092915050565b6000600254905090565b6000610696848484611df3565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006106e1611c20565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610761576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075890613412565b60405180910390fd5b6107758561076d611c20565b858403611c28565b60019150509392505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160038111156107e1577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6008828154811061081b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020906004020160030160009054906101000a900460ff166003811115610872577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b146108b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a9906133b2565b60405180910390fd5b6000600882815481106108ee577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000209060040201600001549050600e5481600c5461091391906136c1565b11156109275761092282610c8e565b610a86565b600060088381548110610963577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020906004020160010154905080600d54101561098757600d5490505b6109918282612074565b80600783815481106109cc577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002090600a020160090160008282546109ec91906135e0565b925050819055506109fe83600261210e565b7f3921e771bed0bd3a8859d908e5e31888903b50d5b8ec0004c08c71920343431a8360088581548110610a5a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002090600402016001015483604051610a7c9392919061352d565b60405180910390a1505b5050565b6000600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600081610ada33611011565b610ae491906136c1565b905080831115610af2578092505b6000831115610c505782600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600c5481548110610b75577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020016000828254610b8e91906135e0565b9250508190555082600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610be491906135e0565b92505081905550826007600c5481548110610c28577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002090600a02016004016000828254610c4891906135e0565b925050819055505b7fb4214c8c54fc7442f36d3682f59aebaf09358a4431835b30efb29d52cf9e1e913384604051610c81929190613199565b60405180910390a1505050565b610c9981600361210e565b7f08b74d3cccbcb3894ccc99c3a75f6a6890f71ea4c039fe60eabd7bee40b1231c81604051610cc89190613512565b60405180910390a150565b60006012905090565b6000600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208381548110610d55577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200154905080821115610d6e578091505b81600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208481548110610de6577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020016000828254610dff91906136c1565b9250508190555081600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610e5591906136c1565b925050819055508160078481548110610e97577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002090600a02016004016000828254610eb791906136c1565b92505081905550505050565b6000610f65610ed0611c20565b848460016000610ede611c20565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f6091906135e0565b611c28565b6001905092915050565b610f77611c20565b73ffffffffffffffffffffffffffffffffffffffff16610f95611318565b73ffffffffffffffffffffffffffffffffffffffff1614610feb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe290613432565b60405180910390fd5b610ff5828261226a565b5050565b600a6020528060005260406000206000915090505481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611061611c20565b73ffffffffffffffffffffffffffffffffffffffff1661107f611318565b73ffffffffffffffffffffffffffffffffffffffff16146110d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110cc90613432565b60405180910390fd5b6110df60006124c9565b565b60006040518060800160405280600c5481526020018481526020018381526020016001600381111561113c577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b815250600880805490508154811061117d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020906004020160008201518160000155602082015181600101556040820151816002015560608201518160030160006101000a81548160ff021916908360038111156111fa577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b0217905550905050816007600c548154811061123f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002090600a0201600801600082825461125f91906135e0565b9250508190555060016007600c54815481106112a4577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002090600a020160070160008282546112c491906135e0565b925050819055506112d7600c548361258f565b7f53e38b388d36a706c89770536e77d9db72872e0055cc5433aac31f367cfb81e383838360405161130a9392919061352d565b60405180910390a192915050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054611351906137c6565b80601f016020809104026020016040519081016040528092919081815260200182805461137d906137c6565b80156113ca5780601f1061139f576101008083540402835291602001916113ca565b820191906000526020600020905b8154815290600101906020018083116113ad57829003601f168201915b5050505050905090565b6113df81600061226a565b50565b600080600160006113f1611c20565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156114ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a5906134d2565b60405180910390fd5b6114c26114b9611c20565b85858403611c28565b600191505092915050565b60006114e16114da611c20565b8484611df3565b6001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b815260040161154a93929190613162565b602060405180830381600087803b15801561156457600080fd5b505af1158015611578573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061159c9190612aae565b506000600b54826115ad9190613636565b90506115b93382612629565b806007600c54815481106115f6577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002090600a0201600101600082825461161691906135e0565b92505081905550816007600c548154811061165a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002090600a0201600301600082825461167a91906135e0565b925050819055507f9dbb0e7dda3e09710ce75b801addc87cf9d9c6c581641b3275fca409ad086c623383836040516116b4939291906131c2565b60405180910390a15050565b600960205281600052604060002081815481106116dc57600080fd5b90600052602060002001600091509150505481565b6007818154811061170157600080fd5b90600052602060002090600a02016000915090508060000160009054906101000a900460ff1690806001015490806002015490806003015490806004015490806005015490806006015490806007015490806008015490806009015490508a565b6008818154811061177257600080fd5b90600052602060002090600402016000915090508060000154908060010154908060020154908060030160009054906101000a900460ff16905084565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60078181548110611870577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002090600a020160000160009054906101000a900460ff166118ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c5906133f2565b60405180910390fd5b6000600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110611947577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001549050600060078381548110611990577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002090600a020160050154826119ad9190613667565b90506119b93383612789565b816007600c54815481106119f6577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002090600a02016002016000828254611a1691906135e0565b9250508190555080600d6000828254611a2f91906136c1565b92505081905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401611a93929190613199565b602060405180830381600087803b158015611aad57600080fd5b505af1158015611ac1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ae59190612aae565b507fb0f19cfbed4200e9f998f24a7242ec26a8b7419b5fbaa4f550705cd11a32e59733848484604051611b1b94939291906131f9565b60405180910390a1505050565b611b30611c20565b73ffffffffffffffffffffffffffffffffffffffff16611b4e611318565b73ffffffffffffffffffffffffffffffffffffffff1614611ba4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9b90613432565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611c14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0b90613372565b60405180910390fd5b611c1d816124c9565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611c98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8f90613492565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611d08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cff90613392565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611de69190613512565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611e63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5a90613472565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611ed3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eca90613332565b60405180910390fd5b611ede838383612960565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611f64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5b906133d2565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611ff791906135e0565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161205b9190613512565b60405180910390a361206e848484612965565b50505050565b80600783815481106120af577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002090600a020160060160008282546120cf91906136c1565b9250508190555080600d60008282546120e891906136c1565b925050819055506120f761067f565b600d546121049190613636565b600b819055505050565b8060088381548110612149577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020906004020160030160006101000a81548160ff021916908360038111156121a2577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b02179055506000600883815481106121e3577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000209060040201600001549050600160078281548110612233577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002090600a0201600701600082825461225391906136c1565b9250508190555061226581600061226a565b505050565b60008214806122da5750600760018361228391906136c1565b815481106122ba577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002090600a020160000160009054906101000a900460ff165b612319576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612310906134b2565b60405180910390fd5b60078281548110612353577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002090600a020160000160009054906101000a900460ff161580156123d2575080806123d157506000600783815481106123bd577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002090600a020160070154145b5b156124c557600b5460078381548110612414577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002090600a020160050181905550600160078381548110612465577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002090600a020160000160006101000a81548160ff0219169083151502179055507f83e4d2cc842233c386ed6c222a716ef29890cdfe6561c09aea253c3df7c91434826040516124bc9190613512565b60405180910390a15b5050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80600783815481106125ca577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002090600a020160060160008282546125ea91906135e0565b9250508190555080600d600082825461260391906135e0565b9250508190555061261261067f565b600d5461261f9190613636565b600b819055505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612699576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612690906134f2565b60405180910390fd5b6126a560008383612960565b80600260008282546126b791906135e0565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461270c91906135e0565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516127719190613512565b60405180910390a361278560008383612965565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156127f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127f090613452565b60405180910390fd5b61280582600083612960565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561288b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161288290613352565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008282546128e291906136c1565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516129479190613512565b60405180910390a361295b83600084612965565b505050565b505050565b505050565b600081359050612979816138d9565b92915050565b60008135905061298e816138f0565b92915050565b6000815190506129a3816138f0565b92915050565b6000813590506129b881613907565b92915050565b6000602082840312156129d057600080fd5b60006129de8482850161296a565b91505092915050565b600080604083850312156129fa57600080fd5b6000612a088582860161296a565b9250506020612a198582860161296a565b9150509250929050565b600080600060608486031215612a3857600080fd5b6000612a468682870161296a565b9350506020612a578682870161296a565b9250506040612a68868287016129a9565b9150509250925092565b60008060408385031215612a8557600080fd5b6000612a938582860161296a565b9250506020612aa4858286016129a9565b9150509250929050565b600060208284031215612ac057600080fd5b6000612ace84828501612994565b91505092915050565b600060208284031215612ae957600080fd5b6000612af7848285016129a9565b91505092915050565b60008060408385031215612b1357600080fd5b6000612b21858286016129a9565b9250506020612b328582860161297f565b9150509250929050565b60008060408385031215612b4f57600080fd5b6000612b5d858286016129a9565b9250506020612b6e858286016129a9565b9150509250929050565b612b81816136f5565b82525050565b612b9081613707565b82525050565b612b9f8161375d565b82525050565b612bae81613781565b82525050565b6000612bbf826135c4565b612bc981856135cf565b9350612bd9818560208601613793565b612be2816138b4565b840191505092915050565b6000612bfa6023836135cf565b91507f45524332303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612c606022836135cf565b91507f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008301527f63650000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612cc66026836135cf565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612d2c6022836135cf565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612d926013836135cf565b91507f57726f6e6720706f6c69637920737461747573000000000000000000000000006000830152602082019050919050565b6000612dd26026836135cf565b91507f45524332303a207472616e7366657220616d6f756e742065786365656473206260008301527f616c616e636500000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612e38600f836135cf565b91507f45706f6368206e6f742066696e616c00000000000000000000000000000000006000830152602082019050919050565b6000612e786028836135cf565b91507f45524332303a207472616e7366657220616d6f756e742065786365656473206160008301527f6c6c6f77616e63650000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612ede6020836135cf565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b6000612f1e6021836135cf565b91507f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008301527f73000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612f846025836135cf565b91507f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612fea6024836135cf565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613050601c836135cf565b91507f4561726c6965722065706f636873206e6f742066696e616c697a6564000000006000830152602082019050919050565b60006130906025836135cf565b91507f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008301527f207a65726f0000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006130f6601f836135cf565b91507f45524332303a206d696e7420746f20746865207a65726f2061646472657373006000830152602082019050919050565b61313281613746565b82525050565b61314181613750565b82525050565b600060208201905061315c6000830184612b78565b92915050565b60006060820190506131776000830186612b78565b6131846020830185612b78565b6131916040830184613129565b949350505050565b60006040820190506131ae6000830185612b78565b6131bb6020830184613129565b9392505050565b60006060820190506131d76000830186612b78565b6131e46020830185613129565b6131f16040830184613129565b949350505050565b600060808201905061320e6000830187612b78565b61321b6020830186613129565b6132286040830185613129565b6132356060830184613129565b95945050505050565b60006020820190506132536000830184612b87565b92915050565b60006101408201905061326f600083018d612b87565b61327c602083018c613129565b613289604083018b613129565b613296606083018a613129565b6132a36080830189613129565b6132b060a0830188613129565b6132bd60c0830187613129565b6132ca60e0830186613129565b6132d8610100830185613129565b6132e6610120830184613129565b9b9a5050505050505050505050565b600060208201905061330a6000830184612b96565b92915050565b6000602082019050818103600083015261332a8184612bb4565b905092915050565b6000602082019050818103600083015261334b81612bed565b9050919050565b6000602082019050818103600083015261336b81612c53565b9050919050565b6000602082019050818103600083015261338b81612cb9565b9050919050565b600060208201905081810360008301526133ab81612d1f565b9050919050565b600060208201905081810360008301526133cb81612d85565b9050919050565b600060208201905081810360008301526133eb81612dc5565b9050919050565b6000602082019050818103600083015261340b81612e2b565b9050919050565b6000602082019050818103600083015261342b81612e6b565b9050919050565b6000602082019050818103600083015261344b81612ed1565b9050919050565b6000602082019050818103600083015261346b81612f11565b9050919050565b6000602082019050818103600083015261348b81612f77565b9050919050565b600060208201905081810360008301526134ab81612fdd565b9050919050565b600060208201905081810360008301526134cb81613043565b9050919050565b600060208201905081810360008301526134eb81613083565b9050919050565b6000602082019050818103600083015261350b816130e9565b9050919050565b60006020820190506135276000830184613129565b92915050565b60006060820190506135426000830186613129565b61354f6020830185613129565b61355c6040830184613129565b949350505050565b60006080820190506135796000830187613129565b6135866020830186613129565b6135936040830185613129565b6135a06060830184612ba5565b95945050505050565b60006020820190506135be6000830184613138565b92915050565b600081519050919050565b600082825260208201905092915050565b60006135eb82613746565b91506135f683613746565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561362b5761362a6137f8565b5b828201905092915050565b600061364182613746565b915061364c83613746565b92508261365c5761365b613827565b5b828204905092915050565b600061367282613746565b915061367d83613746565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156136b6576136b56137f8565b5b828202905092915050565b60006136cc82613746565b91506136d783613746565b9250828210156136ea576136e96137f8565b5b828203905092915050565b600061370082613726565b9050919050565b60008115159050919050565b6000819050613721826138c5565b919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006137688261376f565b9050919050565b600061377a82613726565b9050919050565b600061378c82613713565b9050919050565b60005b838110156137b1578082015181840152602081019050613796565b838111156137c0576000848401525b50505050565b600060028204905060018216806137de57607f821691505b602082108114156137f2576137f1613885565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b600481106138d6576138d5613856565b5b50565b6138e2816136f5565b81146138ed57600080fd5b50565b6138f981613707565b811461390457600080fd5b50565b61391081613746565b811461391b57600080fd5b5056fea26469706673582212203bca898f37716901c2a427673cacbc9b2efafc981fa9c32944d7bef02099ac3a64736f6c63430008000033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1C4 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x715018A6 GT PUSH2 0xF9 JUMPI DUP1 PUSH4 0xB6B55F25 GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xD3E89483 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xD3E89483 EQ PUSH2 0x534 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x567 JUMPI DUP1 PUSH4 0xE1152343 EQ PUSH2 0x597 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x5B3 JUMPI PUSH2 0x1C4 JUMP JUMPDEST DUP1 PUSH4 0xB6B55F25 EQ PUSH2 0x4AF JUMPI DUP1 PUSH4 0xBC6A09D8 EQ PUSH2 0x4CB JUMPI DUP1 PUSH4 0xC6B61E4C EQ PUSH2 0x4FB JUMPI PUSH2 0x1C4 JUMP JUMPDEST DUP1 PUSH4 0x95D89B41 GT PUSH2 0xD3 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x415 JUMPI DUP1 PUSH4 0x986BCE2C EQ PUSH2 0x433 JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x44F JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x47F JUMPI PUSH2 0x1C4 JUMP JUMPDEST DUP1 PUSH4 0x715018A6 EQ PUSH2 0x3BD JUMPI DUP1 PUSH4 0x8AE2DC94 EQ PUSH2 0x3C7 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x3F7 JUMPI PUSH2 0x1C4 JUMP JUMPDEST DUP1 PUSH4 0x3037E4CD GT PUSH2 0x166 JUMPI DUP1 PUSH4 0x39509351 GT PUSH2 0x140 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x311 JUMPI DUP1 PUSH4 0x66E5BA52 EQ PUSH2 0x341 JUMPI DUP1 PUSH4 0x6E739C81 EQ PUSH2 0x35D JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x38D JUMPI PUSH2 0x1C4 JUMP JUMPDEST DUP1 PUSH4 0x3037E4CD EQ PUSH2 0x2BB JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x2D7 JUMPI DUP1 PUSH4 0x366A4120 EQ PUSH2 0x2F5 JUMPI PUSH2 0x1C4 JUMP JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0x1A2 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x235 JUMPI DUP1 PUSH4 0x28D36A83 EQ PUSH2 0x265 JUMPI DUP1 PUSH4 0x2AEA118D EQ PUSH2 0x283 JUMPI DUP1 PUSH4 0x2E1A7D4D EQ PUSH2 0x29F JUMPI PUSH2 0x1C4 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x1C9 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x1E7 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x217 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1D1 PUSH2 0x5CF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1DE SWAP2 SWAP1 PUSH2 0x3310 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x201 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1FC SWAP2 SWAP1 PUSH2 0x2A72 JUMP JUMPDEST PUSH2 0x661 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x20E SWAP2 SWAP1 PUSH2 0x323E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x21F PUSH2 0x67F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x22C SWAP2 SWAP1 PUSH2 0x3512 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x24F PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x24A SWAP2 SWAP1 PUSH2 0x2A23 JUMP JUMPDEST PUSH2 0x689 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x25C SWAP2 SWAP1 PUSH2 0x323E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x26D PUSH2 0x781 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x27A SWAP2 SWAP1 PUSH2 0x32F5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x29D PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x298 SWAP2 SWAP1 PUSH2 0x2AD7 JUMP JUMPDEST PUSH2 0x7A7 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2B9 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2B4 SWAP2 SWAP1 PUSH2 0x2AD7 JUMP JUMPDEST PUSH2 0xA8A JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2D5 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2D0 SWAP2 SWAP1 PUSH2 0x2AD7 JUMP JUMPDEST PUSH2 0xC8E JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2DF PUSH2 0xCD3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2EC SWAP2 SWAP1 PUSH2 0x35A9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x30F PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x30A SWAP2 SWAP1 PUSH2 0x2B3C JUMP JUMPDEST PUSH2 0xCDC JUMP JUMPDEST STOP JUMPDEST PUSH2 0x32B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x326 SWAP2 SWAP1 PUSH2 0x2A72 JUMP JUMPDEST PUSH2 0xEC3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x338 SWAP2 SWAP1 PUSH2 0x323E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x35B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x356 SWAP2 SWAP1 PUSH2 0x2B00 JUMP JUMPDEST PUSH2 0xF6F JUMP JUMPDEST STOP JUMPDEST PUSH2 0x377 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x372 SWAP2 SWAP1 PUSH2 0x29BE JUMP JUMPDEST PUSH2 0xFF9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x384 SWAP2 SWAP1 PUSH2 0x3512 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x3A7 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x3A2 SWAP2 SWAP1 PUSH2 0x29BE JUMP JUMPDEST PUSH2 0x1011 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3B4 SWAP2 SWAP1 PUSH2 0x3512 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x3C5 PUSH2 0x1059 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x3E1 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x3DC SWAP2 SWAP1 PUSH2 0x2B3C JUMP JUMPDEST PUSH2 0x10E1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3EE SWAP2 SWAP1 PUSH2 0x3512 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x3FF PUSH2 0x1318 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x40C SWAP2 SWAP1 PUSH2 0x3147 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x41D PUSH2 0x1342 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x42A SWAP2 SWAP1 PUSH2 0x3310 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x44D PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x448 SWAP2 SWAP1 PUSH2 0x2AD7 JUMP JUMPDEST PUSH2 0x13D4 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x469 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x464 SWAP2 SWAP1 PUSH2 0x2A72 JUMP JUMPDEST PUSH2 0x13E2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x476 SWAP2 SWAP1 PUSH2 0x323E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x499 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x494 SWAP2 SWAP1 PUSH2 0x2A72 JUMP JUMPDEST PUSH2 0x14CD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x4A6 SWAP2 SWAP1 PUSH2 0x323E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x4C9 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x4C4 SWAP2 SWAP1 PUSH2 0x2AD7 JUMP JUMPDEST PUSH2 0x14EB JUMP JUMPDEST STOP JUMPDEST PUSH2 0x4E5 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x4E0 SWAP2 SWAP1 PUSH2 0x2A72 JUMP JUMPDEST PUSH2 0x16C0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x4F2 SWAP2 SWAP1 PUSH2 0x3512 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x515 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x510 SWAP2 SWAP1 PUSH2 0x2AD7 JUMP JUMPDEST PUSH2 0x16F1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x52B SWAP11 SWAP10 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3259 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x54E PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x549 SWAP2 SWAP1 PUSH2 0x2AD7 JUMP JUMPDEST PUSH2 0x1762 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x55E SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3564 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x581 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x57C SWAP2 SWAP1 PUSH2 0x29E7 JUMP JUMPDEST PUSH2 0x17AF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x58E SWAP2 SWAP1 PUSH2 0x3512 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x5B1 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x5AC SWAP2 SWAP1 PUSH2 0x2AD7 JUMP JUMPDEST PUSH2 0x1836 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x5CD PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x5C8 SWAP2 SWAP1 PUSH2 0x29BE JUMP JUMPDEST PUSH2 0x1B28 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x60 PUSH1 0x3 DUP1 SLOAD PUSH2 0x5DE SWAP1 PUSH2 0x37C6 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 0x60A SWAP1 PUSH2 0x37C6 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x657 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x62C JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x657 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 0x63A JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x675 PUSH2 0x66E PUSH2 0x1C20 JUMP JUMPDEST DUP5 DUP5 PUSH2 0x1C28 JUMP JUMPDEST PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x696 DUP5 DUP5 DUP5 PUSH2 0x1DF3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x6E1 PUSH2 0x1C20 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP DUP3 DUP2 LT ISZERO PUSH2 0x761 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x758 SWAP1 PUSH2 0x3412 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x775 DUP6 PUSH2 0x76D PUSH2 0x1C20 JUMP JUMPDEST DUP6 DUP5 SUB PUSH2 0x1C28 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x6 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x7E1 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x8 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x81B JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x4 MUL ADD PUSH1 0x3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x872 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST EQ PUSH2 0x8B2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x8A9 SWAP1 PUSH2 0x33B2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x8 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x8EE JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x4 MUL ADD PUSH1 0x0 ADD SLOAD SWAP1 POP PUSH1 0xE SLOAD DUP2 PUSH1 0xC SLOAD PUSH2 0x913 SWAP2 SWAP1 PUSH2 0x36C1 JUMP JUMPDEST GT ISZERO PUSH2 0x927 JUMPI PUSH2 0x922 DUP3 PUSH2 0xC8E JUMP JUMPDEST PUSH2 0xA86 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x8 DUP4 DUP2 SLOAD DUP2 LT PUSH2 0x963 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x4 MUL ADD PUSH1 0x1 ADD SLOAD SWAP1 POP DUP1 PUSH1 0xD SLOAD LT ISZERO PUSH2 0x987 JUMPI PUSH1 0xD SLOAD SWAP1 POP JUMPDEST PUSH2 0x991 DUP3 DUP3 PUSH2 0x2074 JUMP JUMPDEST DUP1 PUSH1 0x7 DUP4 DUP2 SLOAD DUP2 LT PUSH2 0x9CC JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0xA MUL ADD PUSH1 0x9 ADD PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x9EC SWAP2 SWAP1 PUSH2 0x35E0 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH2 0x9FE DUP4 PUSH1 0x2 PUSH2 0x210E JUMP JUMPDEST PUSH32 0x3921E771BED0BD3A8859D908E5E31888903B50D5B8EC0004C08C71920343431A DUP4 PUSH1 0x8 DUP6 DUP2 SLOAD DUP2 LT PUSH2 0xA5A JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x4 MUL ADD PUSH1 0x1 ADD SLOAD DUP4 PUSH1 0x40 MLOAD PUSH2 0xA7C SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x352D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP PUSH1 0x0 DUP2 PUSH2 0xADA CALLER PUSH2 0x1011 JUMP JUMPDEST PUSH2 0xAE4 SWAP2 SWAP1 PUSH2 0x36C1 JUMP JUMPDEST SWAP1 POP DUP1 DUP4 GT ISZERO PUSH2 0xAF2 JUMPI DUP1 SWAP3 POP JUMPDEST PUSH1 0x0 DUP4 GT ISZERO PUSH2 0xC50 JUMPI DUP3 PUSH1 0x9 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0xC SLOAD DUP2 SLOAD DUP2 LT PUSH2 0xB75 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0xB8E SWAP2 SWAP1 PUSH2 0x35E0 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP3 PUSH1 0xA PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0xBE4 SWAP2 SWAP1 PUSH2 0x35E0 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP3 PUSH1 0x7 PUSH1 0xC SLOAD DUP2 SLOAD DUP2 LT PUSH2 0xC28 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0xA MUL ADD PUSH1 0x4 ADD PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0xC48 SWAP2 SWAP1 PUSH2 0x35E0 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP JUMPDEST PUSH32 0xB4214C8C54FC7442F36D3682F59AEBAF09358A4431835B30EFB29D52CF9E1E91 CALLER DUP5 PUSH1 0x40 MLOAD PUSH2 0xC81 SWAP3 SWAP2 SWAP1 PUSH2 0x3199 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH2 0xC99 DUP2 PUSH1 0x3 PUSH2 0x210E JUMP JUMPDEST PUSH32 0x8B74D3CCCBCB3894CCC99C3A75F6A6890F71EA4C039FE60EABD7BEE40B1231C DUP2 PUSH1 0x40 MLOAD PUSH2 0xCC8 SWAP2 SWAP1 PUSH2 0x3512 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x12 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x9 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP4 DUP2 SLOAD DUP2 LT PUSH2 0xD55 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0xD6E JUMPI DUP1 SWAP2 POP JUMPDEST DUP2 PUSH1 0x9 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP5 DUP2 SLOAD DUP2 LT PUSH2 0xDE6 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0xDFF SWAP2 SWAP1 PUSH2 0x36C1 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0xA PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0xE55 SWAP2 SWAP1 PUSH2 0x36C1 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x7 DUP5 DUP2 SLOAD DUP2 LT PUSH2 0xE97 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0xA MUL ADD PUSH1 0x4 ADD PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0xEB7 SWAP2 SWAP1 PUSH2 0x36C1 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF65 PUSH2 0xED0 PUSH2 0x1C20 JUMP JUMPDEST DUP5 DUP5 PUSH1 0x1 PUSH1 0x0 PUSH2 0xEDE PUSH2 0x1C20 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0xF60 SWAP2 SWAP1 PUSH2 0x35E0 JUMP JUMPDEST PUSH2 0x1C28 JUMP JUMPDEST PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xF77 PUSH2 0x1C20 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xF95 PUSH2 0x1318 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xFEB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xFE2 SWAP1 PUSH2 0x3432 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xFF5 DUP3 DUP3 PUSH2 0x226A JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP2 POP SWAP1 POP SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1061 PUSH2 0x1C20 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x107F PUSH2 0x1318 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x10D5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x10CC SWAP1 PUSH2 0x3432 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x10DF PUSH1 0x0 PUSH2 0x24C9 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xC SLOAD DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x113C JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP2 MSTORE POP PUSH1 0x8 DUP1 DUP1 SLOAD SWAP1 POP DUP2 SLOAD DUP2 LT PUSH2 0x117D JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x4 MUL ADD PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD SSTORE PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD SSTORE PUSH1 0x40 DUP3 ADD MLOAD DUP2 PUSH1 0x2 ADD SSTORE PUSH1 0x60 DUP3 ADD MLOAD DUP2 PUSH1 0x3 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x11FA JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST MUL OR SWAP1 SSTORE POP SWAP1 POP POP DUP2 PUSH1 0x7 PUSH1 0xC SLOAD DUP2 SLOAD DUP2 LT PUSH2 0x123F JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0xA MUL ADD PUSH1 0x8 ADD PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x125F SWAP2 SWAP1 PUSH2 0x35E0 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH1 0x1 PUSH1 0x7 PUSH1 0xC SLOAD DUP2 SLOAD DUP2 LT PUSH2 0x12A4 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0xA MUL ADD PUSH1 0x7 ADD PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x12C4 SWAP2 SWAP1 PUSH2 0x35E0 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH2 0x12D7 PUSH1 0xC SLOAD DUP4 PUSH2 0x258F JUMP JUMPDEST PUSH32 0x53E38B388D36A706C89770536E77D9DB72872E0055CC5433AAC31F367CFB81E3 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD PUSH2 0x130A SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x352D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x5 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x4 DUP1 SLOAD PUSH2 0x1351 SWAP1 PUSH2 0x37C6 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 0x137D SWAP1 PUSH2 0x37C6 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x13CA JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x139F JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x13CA 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 0x13AD JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x13DF DUP2 PUSH1 0x0 PUSH2 0x226A JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x0 PUSH2 0x13F1 PUSH2 0x1C20 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP DUP3 DUP2 LT ISZERO PUSH2 0x14AE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x14A5 SWAP1 PUSH2 0x34D2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x14C2 PUSH2 0x14B9 PUSH2 0x1C20 JUMP JUMPDEST DUP6 DUP6 DUP5 SUB PUSH2 0x1C28 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14E1 PUSH2 0x14DA PUSH2 0x1C20 JUMP JUMPDEST DUP5 DUP5 PUSH2 0x1DF3 JUMP JUMPDEST PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x6 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x23B872DD CALLER ADDRESS DUP5 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x154A SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3162 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1564 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1578 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 0x159C SWAP2 SWAP1 PUSH2 0x2AAE JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0xB SLOAD DUP3 PUSH2 0x15AD SWAP2 SWAP1 PUSH2 0x3636 JUMP JUMPDEST SWAP1 POP PUSH2 0x15B9 CALLER DUP3 PUSH2 0x2629 JUMP JUMPDEST DUP1 PUSH1 0x7 PUSH1 0xC SLOAD DUP2 SLOAD DUP2 LT PUSH2 0x15F6 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0xA MUL ADD PUSH1 0x1 ADD PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x1616 SWAP2 SWAP1 PUSH2 0x35E0 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x7 PUSH1 0xC SLOAD DUP2 SLOAD DUP2 LT PUSH2 0x165A JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0xA MUL ADD PUSH1 0x3 ADD PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x167A SWAP2 SWAP1 PUSH2 0x35E0 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH32 0x9DBB0E7DDA3E09710CE75B801ADDC87CF9D9C6C581641B3275FCA409AD086C62 CALLER DUP4 DUP4 PUSH1 0x40 MLOAD PUSH2 0x16B4 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x31C2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0x9 PUSH1 0x20 MSTORE DUP2 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x16DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP2 POP SWAP2 POP POP SLOAD DUP2 JUMP JUMPDEST PUSH1 0x7 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x1701 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0xA MUL ADD PUSH1 0x0 SWAP2 POP SWAP1 POP DUP1 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 DUP1 PUSH1 0x1 ADD SLOAD SWAP1 DUP1 PUSH1 0x2 ADD SLOAD SWAP1 DUP1 PUSH1 0x3 ADD SLOAD SWAP1 DUP1 PUSH1 0x4 ADD SLOAD SWAP1 DUP1 PUSH1 0x5 ADD SLOAD SWAP1 DUP1 PUSH1 0x6 ADD SLOAD SWAP1 DUP1 PUSH1 0x7 ADD SLOAD SWAP1 DUP1 PUSH1 0x8 ADD SLOAD SWAP1 DUP1 PUSH1 0x9 ADD SLOAD SWAP1 POP DUP11 JUMP JUMPDEST PUSH1 0x8 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x1772 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x4 MUL ADD PUSH1 0x0 SWAP2 POP SWAP1 POP DUP1 PUSH1 0x0 ADD SLOAD SWAP1 DUP1 PUSH1 0x1 ADD SLOAD SWAP1 DUP1 PUSH1 0x2 ADD SLOAD SWAP1 DUP1 PUSH1 0x3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 POP DUP5 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x7 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x1870 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0xA MUL ADD PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0x18CE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x18C5 SWAP1 PUSH2 0x33F2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x9 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x1947 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP PUSH1 0x0 PUSH1 0x7 DUP4 DUP2 SLOAD DUP2 LT PUSH2 0x1990 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0xA MUL ADD PUSH1 0x5 ADD SLOAD DUP3 PUSH2 0x19AD SWAP2 SWAP1 PUSH2 0x3667 JUMP JUMPDEST SWAP1 POP PUSH2 0x19B9 CALLER DUP4 PUSH2 0x2789 JUMP JUMPDEST DUP2 PUSH1 0x7 PUSH1 0xC SLOAD DUP2 SLOAD DUP2 LT PUSH2 0x19F6 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0xA MUL ADD PUSH1 0x2 ADD PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x1A16 SWAP2 SWAP1 PUSH2 0x35E0 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP1 PUSH1 0xD PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x1A2F SWAP2 SWAP1 PUSH2 0x36C1 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH1 0x6 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB CALLER DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1A93 SWAP3 SWAP2 SWAP1 PUSH2 0x3199 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1AAD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1AC1 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 0x1AE5 SWAP2 SWAP1 PUSH2 0x2AAE JUMP JUMPDEST POP PUSH32 0xB0F19CFBED4200E9F998F24A7242EC26A8B7419B5FBAA4F550705CD11A32E597 CALLER DUP5 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH2 0x1B1B SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x31F9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH2 0x1B30 PUSH2 0x1C20 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1B4E PUSH2 0x1318 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1BA4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1B9B SWAP1 PUSH2 0x3432 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x1C14 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1C0B SWAP1 PUSH2 0x3372 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1C1D DUP2 PUSH2 0x24C9 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 CALLER SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x1C98 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1C8F SWAP1 PUSH2 0x3492 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x1D08 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1CFF SWAP1 PUSH2 0x3392 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP4 PUSH1 0x40 MLOAD PUSH2 0x1DE6 SWAP2 SWAP1 PUSH2 0x3512 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x1E63 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1E5A SWAP1 PUSH2 0x3472 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x1ED3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1ECA SWAP1 PUSH2 0x3332 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1EDE DUP4 DUP4 DUP4 PUSH2 0x2960 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP DUP2 DUP2 LT ISZERO PUSH2 0x1F64 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1F5B SWAP1 PUSH2 0x33D2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 DUP2 SUB PUSH1 0x0 DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x0 DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x1FF7 SWAP2 SWAP1 PUSH2 0x35E0 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP5 PUSH1 0x40 MLOAD PUSH2 0x205B SWAP2 SWAP1 PUSH2 0x3512 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH2 0x206E DUP5 DUP5 DUP5 PUSH2 0x2965 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST DUP1 PUSH1 0x7 DUP4 DUP2 SLOAD DUP2 LT PUSH2 0x20AF JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0xA MUL ADD PUSH1 0x6 ADD PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x20CF SWAP2 SWAP1 PUSH2 0x36C1 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP1 PUSH1 0xD PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x20E8 SWAP2 SWAP1 PUSH2 0x36C1 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH2 0x20F7 PUSH2 0x67F JUMP JUMPDEST PUSH1 0xD SLOAD PUSH2 0x2104 SWAP2 SWAP1 PUSH2 0x3636 JUMP JUMPDEST PUSH1 0xB DUP2 SWAP1 SSTORE POP POP POP JUMP JUMPDEST DUP1 PUSH1 0x8 DUP4 DUP2 SLOAD DUP2 LT PUSH2 0x2149 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x4 MUL ADD PUSH1 0x3 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x21A2 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST MUL OR SWAP1 SSTORE POP PUSH1 0x0 PUSH1 0x8 DUP4 DUP2 SLOAD DUP2 LT PUSH2 0x21E3 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x4 MUL ADD PUSH1 0x0 ADD SLOAD SWAP1 POP PUSH1 0x1 PUSH1 0x7 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x2233 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0xA MUL ADD PUSH1 0x7 ADD PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x2253 SWAP2 SWAP1 PUSH2 0x36C1 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH2 0x2265 DUP2 PUSH1 0x0 PUSH2 0x226A JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 EQ DUP1 PUSH2 0x22DA JUMPI POP PUSH1 0x7 PUSH1 0x1 DUP4 PUSH2 0x2283 SWAP2 SWAP1 PUSH2 0x36C1 JUMP JUMPDEST DUP2 SLOAD DUP2 LT PUSH2 0x22BA JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0xA MUL ADD PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND JUMPDEST PUSH2 0x2319 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2310 SWAP1 PUSH2 0x34B2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x7 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x2353 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0xA MUL ADD PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0x23D2 JUMPI POP DUP1 DUP1 PUSH2 0x23D1 JUMPI POP PUSH1 0x0 PUSH1 0x7 DUP4 DUP2 SLOAD DUP2 LT PUSH2 0x23BD JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0xA MUL ADD PUSH1 0x7 ADD SLOAD EQ JUMPDEST JUMPDEST ISZERO PUSH2 0x24C5 JUMPI PUSH1 0xB SLOAD PUSH1 0x7 DUP4 DUP2 SLOAD DUP2 LT PUSH2 0x2414 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0xA MUL ADD PUSH1 0x5 ADD DUP2 SWAP1 SSTORE POP PUSH1 0x1 PUSH1 0x7 DUP4 DUP2 SLOAD DUP2 LT PUSH2 0x2465 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0xA MUL ADD PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH32 0x83E4D2CC842233C386ED6C222A716EF29890CDFE6561C09AEA253C3DF7C91434 DUP3 PUSH1 0x40 MLOAD PUSH2 0x24BC SWAP2 SWAP1 PUSH2 0x3512 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x5 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP2 PUSH1 0x5 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST DUP1 PUSH1 0x7 DUP4 DUP2 SLOAD DUP2 LT PUSH2 0x25CA JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0xA MUL ADD PUSH1 0x6 ADD PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x25EA SWAP2 SWAP1 PUSH2 0x35E0 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP1 PUSH1 0xD PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x2603 SWAP2 SWAP1 PUSH2 0x35E0 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH2 0x2612 PUSH2 0x67F JUMP JUMPDEST PUSH1 0xD SLOAD PUSH2 0x261F SWAP2 SWAP1 PUSH2 0x3636 JUMP JUMPDEST PUSH1 0xB DUP2 SWAP1 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x2699 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2690 SWAP1 PUSH2 0x34F2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x26A5 PUSH1 0x0 DUP4 DUP4 PUSH2 0x2960 JUMP JUMPDEST DUP1 PUSH1 0x2 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x26B7 SWAP2 SWAP1 PUSH2 0x35E0 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP1 PUSH1 0x0 DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x270C SWAP2 SWAP1 PUSH2 0x35E0 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD PUSH2 0x2771 SWAP2 SWAP1 PUSH2 0x3512 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH2 0x2785 PUSH1 0x0 DUP4 DUP4 PUSH2 0x2965 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x27F9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x27F0 SWAP1 PUSH2 0x3452 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2805 DUP3 PUSH1 0x0 DUP4 PUSH2 0x2960 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP DUP2 DUP2 LT ISZERO PUSH2 0x288B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2882 SWAP1 PUSH2 0x3352 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 DUP2 SUB PUSH1 0x0 DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x2 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x28E2 SWAP2 SWAP1 PUSH2 0x36C1 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP5 PUSH1 0x40 MLOAD PUSH2 0x2947 SWAP2 SWAP1 PUSH2 0x3512 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH2 0x295B DUP4 PUSH1 0x0 DUP5 PUSH2 0x2965 JUMP JUMPDEST POP POP POP JUMP JUMPDEST POP POP POP JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x2979 DUP2 PUSH2 0x38D9 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x298E DUP2 PUSH2 0x38F0 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x29A3 DUP2 PUSH2 0x38F0 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x29B8 DUP2 PUSH2 0x3907 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x29D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x29DE DUP5 DUP3 DUP6 ADD PUSH2 0x296A JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x29FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2A08 DUP6 DUP3 DUP7 ADD PUSH2 0x296A JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x2A19 DUP6 DUP3 DUP7 ADD PUSH2 0x296A JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2A38 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2A46 DUP7 DUP3 DUP8 ADD PUSH2 0x296A JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x2A57 DUP7 DUP3 DUP8 ADD PUSH2 0x296A JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x2A68 DUP7 DUP3 DUP8 ADD PUSH2 0x29A9 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2A85 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2A93 DUP6 DUP3 DUP7 ADD PUSH2 0x296A JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x2AA4 DUP6 DUP3 DUP7 ADD PUSH2 0x29A9 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2AC0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2ACE DUP5 DUP3 DUP6 ADD PUSH2 0x2994 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2AE9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2AF7 DUP5 DUP3 DUP6 ADD PUSH2 0x29A9 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2B13 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2B21 DUP6 DUP3 DUP7 ADD PUSH2 0x29A9 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x2B32 DUP6 DUP3 DUP7 ADD PUSH2 0x297F JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2B4F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2B5D DUP6 DUP3 DUP7 ADD PUSH2 0x29A9 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x2B6E DUP6 DUP3 DUP7 ADD PUSH2 0x29A9 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0x2B81 DUP2 PUSH2 0x36F5 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x2B90 DUP2 PUSH2 0x3707 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x2B9F DUP2 PUSH2 0x375D JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x2BAE DUP2 PUSH2 0x3781 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2BBF DUP3 PUSH2 0x35C4 JUMP JUMPDEST PUSH2 0x2BC9 DUP2 DUP6 PUSH2 0x35CF JUMP JUMPDEST SWAP4 POP PUSH2 0x2BD9 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x3793 JUMP JUMPDEST PUSH2 0x2BE2 DUP2 PUSH2 0x38B4 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2BFA PUSH1 0x23 DUP4 PUSH2 0x35CF JUMP JUMPDEST SWAP2 POP PUSH32 0x45524332303A207472616E7366657220746F20746865207A65726F2061646472 PUSH1 0x0 DUP4 ADD MSTORE PUSH32 0x6573730000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2C60 PUSH1 0x22 DUP4 PUSH2 0x35CF JUMP JUMPDEST SWAP2 POP PUSH32 0x45524332303A206275726E20616D6F756E7420657863656564732062616C616E PUSH1 0x0 DUP4 ADD MSTORE PUSH32 0x6365000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2CC6 PUSH1 0x26 DUP4 PUSH2 0x35CF JUMP JUMPDEST SWAP2 POP PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x0 DUP4 ADD MSTORE PUSH32 0x6464726573730000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2D2C PUSH1 0x22 DUP4 PUSH2 0x35CF JUMP JUMPDEST SWAP2 POP PUSH32 0x45524332303A20617070726F766520746F20746865207A65726F206164647265 PUSH1 0x0 DUP4 ADD MSTORE PUSH32 0x7373000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2D92 PUSH1 0x13 DUP4 PUSH2 0x35CF JUMP JUMPDEST SWAP2 POP PUSH32 0x57726F6E6720706F6C6963792073746174757300000000000000000000000000 PUSH1 0x0 DUP4 ADD MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2DD2 PUSH1 0x26 DUP4 PUSH2 0x35CF JUMP JUMPDEST SWAP2 POP PUSH32 0x45524332303A207472616E7366657220616D6F756E7420657863656564732062 PUSH1 0x0 DUP4 ADD MSTORE PUSH32 0x616C616E63650000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2E38 PUSH1 0xF DUP4 PUSH2 0x35CF JUMP JUMPDEST SWAP2 POP PUSH32 0x45706F6368206E6F742066696E616C0000000000000000000000000000000000 PUSH1 0x0 DUP4 ADD MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2E78 PUSH1 0x28 DUP4 PUSH2 0x35CF JUMP JUMPDEST SWAP2 POP PUSH32 0x45524332303A207472616E7366657220616D6F756E7420657863656564732061 PUSH1 0x0 DUP4 ADD MSTORE PUSH32 0x6C6C6F77616E6365000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2EDE PUSH1 0x20 DUP4 PUSH2 0x35CF JUMP JUMPDEST SWAP2 POP PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x0 DUP4 ADD MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2F1E PUSH1 0x21 DUP4 PUSH2 0x35CF JUMP JUMPDEST SWAP2 POP PUSH32 0x45524332303A206275726E2066726F6D20746865207A65726F20616464726573 PUSH1 0x0 DUP4 ADD MSTORE PUSH32 0x7300000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2F84 PUSH1 0x25 DUP4 PUSH2 0x35CF JUMP JUMPDEST SWAP2 POP PUSH32 0x45524332303A207472616E736665722066726F6D20746865207A65726F206164 PUSH1 0x0 DUP4 ADD MSTORE PUSH32 0x6472657373000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2FEA PUSH1 0x24 DUP4 PUSH2 0x35CF JUMP JUMPDEST SWAP2 POP PUSH32 0x45524332303A20617070726F76652066726F6D20746865207A65726F20616464 PUSH1 0x0 DUP4 ADD MSTORE PUSH32 0x7265737300000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3050 PUSH1 0x1C DUP4 PUSH2 0x35CF JUMP JUMPDEST SWAP2 POP PUSH32 0x4561726C6965722065706F636873206E6F742066696E616C697A656400000000 PUSH1 0x0 DUP4 ADD MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3090 PUSH1 0x25 DUP4 PUSH2 0x35CF JUMP JUMPDEST SWAP2 POP PUSH32 0x45524332303A2064656372656173656420616C6C6F77616E63652062656C6F77 PUSH1 0x0 DUP4 ADD MSTORE PUSH32 0x207A65726F000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x30F6 PUSH1 0x1F DUP4 PUSH2 0x35CF JUMP JUMPDEST SWAP2 POP PUSH32 0x45524332303A206D696E7420746F20746865207A65726F206164647265737300 PUSH1 0x0 DUP4 ADD MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x3132 DUP2 PUSH2 0x3746 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x3141 DUP2 PUSH2 0x3750 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x315C PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x2B78 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x3177 PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0x2B78 JUMP JUMPDEST PUSH2 0x3184 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x2B78 JUMP JUMPDEST PUSH2 0x3191 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x3129 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x31AE PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x2B78 JUMP JUMPDEST PUSH2 0x31BB PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x3129 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x31D7 PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0x2B78 JUMP JUMPDEST PUSH2 0x31E4 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x3129 JUMP JUMPDEST PUSH2 0x31F1 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x3129 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x320E PUSH1 0x0 DUP4 ADD DUP8 PUSH2 0x2B78 JUMP JUMPDEST PUSH2 0x321B PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x3129 JUMP JUMPDEST PUSH2 0x3228 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x3129 JUMP JUMPDEST PUSH2 0x3235 PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x3129 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x3253 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x2B87 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x140 DUP3 ADD SWAP1 POP PUSH2 0x326F PUSH1 0x0 DUP4 ADD DUP14 PUSH2 0x2B87 JUMP JUMPDEST PUSH2 0x327C PUSH1 0x20 DUP4 ADD DUP13 PUSH2 0x3129 JUMP JUMPDEST PUSH2 0x3289 PUSH1 0x40 DUP4 ADD DUP12 PUSH2 0x3129 JUMP JUMPDEST PUSH2 0x3296 PUSH1 0x60 DUP4 ADD DUP11 PUSH2 0x3129 JUMP JUMPDEST PUSH2 0x32A3 PUSH1 0x80 DUP4 ADD DUP10 PUSH2 0x3129 JUMP JUMPDEST PUSH2 0x32B0 PUSH1 0xA0 DUP4 ADD DUP9 PUSH2 0x3129 JUMP JUMPDEST PUSH2 0x32BD PUSH1 0xC0 DUP4 ADD DUP8 PUSH2 0x3129 JUMP JUMPDEST PUSH2 0x32CA PUSH1 0xE0 DUP4 ADD DUP7 PUSH2 0x3129 JUMP JUMPDEST PUSH2 0x32D8 PUSH2 0x100 DUP4 ADD DUP6 PUSH2 0x3129 JUMP JUMPDEST PUSH2 0x32E6 PUSH2 0x120 DUP4 ADD DUP5 PUSH2 0x3129 JUMP JUMPDEST SWAP12 SWAP11 POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x330A PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x2B96 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x332A DUP2 DUP5 PUSH2 0x2BB4 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x334B DUP2 PUSH2 0x2BED JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x336B DUP2 PUSH2 0x2C53 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x338B DUP2 PUSH2 0x2CB9 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x33AB DUP2 PUSH2 0x2D1F JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x33CB DUP2 PUSH2 0x2D85 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x33EB DUP2 PUSH2 0x2DC5 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x340B DUP2 PUSH2 0x2E2B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x342B DUP2 PUSH2 0x2E6B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x344B DUP2 PUSH2 0x2ED1 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x346B DUP2 PUSH2 0x2F11 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x348B DUP2 PUSH2 0x2F77 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x34AB DUP2 PUSH2 0x2FDD JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x34CB DUP2 PUSH2 0x3043 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x34EB DUP2 PUSH2 0x3083 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x350B DUP2 PUSH2 0x30E9 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x3527 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x3129 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x3542 PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0x3129 JUMP JUMPDEST PUSH2 0x354F PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x3129 JUMP JUMPDEST PUSH2 0x355C PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x3129 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x3579 PUSH1 0x0 DUP4 ADD DUP8 PUSH2 0x3129 JUMP JUMPDEST PUSH2 0x3586 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x3129 JUMP JUMPDEST PUSH2 0x3593 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x3129 JUMP JUMPDEST PUSH2 0x35A0 PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x2BA5 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x35BE PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x3138 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x35EB DUP3 PUSH2 0x3746 JUMP JUMPDEST SWAP2 POP PUSH2 0x35F6 DUP4 PUSH2 0x3746 JUMP JUMPDEST SWAP3 POP DUP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SUB DUP3 GT ISZERO PUSH2 0x362B JUMPI PUSH2 0x362A PUSH2 0x37F8 JUMP JUMPDEST JUMPDEST DUP3 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3641 DUP3 PUSH2 0x3746 JUMP JUMPDEST SWAP2 POP PUSH2 0x364C DUP4 PUSH2 0x3746 JUMP JUMPDEST SWAP3 POP DUP3 PUSH2 0x365C JUMPI PUSH2 0x365B PUSH2 0x3827 JUMP JUMPDEST JUMPDEST DUP3 DUP3 DIV SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3672 DUP3 PUSH2 0x3746 JUMP JUMPDEST SWAP2 POP PUSH2 0x367D DUP4 PUSH2 0x3746 JUMP JUMPDEST SWAP3 POP DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x36B6 JUMPI PUSH2 0x36B5 PUSH2 0x37F8 JUMP JUMPDEST JUMPDEST DUP3 DUP3 MUL SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x36CC DUP3 PUSH2 0x3746 JUMP JUMPDEST SWAP2 POP PUSH2 0x36D7 DUP4 PUSH2 0x3746 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 LT ISZERO PUSH2 0x36EA JUMPI PUSH2 0x36E9 PUSH2 0x37F8 JUMP JUMPDEST JUMPDEST DUP3 DUP3 SUB SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3700 DUP3 PUSH2 0x3726 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP PUSH2 0x3721 DUP3 PUSH2 0x38C5 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3768 DUP3 PUSH2 0x376F JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x377A DUP3 PUSH2 0x3726 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x378C DUP3 PUSH2 0x3713 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x37B1 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x3796 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x37C0 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 DUP3 DIV SWAP1 POP PUSH1 0x1 DUP3 AND DUP1 PUSH2 0x37DE JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH2 0x37F2 JUMPI PUSH2 0x37F1 PUSH2 0x3885 JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x4 DUP2 LT PUSH2 0x38D6 JUMPI PUSH2 0x38D5 PUSH2 0x3856 JUMP JUMPDEST JUMPDEST POP JUMP JUMPDEST PUSH2 0x38E2 DUP2 PUSH2 0x36F5 JUMP JUMPDEST DUP2 EQ PUSH2 0x38ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x38F9 DUP2 PUSH2 0x3707 JUMP JUMPDEST DUP2 EQ PUSH2 0x3904 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x3910 DUP2 PUSH2 0x3746 JUMP JUMPDEST DUP2 EQ PUSH2 0x391B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 EXTCODESIZE 0xCA DUP10 DUP16 CALLDATACOPY PUSH18 0x6901C2A427673CACBC9B2EFAFC981FA9C329 DIFFICULTY 0xD7 0xBE CREATE KECCAK256 SWAP10 0xAC GASPRICE PUSH5 0x736F6C6343 STOP ADDMOD STOP STOP CALLER ",
"sourceMap": "173:6435:5:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2084:98:1;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4181:166;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3172:106;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4814:478;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;224:16:5;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5913:692;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2209:533;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5760:147;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3021:91:1;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2748:328:5;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5687:212:1;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4595:116:5;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;854:49;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3336:125:1;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1605:92:0;;;:::i;:::-;;5189:565:5;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;973:85:0;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2295:102:1;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4495:94:5;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6386:405:1;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3664:172;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1830:373:5;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;802:46;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;745:21;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;772:24;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;3894:149:1;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3082:480:5;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1846:189:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2084:98:1;2138:13;2170:5;2163:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2084:98;:::o;4181:166::-;4264:4;4280:39;4289:12;:10;:12::i;:::-;4303:7;4312:6;4280:8;:39::i;:::-;4336:4;4329:11;;4181:166;;;;:::o;3172:106::-;3233:7;3259:12;;3252:19;;3172:106;:::o;4814:478::-;4950:4;4966:36;4976:6;4984:9;4995:6;4966:9;:36::i;:::-;5013:24;5040:11;:19;5052:6;5040:19;;;;;;;;;;;;;;;:33;5060:12;:10;:12::i;:::-;5040:33;;;;;;;;;;;;;;;;5013:60;;5111:6;5091:16;:26;;5083:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;5196:57;5205:6;5213:12;:10;:12::i;:::-;5246:6;5227:16;:25;5196:8;:57::i;:::-;5281:4;5274:11;;;4814:478;;;;;:::o;224:16:5:-;;;;;;;;;;;;;:::o;5913:692::-;6006:25;5977:54;;;;;;;;;;;;;;;;:8;5986;5977:18;;;;;;;;;;;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;:54;;;;;;;;;;;;;;;;;5969:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;6065:15;6083:8;6092;6083:18;;;;;;;;;;;;;;;;;;;;;;;;;;:26;;;6065:44;;6148:15;;6138:7;6123:12;;:22;;;;:::i;:::-;:40;6119:480;;;6179:22;6192:8;6179:12;:22::i;:::-;6119:480;;;6232:17;6252:8;6261;6252:18;;;;;;;;;;;;;;;;;;;;;;;;;;:29;;;6232:49;;6317:9;6299:15;;:27;6295:60;;;6340:15;;6328:27;;6295:60;6369:27;6377:7;6386:9;6369:7;:27::i;:::-;6436:9;6410:6;6417:7;6410:15;;;;;;;;;;;;;;;;;;;;;;;;;;:22;;;:35;;;;;;;:::i;:::-;;;;;;;;6459:42;6470:8;6480:20;6459:10;:42::i;:::-;6520:68;6537:8;6547;6556;6547:18;;;;;;;;;;;;;;;;;;;;;;;;;;:29;;;6578:9;6520:68;;;;;;;;:::i;:::-;;;;;;;;6119:480;;5913:692;;:::o;2209:533::-;2263:21;2287:14;:26;2302:10;2287:26;;;;;;;;;;;;;;;;2263:50;;2323:20;2370:13;2346:21;2356:10;2346:9;:21::i;:::-;:37;;;;:::i;:::-;2323:60;;2409:12;2397:9;:24;2393:79;;;2449:12;2437:24;;2393:79;2497:1;2485:9;:13;2481:204;;;2553:9;2514;:21;2524:10;2514:21;;;;;;;;;;;;;;;2536:12;;2514:35;;;;;;;;;;;;;;;;;;;;;;;;:48;;;;;;;:::i;:::-;;;;;;;;2606:9;2576:14;:26;2591:10;2576:26;;;;;;;;;;;;;;;;:39;;;;;;;:::i;:::-;;;;;;;;2665:9;2629:6;2636:12;;2629:20;;;;;;;;;;;;;;;;;;;;;;;;;;:32;;;:45;;;;;;;:::i;:::-;;;;;;;;2481:204;2699:36;2713:10;2725:9;2699:36;;;;;;;:::i;:::-;;;;;;;;2209:533;;;:::o;5760:147::-;5817:42;5828:8;5838:20;5817:10;:42::i;:::-;5874:26;5891:8;5874:26;;;;;;:::i;:::-;;;;;;;;5760:147;:::o;3021:91:1:-;3079:5;3103:2;3096:9;;3021:91;:::o;2748:328:5:-;2818:14;2835:9;:21;2845:10;2835:21;;;;;;;;;;;;;;;2857:7;2835:30;;;;;;;;;;;;;;;;;;;;;;;;2818:47;;2891:6;2879:9;:18;2875:42;;;2911:6;2899:18;;2875:42;2961:9;2927;:21;2937:10;2927:21;;;;;;;;;;;;;;;2949:7;2927:30;;;;;;;;;;;;;;;;;;;;;;;;:43;;;;;;;:::i;:::-;;;;;;;;3010:9;2980:14;:26;2995:10;2980:26;;;;;;;;;;;;;;;;:39;;;;;;;:::i;:::-;;;;;;;;3060:9;3029:6;3036:7;3029:15;;;;;;;;;;;;;;;;;;;;;;;;;;:27;;;:40;;;;;;;:::i;:::-;;;;;;;;2748:328;;;:::o;5687:212:1:-;5775:4;5791:80;5800:12;:10;:12::i;:::-;5814:7;5860:10;5823:11;:25;5835:12;:10;:12::i;:::-;5823:25;;;;;;;;;;;;;;;:34;5849:7;5823:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;5791:8;:80::i;:::-;5888:4;5881:11;;5687:212;;;;:::o;4595:116:5:-;1196:12:0;:10;:12::i;:::-;1185:23;;:7;:5;:7::i;:::-;:23;;;1177:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;4674:30:5::1;4689:7;4698:5;4674:14;:30::i;:::-;4595:116:::0;;:::o;854:49::-;;;;;;;;;;;;;;;;;:::o;3336:125:1:-;3410:7;3436:9;:18;3446:7;3436:18;;;;;;;;;;;;;;;;3429:25;;3336:125;;;:::o;1605:92:0:-;1196:12;:10;:12::i;:::-;1185:23;;:7;:5;:7::i;:::-;:23;;;1177:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1669:21:::1;1687:1;1669:9;:21::i;:::-;1605:92::o:0;5189:565:5:-;5295:16;5355:170;;;;;;;;5385:12;;5355:170;;;;5470:10;5355:170;;;;5503:7;5355:170;;;;5419:25;5355:170;;;;;;;;;;;;;;;;;;;5327:8;5336;:15;;;;5327:25;;;;;;;;;;;;;;;;;;;;;;;;;;:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5568:7;5535:6;5542:12;;5535:20;;;;;;;;;;;;;;;;;;;;;;;;;;:29;;;:40;;;;;;;:::i;:::-;;;;;;;;5621:1;5585:6;5592:12;;5585:20;;;;;;;;;;;;;;;;;;;;;;;;;;:32;;;:37;;;;;;;:::i;:::-;;;;;;;;5632:32;5642:12;;5656:7;5632:9;:32::i;:::-;5679:43;5692:10;5704:7;5713:8;5679:43;;;;;;;;:::i;:::-;;;;;;;;5189:565;;;;:::o;973:85:0:-;1019:7;1045:6;;;;;;;;;;;1038:13;;973:85;:::o;2295:102:1:-;2351:13;2383:7;2376:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2295:102;:::o;4495:94:5:-;4552:30;4567:7;4576:5;4552:14;:30::i;:::-;4495:94;:::o;6386:405:1:-;6479:4;6495:24;6522:11;:25;6534:12;:10;:12::i;:::-;6522:25;;;;;;;;;;;;;;;:34;6548:7;6522:34;;;;;;;;;;;;;;;;6495:61;;6594:15;6574:16;:35;;6566:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;6685:67;6694:12;:10;:12::i;:::-;6708:7;6736:15;6717:16;:34;6685:8;:67::i;:::-;6780:4;6773:11;;;6386:405;;;;:::o;3664:172::-;3750:4;3766:42;3776:12;:10;:12::i;:::-;3790:9;3801:6;3766:9;:42::i;:::-;3825:4;3818:11;;3664:172;;;;:::o;1830:373:5:-;1883:3;;;;;;;;;;;:16;;;1900:10;1920:4;1927:9;1883:54;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1947:17;1979:15;;1967:9;:27;;;;:::i;:::-;1947:47;;2004:28;2010:10;2022:9;2004:5;:28::i;:::-;2076:9;2042:6;2049:12;;2042:20;;;;;;;;;;;;;;;;;;;;;;;;;;:30;;;:43;;;;;;;:::i;:::-;;;;;;;;2128:9;2095:6;2102:12;;2095:20;;;;;;;;;;;;;;;;;;;;;;;;;;:29;;;:42;;;;;;;:::i;:::-;;;;;;;;2152:44;2163:10;2175:9;2186;2152:44;;;;;;;;:::i;:::-;;;;;;;;1830:373;;:::o;802:46::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;745:21::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;772:24::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3894:149:1:-;3983:7;4009:11;:18;4021:5;4009:18;;;;;;;;;;;;;;;:27;4028:7;4009:27;;;;;;;;;;;;;;;;4002:34;;3894:149;;;;:::o;3082:480:5:-;3140:6;3147:7;3140:15;;;;;;;;;;;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;3132:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;3193:17;3213:9;:21;3223:10;3213:21;;;;;;;;;;;;;;;3235:7;3213:30;;;;;;;;;;;;;;;;;;;;;;;;3193:50;;3253:17;3285:6;3292:7;3285:15;;;;;;;;;;;;;;;;;;;;;;;;;;:29;;;3273:9;:41;;;;:::i;:::-;3253:61;;3324:28;3330:10;3342:9;3324:5;:28::i;:::-;3396:9;3362:6;3369:12;;3362:20;;;;;;;;;;;;;;;;;;;;;;;;;;:30;;;:43;;;;;;;:::i;:::-;;;;;;;;3434:9;3415:15;;:28;;;;;;;:::i;:::-;;;;;;;;3453:3;;;;;;;;;;;:12;;;3466:10;3478:9;3453:35;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3503:52;3513:10;3525:7;3534:9;3545;3503:52;;;;;;;;;:::i;:::-;;;;;;;;3082:480;;;:::o;1846:189:0:-;1196:12;:10;:12::i;:::-;1185:23;;:7;:5;:7::i;:::-;:23;;;1177:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1954:1:::1;1934:22;;:8;:22;;;;1926:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;2009:19;2019:8;2009:9;:19::i;:::-;1846:189:::0;:::o;587:96:4:-;640:7;666:10;659:17;;587:96;:::o;9962:370:1:-;10110:1;10093:19;;:5;:19;;;;10085:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10190:1;10171:21;;:7;:21;;;;10163:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10272:6;10242:11;:18;10254:5;10242:18;;;;;;;;;;;;;;;:27;10261:7;10242:27;;;;;;;;;;;;;;;:36;;;;10309:7;10293:32;;10302:5;10293:32;;;10318:6;10293:32;;;;;;:::i;:::-;;;;;;;;9962:370;;;:::o;7265:713::-;7418:1;7400:20;;:6;:20;;;;7392:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;7501:1;7480:23;;:9;:23;;;;7472:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;7554:47;7575:6;7583:9;7594:6;7554:20;:47::i;:::-;7612:21;7636:9;:17;7646:6;7636:17;;;;;;;;;;;;;;;;7612:41;;7688:6;7671:13;:23;;7663:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;7807:6;7791:13;:22;7771:9;:17;7781:6;7771:17;;;;;;;;;;;;;;;:42;;;;7857:6;7833:9;:20;7843:9;7833:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;7896:9;7879:35;;7888:6;7879:35;;;7907:6;7879:35;;;;;;:::i;:::-;;;;;;;;7925:46;7945:6;7953:9;7964:6;7925:19;:46::i;:::-;7265:713;;;;:::o;3858:215:5:-;3960:9;3930:6;3937:7;3930:15;;;;;;;;;;;;;;;;;;;;;;;;;;:26;;;:39;;;;;;;:::i;:::-;;;;;;;;3998:9;3979:15;;:28;;;;;;;:::i;:::-;;;;;;;;4053:13;:11;:13::i;:::-;4035:15;;:31;;;;:::i;:::-;4017:15;:49;;;;3858:215;;:::o;4928:255::-;5034:6;5006:8;5015;5006:18;;;;;;;;;;;;;;;;;;;;;;;;;;:25;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5050:15;5068:8;5077;5068:18;;;;;;;;;;;;;;;;;;;;;;;;;;:26;;;5050:44;;5135:1;5104:6;5111:7;5104:15;;;;;;;;;;;;;;;;;;;;;;;;;;:27;;;:32;;;;;;;:::i;:::-;;;;;;;;5146:30;5161:7;5170:5;5146:14;:30::i;:::-;4928:255;;;:::o;4079:410::-;4170:1;4159:7;:12;:43;;;;4175:6;4192:1;4182:7;:11;;;;:::i;:::-;4175:19;;;;;;;;;;;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;4159:43;4151:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;4250:6;4257:7;4250:15;;;;;;;;;;;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;4249:24;:71;;;;;4278:5;:41;;;;4318:1;4287:6;4294:7;4287:15;;;;;;;;;;;;;;;;;;;;;;;;;;:27;;;:32;4278:41;4249:71;4245:238;;;4368:15;;4336:6;4343:7;4336:15;;;;;;;;;;;;;;;;;;;;;;;;;;:29;;:47;;;;4423:4;4397:6;4404:7;4397:15;;;;;;;;;;;;;;;;;;;;;;;;;;:23;;;:30;;;;;;;;;;;;;;;;;;4446:26;4464:7;4446:26;;;;;;:::i;:::-;;;;;;;;4245:238;4079:410;;:::o;2041:169:0:-;2096:16;2115:6;;;;;;;;;;;2096:25;;2140:8;2131:6;;:17;;;;;;;;;;;;;;;;;;2194:8;2163:40;;2184:8;2163:40;;;;;;;;;;;;2041:169;;:::o;3635:217:5:-;3739:9;3709:6;3716:7;3709:15;;;;;;;;;;;;;;;;;;;;;;;;;;:26;;;:39;;;;;;;:::i;:::-;;;;;;;;3777:9;3758:15;;:28;;;;;;;:::i;:::-;;;;;;;;3832:13;:11;:13::i;:::-;3814:15;;:31;;;;:::i;:::-;3796:15;:49;;;;3635:217;;:::o;8254:389:1:-;8356:1;8337:21;;:7;:21;;;;8329:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;8405:49;8434:1;8438:7;8447:6;8405:20;:49::i;:::-;8481:6;8465:12;;:22;;;;;;;:::i;:::-;;;;;;;;8519:6;8497:9;:18;8507:7;8497:18;;;;;;;;;;;;;;;;:28;;;;;;;:::i;:::-;;;;;;;;8561:7;8540:37;;8557:1;8540:37;;;8570:6;8540:37;;;;;;:::i;:::-;;;;;;;;8588:48;8616:1;8620:7;8629:6;8588:19;:48::i;:::-;8254:389;;:::o;8963:576::-;9065:1;9046:21;;:7;:21;;;;9038:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9116:49;9137:7;9154:1;9158:6;9116:20;:49::i;:::-;9176:22;9201:9;:18;9211:7;9201:18;;;;;;;;;;;;;;;;9176:43;;9255:6;9237:14;:24;;9229:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;9372:6;9355:14;:23;9334:9;:18;9344:7;9334:18;;;;;;;;;;;;;;;:44;;;;9414:6;9398:12;;:22;;;;;;;:::i;:::-;;;;;;;;9462:1;9436:37;;9445:7;9436:37;;;9466:6;9436:37;;;;;;:::i;:::-;;;;;;;;9484:48;9504:7;9521:1;9525:6;9484:19;:48::i;:::-;8963:576;;;:::o;10916:121::-;;;;:::o;11625:120::-;;;;:::o;7:139:6:-;;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:133::-;;233:6;220:20;211:29;;249:30;273:5;249:30;:::i;:::-;201:84;;;;:::o;291:137::-;;376:6;370:13;361:22;;392:30;416:5;392:30;:::i;:::-;351:77;;;;:::o;434:139::-;;518:6;505:20;496:29;;534:33;561:5;534:33;:::i;:::-;486:87;;;;:::o;579:262::-;;687:2;675:9;666:7;662:23;658:32;655:2;;;703:1;700;693:12;655:2;746:1;771:53;816:7;807:6;796:9;792:22;771:53;:::i;:::-;761:63;;717:117;645:196;;;;:::o;847:407::-;;;972:2;960:9;951:7;947:23;943:32;940:2;;;988:1;985;978:12;940:2;1031:1;1056:53;1101:7;1092:6;1081:9;1077:22;1056:53;:::i;:::-;1046:63;;1002:117;1158:2;1184:53;1229:7;1220:6;1209:9;1205:22;1184:53;:::i;:::-;1174:63;;1129:118;930:324;;;;;:::o;1260:552::-;;;;1402:2;1390:9;1381:7;1377:23;1373:32;1370:2;;;1418:1;1415;1408:12;1370:2;1461:1;1486:53;1531:7;1522:6;1511:9;1507:22;1486:53;:::i;:::-;1476:63;;1432:117;1588:2;1614:53;1659:7;1650:6;1639:9;1635:22;1614:53;:::i;:::-;1604:63;;1559:118;1716:2;1742:53;1787:7;1778:6;1767:9;1763:22;1742:53;:::i;:::-;1732:63;;1687:118;1360:452;;;;;:::o;1818:407::-;;;1943:2;1931:9;1922:7;1918:23;1914:32;1911:2;;;1959:1;1956;1949:12;1911:2;2002:1;2027:53;2072:7;2063:6;2052:9;2048:22;2027:53;:::i;:::-;2017:63;;1973:117;2129:2;2155:53;2200:7;2191:6;2180:9;2176:22;2155:53;:::i;:::-;2145:63;;2100:118;1901:324;;;;;:::o;2231:278::-;;2347:2;2335:9;2326:7;2322:23;2318:32;2315:2;;;2363:1;2360;2353:12;2315:2;2406:1;2431:61;2484:7;2475:6;2464:9;2460:22;2431:61;:::i;:::-;2421:71;;2377:125;2305:204;;;;:::o;2515:262::-;;2623:2;2611:9;2602:7;2598:23;2594:32;2591:2;;;2639:1;2636;2629:12;2591:2;2682:1;2707:53;2752:7;2743:6;2732:9;2728:22;2707:53;:::i;:::-;2697:63;;2653:117;2581:196;;;;:::o;2783:401::-;;;2905:2;2893:9;2884:7;2880:23;2876:32;2873:2;;;2921:1;2918;2911:12;2873:2;2964:1;2989:53;3034:7;3025:6;3014:9;3010:22;2989:53;:::i;:::-;2979:63;;2935:117;3091:2;3117:50;3159:7;3150:6;3139:9;3135:22;3117:50;:::i;:::-;3107:60;;3062:115;2863:321;;;;;:::o;3190:407::-;;;3315:2;3303:9;3294:7;3290:23;3286:32;3283:2;;;3331:1;3328;3321:12;3283:2;3374:1;3399:53;3444:7;3435:6;3424:9;3420:22;3399:53;:::i;:::-;3389:63;;3345:117;3501:2;3527:53;3572:7;3563:6;3552:9;3548:22;3527:53;:::i;:::-;3517:63;;3472:118;3273:324;;;;;:::o;3603:118::-;3690:24;3708:5;3690:24;:::i;:::-;3685:3;3678:37;3668:53;;:::o;3727:109::-;3808:21;3823:5;3808:21;:::i;:::-;3803:3;3796:34;3786:50;;:::o;3842:157::-;3942:50;3986:5;3942:50;:::i;:::-;3937:3;3930:63;3920:79;;:::o;4005:159::-;4106:51;4151:5;4106:51;:::i;:::-;4101:3;4094:64;4084:80;;:::o;4170:364::-;;4286:39;4319:5;4286:39;:::i;:::-;4341:71;4405:6;4400:3;4341:71;:::i;:::-;4334:78;;4421:52;4466:6;4461:3;4454:4;4447:5;4443:16;4421:52;:::i;:::-;4498:29;4520:6;4498:29;:::i;:::-;4493:3;4489:39;4482:46;;4262:272;;;;;:::o;4540:367::-;;4703:67;4767:2;4762:3;4703:67;:::i;:::-;4696:74;;4800:34;4796:1;4791:3;4787:11;4780:55;4866:5;4861:2;4856:3;4852:12;4845:27;4898:2;4893:3;4889:12;4882:19;;4686:221;;;:::o;4913:366::-;;5076:67;5140:2;5135:3;5076:67;:::i;:::-;5069:74;;5173:34;5169:1;5164:3;5160:11;5153:55;5239:4;5234:2;5229:3;5225:12;5218:26;5270:2;5265:3;5261:12;5254:19;;5059:220;;;:::o;5285:370::-;;5448:67;5512:2;5507:3;5448:67;:::i;:::-;5441:74;;5545:34;5541:1;5536:3;5532:11;5525:55;5611:8;5606:2;5601:3;5597:12;5590:30;5646:2;5641:3;5637:12;5630:19;;5431:224;;;:::o;5661:366::-;;5824:67;5888:2;5883:3;5824:67;:::i;:::-;5817:74;;5921:34;5917:1;5912:3;5908:11;5901:55;5987:4;5982:2;5977:3;5973:12;5966:26;6018:2;6013:3;6009:12;6002:19;;5807:220;;;:::o;6033:317::-;;6196:67;6260:2;6255:3;6196:67;:::i;:::-;6189:74;;6293:21;6289:1;6284:3;6280:11;6273:42;6341:2;6336:3;6332:12;6325:19;;6179:171;;;:::o;6356:370::-;;6519:67;6583:2;6578:3;6519:67;:::i;:::-;6512:74;;6616:34;6612:1;6607:3;6603:11;6596:55;6682:8;6677:2;6672:3;6668:12;6661:30;6717:2;6712:3;6708:12;6701:19;;6502:224;;;:::o;6732:313::-;;6895:67;6959:2;6954:3;6895:67;:::i;:::-;6888:74;;6992:17;6988:1;6983:3;6979:11;6972:38;7036:2;7031:3;7027:12;7020:19;;6878:167;;;:::o;7051:372::-;;7214:67;7278:2;7273:3;7214:67;:::i;:::-;7207:74;;7311:34;7307:1;7302:3;7298:11;7291:55;7377:10;7372:2;7367:3;7363:12;7356:32;7414:2;7409:3;7405:12;7398:19;;7197:226;;;:::o;7429:330::-;;7592:67;7656:2;7651:3;7592:67;:::i;:::-;7585:74;;7689:34;7685:1;7680:3;7676:11;7669:55;7750:2;7745:3;7741:12;7734:19;;7575:184;;;:::o;7765:365::-;;7928:67;7992:2;7987:3;7928:67;:::i;:::-;7921:74;;8025:34;8021:1;8016:3;8012:11;8005:55;8091:3;8086:2;8081:3;8077:12;8070:25;8121:2;8116:3;8112:12;8105:19;;7911:219;;;:::o;8136:369::-;;8299:67;8363:2;8358:3;8299:67;:::i;:::-;8292:74;;8396:34;8392:1;8387:3;8383:11;8376:55;8462:7;8457:2;8452:3;8448:12;8441:29;8496:2;8491:3;8487:12;8480:19;;8282:223;;;:::o;8511:368::-;;8674:67;8738:2;8733:3;8674:67;:::i;:::-;8667:74;;8771:34;8767:1;8762:3;8758:11;8751:55;8837:6;8832:2;8827:3;8823:12;8816:28;8870:2;8865:3;8861:12;8854:19;;8657:222;;;:::o;8885:326::-;;9048:67;9112:2;9107:3;9048:67;:::i;:::-;9041:74;;9145:30;9141:1;9136:3;9132:11;9125:51;9202:2;9197:3;9193:12;9186:19;;9031:180;;;:::o;9217:369::-;;9380:67;9444:2;9439:3;9380:67;:::i;:::-;9373:74;;9477:34;9473:1;9468:3;9464:11;9457:55;9543:7;9538:2;9533:3;9529:12;9522:29;9577:2;9572:3;9568:12;9561:19;;9363:223;;;:::o;9592:329::-;;9755:67;9819:2;9814:3;9755:67;:::i;:::-;9748:74;;9852:33;9848:1;9843:3;9839:11;9832:54;9912:2;9907:3;9903:12;9896:19;;9738:183;;;:::o;9927:118::-;10014:24;10032:5;10014:24;:::i;:::-;10009:3;10002:37;9992:53;;:::o;10051:112::-;10134:22;10150:5;10134:22;:::i;:::-;10129:3;10122:35;10112:51;;:::o;10169:222::-;;10300:2;10289:9;10285:18;10277:26;;10313:71;10381:1;10370:9;10366:17;10357:6;10313:71;:::i;:::-;10267:124;;;;:::o;10397:442::-;;10584:2;10573:9;10569:18;10561:26;;10597:71;10665:1;10654:9;10650:17;10641:6;10597:71;:::i;:::-;10678:72;10746:2;10735:9;10731:18;10722:6;10678:72;:::i;:::-;10760;10828:2;10817:9;10813:18;10804:6;10760:72;:::i;:::-;10551:288;;;;;;:::o;10845:332::-;;11004:2;10993:9;10989:18;10981:26;;11017:71;11085:1;11074:9;11070:17;11061:6;11017:71;:::i;:::-;11098:72;11166:2;11155:9;11151:18;11142:6;11098:72;:::i;:::-;10971:206;;;;;:::o;11183:442::-;;11370:2;11359:9;11355:18;11347:26;;11383:71;11451:1;11440:9;11436:17;11427:6;11383:71;:::i;:::-;11464:72;11532:2;11521:9;11517:18;11508:6;11464:72;:::i;:::-;11546;11614:2;11603:9;11599:18;11590:6;11546:72;:::i;:::-;11337:288;;;;;;:::o;11631:553::-;;11846:3;11835:9;11831:19;11823:27;;11860:71;11928:1;11917:9;11913:17;11904:6;11860:71;:::i;:::-;11941:72;12009:2;11998:9;11994:18;11985:6;11941:72;:::i;:::-;12023;12091:2;12080:9;12076:18;12067:6;12023:72;:::i;:::-;12105;12173:2;12162:9;12158:18;12149:6;12105:72;:::i;:::-;11813:371;;;;;;;:::o;12190:210::-;;12315:2;12304:9;12300:18;12292:26;;12328:65;12390:1;12379:9;12375:17;12366:6;12328:65;:::i;:::-;12282:118;;;;:::o;12406:1207::-;;12783:3;12772:9;12768:19;12760:27;;12797:65;12859:1;12848:9;12844:17;12835:6;12797:65;:::i;:::-;12872:72;12940:2;12929:9;12925:18;12916:6;12872:72;:::i;:::-;12954;13022:2;13011:9;13007:18;12998:6;12954:72;:::i;:::-;13036;13104:2;13093:9;13089:18;13080:6;13036:72;:::i;:::-;13118:73;13186:3;13175:9;13171:19;13162:6;13118:73;:::i;:::-;13201;13269:3;13258:9;13254:19;13245:6;13201:73;:::i;:::-;13284;13352:3;13341:9;13337:19;13328:6;13284:73;:::i;:::-;13367;13435:3;13424:9;13420:19;13411:6;13367:73;:::i;:::-;13450;13518:3;13507:9;13503:19;13494:6;13450:73;:::i;:::-;13533;13601:3;13590:9;13586:19;13577:6;13533:73;:::i;:::-;12750:863;;;;;;;;;;;;;:::o;13619:248::-;;13763:2;13752:9;13748:18;13740:26;;13776:84;13857:1;13846:9;13842:17;13833:6;13776:84;:::i;:::-;13730:137;;;;:::o;13873:313::-;;14024:2;14013:9;14009:18;14001:26;;14073:9;14067:4;14063:20;14059:1;14048:9;14044:17;14037:47;14101:78;14174:4;14165:6;14101:78;:::i;:::-;14093:86;;13991:195;;;;:::o;14192:419::-;;14396:2;14385:9;14381:18;14373:26;;14445:9;14439:4;14435:20;14431:1;14420:9;14416:17;14409:47;14473:131;14599:4;14473:131;:::i;:::-;14465:139;;14363:248;;;:::o;14617:419::-;;14821:2;14810:9;14806:18;14798:26;;14870:9;14864:4;14860:20;14856:1;14845:9;14841:17;14834:47;14898:131;15024:4;14898:131;:::i;:::-;14890:139;;14788:248;;;:::o;15042:419::-;;15246:2;15235:9;15231:18;15223:26;;15295:9;15289:4;15285:20;15281:1;15270:9;15266:17;15259:47;15323:131;15449:4;15323:131;:::i;:::-;15315:139;;15213:248;;;:::o;15467:419::-;;15671:2;15660:9;15656:18;15648:26;;15720:9;15714:4;15710:20;15706:1;15695:9;15691:17;15684:47;15748:131;15874:4;15748:131;:::i;:::-;15740:139;;15638:248;;;:::o;15892:419::-;;16096:2;16085:9;16081:18;16073:26;;16145:9;16139:4;16135:20;16131:1;16120:9;16116:17;16109:47;16173:131;16299:4;16173:131;:::i;:::-;16165:139;;16063:248;;;:::o;16317:419::-;;16521:2;16510:9;16506:18;16498:26;;16570:9;16564:4;16560:20;16556:1;16545:9;16541:17;16534:47;16598:131;16724:4;16598:131;:::i;:::-;16590:139;;16488:248;;;:::o;16742:419::-;;16946:2;16935:9;16931:18;16923:26;;16995:9;16989:4;16985:20;16981:1;16970:9;16966:17;16959:47;17023:131;17149:4;17023:131;:::i;:::-;17015:139;;16913:248;;;:::o;17167:419::-;;17371:2;17360:9;17356:18;17348:26;;17420:9;17414:4;17410:20;17406:1;17395:9;17391:17;17384:47;17448:131;17574:4;17448:131;:::i;:::-;17440:139;;17338:248;;;:::o;17592:419::-;;17796:2;17785:9;17781:18;17773:26;;17845:9;17839:4;17835:20;17831:1;17820:9;17816:17;17809:47;17873:131;17999:4;17873:131;:::i;:::-;17865:139;;17763:248;;;:::o;18017:419::-;;18221:2;18210:9;18206:18;18198:26;;18270:9;18264:4;18260:20;18256:1;18245:9;18241:17;18234:47;18298:131;18424:4;18298:131;:::i;:::-;18290:139;;18188:248;;;:::o;18442:419::-;;18646:2;18635:9;18631:18;18623:26;;18695:9;18689:4;18685:20;18681:1;18670:9;18666:17;18659:47;18723:131;18849:4;18723:131;:::i;:::-;18715:139;;18613:248;;;:::o;18867:419::-;;19071:2;19060:9;19056:18;19048:26;;19120:9;19114:4;19110:20;19106:1;19095:9;19091:17;19084:47;19148:131;19274:4;19148:131;:::i;:::-;19140:139;;19038:248;;;:::o;19292:419::-;;19496:2;19485:9;19481:18;19473:26;;19545:9;19539:4;19535:20;19531:1;19520:9;19516:17;19509:47;19573:131;19699:4;19573:131;:::i;:::-;19565:139;;19463:248;;;:::o;19717:419::-;;19921:2;19910:9;19906:18;19898:26;;19970:9;19964:4;19960:20;19956:1;19945:9;19941:17;19934:47;19998:131;20124:4;19998:131;:::i;:::-;19990:139;;19888:248;;;:::o;20142:419::-;;20346:2;20335:9;20331:18;20323:26;;20395:9;20389:4;20385:20;20381:1;20370:9;20366:17;20359:47;20423:131;20549:4;20423:131;:::i;:::-;20415:139;;20313:248;;;:::o;20567:222::-;;20698:2;20687:9;20683:18;20675:26;;20711:71;20779:1;20768:9;20764:17;20755:6;20711:71;:::i;:::-;20665:124;;;;:::o;20795:442::-;;20982:2;20971:9;20967:18;20959:26;;20995:71;21063:1;21052:9;21048:17;21039:6;20995:71;:::i;:::-;21076:72;21144:2;21133:9;21129:18;21120:6;21076:72;:::i;:::-;21158;21226:2;21215:9;21211:18;21202:6;21158:72;:::i;:::-;20949:288;;;;;;:::o;21243:581::-;;21472:3;21461:9;21457:19;21449:27;;21486:71;21554:1;21543:9;21539:17;21530:6;21486:71;:::i;:::-;21567:72;21635:2;21624:9;21620:18;21611:6;21567:72;:::i;:::-;21649;21717:2;21706:9;21702:18;21693:6;21649:72;:::i;:::-;21731:86;21813:2;21802:9;21798:18;21789:6;21731:86;:::i;:::-;21439:385;;;;;;;:::o;21830:214::-;;21957:2;21946:9;21942:18;21934:26;;21970:67;22034:1;22023:9;22019:17;22010:6;21970:67;:::i;:::-;21924:120;;;;:::o;22050:99::-;;22136:5;22130:12;22120:22;;22109:40;;;:::o;22155:169::-;;22273:6;22268:3;22261:19;22313:4;22308:3;22304:14;22289:29;;22251:73;;;;:::o;22330:305::-;;22389:20;22407:1;22389:20;:::i;:::-;22384:25;;22423:20;22441:1;22423:20;:::i;:::-;22418:25;;22577:1;22509:66;22505:74;22502:1;22499:81;22496:2;;;22583:18;;:::i;:::-;22496:2;22627:1;22624;22620:9;22613:16;;22374:261;;;;:::o;22641:185::-;;22698:20;22716:1;22698:20;:::i;:::-;22693:25;;22732:20;22750:1;22732:20;:::i;:::-;22727:25;;22771:1;22761:2;;22776:18;;:::i;:::-;22761:2;22818:1;22815;22811:9;22806:14;;22683:143;;;;:::o;22832:348::-;;22895:20;22913:1;22895:20;:::i;:::-;22890:25;;22929:20;22947:1;22929:20;:::i;:::-;22924:25;;23117:1;23049:66;23045:74;23042:1;23039:81;23034:1;23027:9;23020:17;23016:105;23013:2;;;23124:18;;:::i;:::-;23013:2;23172:1;23169;23165:9;23154:20;;22880:300;;;;:::o;23186:191::-;;23246:20;23264:1;23246:20;:::i;:::-;23241:25;;23280:20;23298:1;23280:20;:::i;:::-;23275:25;;23319:1;23316;23313:8;23310:2;;;23324:18;;:::i;:::-;23310:2;23369:1;23366;23362:9;23354:17;;23231:146;;;;:::o;23383:96::-;;23449:24;23467:5;23449:24;:::i;:::-;23438:35;;23428:51;;;:::o;23485:90::-;;23562:5;23555:13;23548:21;23537:32;;23527:48;;;:::o;23581:143::-;;23663:5;23652:16;;23669:49;23712:5;23669:49;:::i;:::-;23642:82;;;:::o;23730:126::-;;23807:42;23800:5;23796:54;23785:65;;23775:81;;;:::o;23862:77::-;;23928:5;23917:16;;23907:32;;;:::o;23945:86::-;;24020:4;24013:5;24009:16;23998:27;;23988:43;;;:::o;24037:152::-;;24133:50;24177:5;24133:50;:::i;:::-;24120:63;;24110:79;;;:::o;24195:126::-;;24291:24;24309:5;24291:24;:::i;:::-;24278:37;;24268:53;;;:::o;24327:143::-;;24424:40;24458:5;24424:40;:::i;:::-;24411:53;;24401:69;;;:::o;24476:307::-;24544:1;24554:113;24568:6;24565:1;24562:13;24554:113;;;24653:1;24648:3;24644:11;24638:18;24634:1;24629:3;24625:11;24618:39;24590:2;24587:1;24583:10;24578:15;;24554:113;;;24685:6;24682:1;24679:13;24676:2;;;24765:1;24756:6;24751:3;24747:16;24740:27;24676:2;24525:258;;;;:::o;24789:320::-;;24870:1;24864:4;24860:12;24850:22;;24917:1;24911:4;24907:12;24938:18;24928:2;;24994:4;24986:6;24982:17;24972:27;;24928:2;25056;25048:6;25045:14;25025:18;25022:38;25019:2;;;25075:18;;:::i;:::-;25019:2;24840:269;;;;:::o;25115:180::-;25163:77;25160:1;25153:88;25260:4;25257:1;25250:15;25284:4;25281:1;25274:15;25301:180;25349:77;25346:1;25339:88;25446:4;25443:1;25436:15;25470:4;25467:1;25460:15;25487:180;25535:77;25532:1;25525:88;25632:4;25629:1;25622:15;25656:4;25653:1;25646:15;25673:180;25721:77;25718:1;25711:88;25818:4;25815:1;25808:15;25842:4;25839:1;25832:15;25859:102;;25951:2;25947:7;25942:2;25935:5;25931:14;25927:28;25917:38;;25907:54;;;:::o;25967:121::-;26056:1;26049:5;26046:12;26036:2;;26062:18;;:::i;:::-;26036:2;26026:62;:::o;26094:122::-;26167:24;26185:5;26167:24;:::i;:::-;26160:5;26157:35;26147:2;;26206:1;26203;26196:12;26147:2;26137:79;:::o;26222:116::-;26292:21;26307:5;26292:21;:::i;:::-;26285:5;26282:32;26272:2;;26328:1;26325;26318:12;26272:2;26262:76;:::o;26344:122::-;26417:24;26435:5;26417:24;:::i;:::-;26410:5;26407:35;26397:2;;26456:1;26453;26446:12;26397:2;26387:79;:::o"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "2935200",
"executionCost": "infinite",
"totalCost": "infinite"
},
"external": {
"allowance(address,address)": "infinite",
"approve(address,uint256)": "infinite",
"balanceOf(address)": "1652",
"claimPolicy(uint256)": "infinite",
"decimals()": "411",
"decreaseAllowance(address,uint256)": "infinite",
"deposit(uint256)": "infinite",
"dip()": "1325",
"epochs(uint256)": "infinite",
"expirePolicy(uint256)": "infinite",
"finalizeEpoch(uint256)": "infinite",
"finalizeEpoch(uint256,bool)": "infinite",
"increaseAllowance(address,uint256)": "infinite",
"lockedRpt(address,uint256)": "infinite",
"name()": "infinite",
"newPolicy(uint256,uint256)": "infinite",
"owner()": "1312",
"payout(uint256)": "infinite",
"policies(uint256)": "infinite",
"release(uint256,uint256)": "infinite",
"renounceOwnership()": "24420",
"symbol()": "infinite",
"totalLockedRpt(address)": "1603",
"totalSupply()": "1228",
"transfer(address,uint256)": "infinite",
"transferFrom(address,address,uint256)": "infinite",
"transferOwnership(address)": "24833",
"withdraw(uint256)": "infinite"
},
"internal": {
"_doLoss(uint256,uint256)": "infinite",
"_doProfit(uint256,uint256)": "infinite",
"_endPolicy(uint256,enum StakingPrototype.PolicyStatus)": "infinite",
"_finalizeEpoch(uint256,bool)": "infinite"
}
},
"methodIdentifiers": {
"allowance(address,address)": "dd62ed3e",
"approve(address,uint256)": "095ea7b3",
"balanceOf(address)": "70a08231",
"claimPolicy(uint256)": "2aea118d",
"decimals()": "313ce567",
"decreaseAllowance(address,uint256)": "a457c2d7",
"deposit(uint256)": "b6b55f25",
"dip()": "28d36a83",
"epochs(uint256)": "c6b61e4c",
"expirePolicy(uint256)": "3037e4cd",
"finalizeEpoch(uint256)": "986bce2c",
"finalizeEpoch(uint256,bool)": "66e5ba52",
"increaseAllowance(address,uint256)": "39509351",
"lockedRpt(address,uint256)": "bc6a09d8",
"name()": "06fdde03",
"newPolicy(uint256,uint256)": "8ae2dc94",
"owner()": "8da5cb5b",
"payout(uint256)": "e1152343",
"policies(uint256)": "d3e89483",
"release(uint256,uint256)": "366a4120",
"renounceOwnership()": "715018a6",
"symbol()": "95d89b41",
"totalLockedRpt(address)": "6e739c81",
"totalSupply()": "18160ddd",
"transfer(address,uint256)": "a9059cbb",
"transferFrom(address,address,uint256)": "23b872dd",
"transferOwnership(address)": "f2fde38b",
"withdraw(uint256)": "2e1a7d4d"
}
},
"abi": [
{
"inputs": [
{
"internalType": "string",
"name": "name_",
"type": "string"
},
{
"internalType": "string",
"name": "symbol_",
"type": "string"
},
{
"internalType": "address",
"name": "dipToken_",
"type": "address"
},
{
"internalType": "uint256",
"name": "maxPolicyEpochs_",
"type": "uint256"
}
],
"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": "address",
"name": "sender",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "dipAmount",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "rptMinted",
"type": "uint256"
}
],
"name": "LogDeposit",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "epochId",
"type": "uint256"
}
],
"name": "LogFinalizedEpoch",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "sumInsured",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "premium",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "policyId",
"type": "uint256"
}
],
"name": "LogNewPolicy",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "epochId",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "rptBurned",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "dipAmount",
"type": "uint256"
}
],
"name": "LogPayout",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "policyId",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "sumInsured",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "dipAmount",
"type": "uint256"
}
],
"name": "LogPolicyClaimed",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "policyId",
"type": "uint256"
}
],
"name": "LogPolicyExpired",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "rptAmount",
"type": "uint256"
}
],
"name": "LogWithdrawal",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "previousOwner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "OwnershipTransferred",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "address",
"name": "spender",
"type": "address"
}
],
"name": "allowance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "approve",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "policyId",
"type": "uint256"
}
],
"name": "claimPolicy",
"outputs": [],
"stateMutability": "nonpayable",
"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": "dipAmount",
"type": "uint256"
}
],
"name": "deposit",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "dip",
"outputs": [
{
"internalType": "contract ERC20",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "epochs",
"outputs": [
{
"internalType": "bool",
"name": "isFinal",
"type": "bool"
},
{
"internalType": "uint256",
"name": "rptMinted",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "rptBurned",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "deposits",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "withdrawals",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "finalRptValue",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "profitLoss",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "policyCount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "premiums",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "claims",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "policyId",
"type": "uint256"
}
],
"name": "expirePolicy",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "epochId",
"type": "uint256"
},
{
"internalType": "bool",
"name": "force",
"type": "bool"
}
],
"name": "finalizeEpoch",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "epochId",
"type": "uint256"
}
],
"name": "finalizeEpoch",
"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": "",
"type": "address"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "lockedRpt",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "name",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "sumInsured",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "premium",
"type": "uint256"
}
],
"name": "newPolicy",
"outputs": [
{
"internalType": "uint256",
"name": "policyId",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "epochId",
"type": "uint256"
}
],
"name": "payout",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "policies",
"outputs": [
{
"internalType": "uint256",
"name": "epochId",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "sumInsured",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "premium",
"type": "uint256"
},
{
"internalType": "enum StakingPrototype.PolicyStatus",
"name": "status",
"type": "uint8"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "epochId",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "rptAmount",
"type": "uint256"
}
],
"name": "release",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "renounceOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "symbol",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "totalLockedRpt",
"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": [
{
"internalType": "uint256",
"name": "rptAmount",
"type": "uint256"
}
],
"name": "withdraw",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
]
}
{
"compiler": {
"version": "0.8.0+commit.c7dfd78e"
},
"language": "Solidity",
"output": {
"abi": [
{
"inputs": [
{
"internalType": "string",
"name": "name_",
"type": "string"
},
{
"internalType": "string",
"name": "symbol_",
"type": "string"
},
{
"internalType": "address",
"name": "dipToken_",
"type": "address"
},
{
"internalType": "uint256",
"name": "maxPolicyEpochs_",
"type": "uint256"
}
],
"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": "address",
"name": "sender",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "dipAmount",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "rptMinted",
"type": "uint256"
}
],
"name": "LogDeposit",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "epochId",
"type": "uint256"
}
],
"name": "LogFinalizedEpoch",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "sumInsured",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "premium",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "policyId",
"type": "uint256"
}
],
"name": "LogNewPolicy",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "epochId",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "rptBurned",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "dipAmount",
"type": "uint256"
}
],
"name": "LogPayout",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "policyId",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "sumInsured",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "dipAmount",
"type": "uint256"
}
],
"name": "LogPolicyClaimed",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "policyId",
"type": "uint256"
}
],
"name": "LogPolicyExpired",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "rptAmount",
"type": "uint256"
}
],
"name": "LogWithdrawal",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "previousOwner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "OwnershipTransferred",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "address",
"name": "spender",
"type": "address"
}
],
"name": "allowance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "approve",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "policyId",
"type": "uint256"
}
],
"name": "claimPolicy",
"outputs": [],
"stateMutability": "nonpayable",
"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": "dipAmount",
"type": "uint256"
}
],
"name": "deposit",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "dip",
"outputs": [
{
"internalType": "contract ERC20",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "epochs",
"outputs": [
{
"internalType": "bool",
"name": "isFinal",
"type": "bool"
},
{
"internalType": "uint256",
"name": "rptMinted",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "rptBurned",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "deposits",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "withdrawals",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "finalRptValue",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "profitLoss",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "policyCount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "premiums",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "claims",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "policyId",
"type": "uint256"
}
],
"name": "expirePolicy",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "epochId",
"type": "uint256"
},
{
"internalType": "bool",
"name": "force",
"type": "bool"
}
],
"name": "finalizeEpoch",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "epochId",
"type": "uint256"
}
],
"name": "finalizeEpoch",
"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": "",
"type": "address"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "lockedRpt",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "name",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "sumInsured",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "premium",
"type": "uint256"
}
],
"name": "newPolicy",
"outputs": [
{
"internalType": "uint256",
"name": "policyId",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "epochId",
"type": "uint256"
}
],
"name": "payout",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "policies",
"outputs": [
{
"internalType": "uint256",
"name": "epochId",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "sumInsured",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "premium",
"type": "uint256"
},
{
"internalType": "enum StakingPrototype.PolicyStatus",
"name": "status",
"type": "uint8"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "epochId",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "rptAmount",
"type": "uint256"
}
],
"name": "release",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "renounceOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "symbol",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "totalLockedRpt",
"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": [
{
"internalType": "uint256",
"name": "rptAmount",
"type": "uint256"
}
],
"name": "withdraw",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
],
"devdoc": {
"kind": "dev",
"methods": {
"allowance(address,address)": {
"details": "See {IERC20-allowance}."
},
"approve(address,uint256)": {
"details": "See {IERC20-approve}. Requirements: - `spender` cannot be the zero address."
},
"balanceOf(address)": {
"details": "See {IERC20-balanceOf}."
},
"decimals()": {
"details": "Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless this function is overridden; NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}."
},
"decreaseAllowance(address,uint256)": {
"details": "Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`."
},
"deposit(uint256)": {
"details": "Investor related functions"
},
"increaseAllowance(address,uint256)": {
"details": "Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address."
},
"name()": {
"details": "Returns the name of the token."
},
"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."
},
"symbol()": {
"details": "Returns the symbol of the token, usually a shorter version of the name."
},
"totalSupply()": {
"details": "See {IERC20-totalSupply}."
},
"transfer(address,uint256)": {
"details": "See {IERC20-transfer}. Requirements: - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`."
},
"transferFrom(address,address,uint256)": {
"details": "See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for ``sender``'s tokens of at least `amount`."
},
"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/StakingPrototype.sol": "StakingPrototype"
},
"evmVersion": "istanbul",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": false,
"runs": 200
},
"remappings": []
},
"sources": {
"@openzeppelin/contracts/access/Ownable.sol": {
"keccak256": "0x6bb804a310218875e89d12c053e94a13a4607cdf7cc2052f3e52bd32a0dc50a1",
"license": "MIT",
"urls": [
"bzz-raw://b2ebbbe6d0011175bd9e7268b83de3f9c2f9d8d4cbfbaef12aff977d7d727163",
"dweb:/ipfs/Qmd5c7Vxtis9wzkDNhxwc6A2QT5H9xn9kfjhx7qx44vpro"
]
},
"@openzeppelin/contracts/token/ERC20/ERC20.sol": {
"keccak256": "0xb03df8481a954604ad0c9125680893b2e3f7ff770fe470e38b89ac61b84e8072",
"license": "MIT",
"urls": [
"bzz-raw://b34655953d18ba3a45b762fb6bdbb6549af69a27435e10ece178742bf70baf45",
"dweb:/ipfs/QmcqjUoFLLMyx7dbwSHUnDBH6aphkVHXWQvQRRev5EAWEh"
]
},
"@openzeppelin/contracts/token/ERC20/IERC20.sol": {
"keccak256": "0x027b891937d20ccf213fdb9c31531574256de774bda99d3a70ecef6e1913ed2a",
"license": "MIT",
"urls": [
"bzz-raw://087318b21c528119f649899f5b5580566dd8d7b0303d4904bd0e8580c3545f14",
"dweb:/ipfs/Qmbn5Mj7aUn8hJuQ8VrQjjEXRsXyJKykgnjR9p4C3nfLtL"
]
},
"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol": {
"keccak256": "0x83fe24f5c04a56091e50f4a345ff504c8bff658a76d4c43b16878c8f940c53b2",
"license": "MIT",
"urls": [
"bzz-raw://d4c3df1a7ca104b633a7d81c6c6f5192367d150cd5a32cba81f7f27012729013",
"dweb:/ipfs/QmSim72e3ZVsfgZt8UceCvbiSuMRHR6WDsiamqNzZahGSY"
]
},
"@openzeppelin/contracts/utils/Context.sol": {
"keccak256": "0x90565a39ae45c80f0468dc96c7b20d0afc3055f344c8203a0c9258239f350b9f",
"license": "MIT",
"urls": [
"bzz-raw://26e8b38a7ac8e7b4463af00cf7fff1bf48ae9875765bf4f7751e100124d0bc8c",
"dweb:/ipfs/QmWcsmkVr24xmmjfnBQZoemFniXjj3vwT78Cz6uqZW1Hux"
]
},
"contracts/StakingPrototype.sol": {
"keccak256": "0xe69017bfbf81117105a90697397a958d198502cf89bc19326b7a8719c6ffa3ef",
"license": "Apache-2.0",
"urls": [
"bzz-raw://b83aa439c537cdc1e0c09a283b8cfe4906549172c2ecdcee0a6b8bdc6ada3b04",
"dweb:/ipfs/QmdutcvGjKRkXbRKAdZUy9b8gSh3W3MHdhjCCHZinkR7VH"
]
}
},
"version": 1
}
// SPDX-License-Identifier: Apache-2.0
pragma solidity 0.8.0;
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
import "@openzeppelin/contracts/access/Ownable.sol";
contract StakingPrototype is ERC20, Ownable {
ERC20 public dip;
enum PolicyStatus { undefined, underwritten, claimed, expired }
struct Epoch {
bool isFinal;
uint256 rptMinted;
uint256 rptBurned;
uint256 deposits;
uint256 withdrawals;
uint256 finalRptValue;
uint256 profitLoss;
uint256 policyCount;
uint256 premiums;
uint256 claims;
}
struct Policy {
uint256 epochId;
uint256 sumInsured;
uint256 premium;
PolicyStatus status;
}
Epoch[] public epochs;
Policy[] public policies;
mapping(address => uint256[]) public lockedRpt;
mapping(address => uint256) public totalLockedRpt;
uint256 currentRptValue;
uint256 currentEpoch;
uint256 totalDipBalance;
uint256 maxPolicyEpochs;
event LogDeposit(address sender, uint256 dipAmount, uint256 rptMinted);
event LogWithdrawal(address sender, uint256 rptAmount);
event LogPayout(address sender, uint256 epochId, uint256 rptBurned, uint256 dipAmount);
event LogFinalizedEpoch(uint256 epochId);
event LogNewPolicy(uint256 sumInsured, uint256 premium, uint256 policyId);
event LogPolicyExpired(uint256 policyId);
event LogPolicyClaimed(uint256 policyId, uint256 sumInsured, uint256 dipAmount);
constructor (
string memory name_,
string memory symbol_,
address dipToken_,
uint256 maxPolicyEpochs_
) ERC20(name_, symbol_){
dip = ERC20(dipToken_);
maxPolicyEpochs = maxPolicyEpochs_;
}
/**
*
* @dev Investor related functions
*
*/
function deposit(uint256 dipAmount) public {
dip.transferFrom(msg.sender, address(this), dipAmount);
uint256 rptMinted = dipAmount / currentRptValue;
_mint(msg.sender, rptMinted);
epochs[currentEpoch].rptMinted += rptMinted;
epochs[currentEpoch].deposits += dipAmount;
emit LogDeposit(msg.sender, dipAmount, rptMinted);
}
function withdraw(uint256 rptAmount) public {
uint256 alreadyLocked = totalLockedRpt[msg.sender];
uint256 rptAvailable = balanceOf(msg.sender) - alreadyLocked;
if (rptAmount > rptAvailable) {
rptAmount = rptAvailable;
}
if (rptAmount > 0) {
lockedRpt[msg.sender][currentEpoch] += rptAmount;
totalLockedRpt[msg.sender] += rptAmount;
epochs[currentEpoch].withdrawals += rptAmount;
}
emit LogWithdrawal(msg.sender, rptAmount);
}
function release(uint256 epochId, uint256 rptAmount) public {
uint256 locked = lockedRpt[msg.sender][epochId];
if (rptAmount > locked) rptAmount = locked;
lockedRpt[msg.sender][epochId] -= rptAmount;
totalLockedRpt[msg.sender] -= rptAmount;
epochs[epochId].withdrawals -= rptAmount;
}
function payout(uint256 epochId) public {
require(epochs[epochId].isFinal, "Epoch not final");
uint256 rptBurned = lockedRpt[msg.sender][epochId];
uint256 dipAmount = rptBurned * epochs[epochId].finalRptValue;
_burn(msg.sender, rptBurned);
epochs[currentEpoch].rptBurned += rptBurned;
totalDipBalance -= dipAmount;
dip.transfer(msg.sender, dipAmount);
emit LogPayout(msg.sender, epochId, rptBurned, dipAmount);
}
/**
*
* @dev Epoch related functions
*
*/
function _doProfit(uint256 epochId, uint256 dipAmount) internal {
epochs[epochId].profitLoss += dipAmount;
totalDipBalance += dipAmount;
currentRptValue = totalDipBalance / totalSupply();
}
function _doLoss(uint256 epochId, uint256 dipAmount) internal {
epochs[epochId].profitLoss -= dipAmount;
totalDipBalance -= dipAmount;
currentRptValue = totalDipBalance / totalSupply();
}
function _finalizeEpoch(uint256 epochId, bool force) internal {
require(epochId == 0 || epochs[epochId - 1].isFinal, "Earlier epochs not finalized");
if (!epochs[epochId].isFinal && (force || epochs[epochId].policyCount == 0)) {
epochs[epochId].finalRptValue = currentRptValue;
epochs[epochId].isFinal = true;
emit LogFinalizedEpoch(epochId);
}
}
function finalizeEpoch(uint256 epochId) public {
_finalizeEpoch(epochId, false);
}
function finalizeEpoch(uint256 epochId, bool force) public onlyOwner {
_finalizeEpoch(epochId, force);
}
/**
*
* @dev Policy related functions. These are only mockups for the prototype, in the concrete
* implementation these functions would be called by the product contract.
*
*/
function _endPolicy(uint256 policyId, PolicyStatus status) internal {
policies[policyId].status = status;
uint256 epochId = policies[policyId].epochId;
epochs[epochId].policyCount -= 1;
_finalizeEpoch(epochId, false);
}
function newPolicy(uint256 sumInsured, uint256 premium)
public /* onlyProduct */
returns (uint256 policyId)
{
policies[policies.length] = Policy({
epochId: currentEpoch,
status: PolicyStatus.underwritten,
sumInsured: sumInsured,
premium: premium
});
epochs[currentEpoch].premiums += premium;
epochs[currentEpoch].policyCount += 1;
_doProfit(currentEpoch, premium);
emit LogNewPolicy(sumInsured, premium, policyId);
return policyId;
}
function expirePolicy(uint256 policyId) public {
_endPolicy(policyId, PolicyStatus.expired);
emit LogPolicyExpired(policyId);
}
function claimPolicy(uint256 policyId) public {
require(policies[policyId].status == PolicyStatus.underwritten, "Wrong policy status");
uint256 epochId = policies[policyId].epochId;
if (currentEpoch - epochId > maxPolicyEpochs) {
expirePolicy(policyId);
} else {
uint256 dipAmount = policies[policyId].sumInsured;
if (totalDipBalance < dipAmount) dipAmount = totalDipBalance;
_doLoss(epochId, dipAmount);
epochs[epochId].claims += dipAmount;
_endPolicy(policyId, PolicyStatus.claimed);
emit LogPolicyClaimed(policyId, policies[policyId].sumInsured, dipAmount);
}
}
}
// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.7.0 <0.9.0;
import "remix_tests.sol"; // this import is automatically injected by Remix.
import "../contracts/3_Ballot.sol";
contract BallotTest {
bytes32[] proposalNames;
Ballot ballotToTest;
function beforeAll () public {
proposalNames.push(bytes32("candidate1"));
ballotToTest = new Ballot(proposalNames);
}
function checkWinningProposal () public {
ballotToTest.vote(0);
Assert.equal(ballotToTest.winningProposal(), uint(0), "proposal at index 0 should be the winning proposal");
Assert.equal(ballotToTest.winnerName(), bytes32("candidate1"), "candidate1 should be the winner name");
}
function checkWinninProposalWithReturnValue () public view returns (bool) {
return ballotToTest.winningProposal() == 0;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment