Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save auryn-macmillan/4dbb5b6f814baac389a0eee4bb990aa1 to your computer and use it in GitHub Desktop.
Save auryn-macmillan/4dbb5b6f814baac389a0eee4bb990aa1 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.17+commit.8df45f5f.js&optimize=false&runs=200&gist=
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)
pragma solidity ^0.8.0;
import "../utils/ContextUpgradeable.sol";
import "../proxy/utils/Initializable.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 OwnableUpgradeable is Initializable, ContextUpgradeable {
address private _owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev Initializes the contract setting the deployer as the initial owner.
*/
function __Ownable_init() internal onlyInitializing {
__Ownable_init_unchained();
}
function __Ownable_init_unchained() internal onlyInitializing {
_transferOwnership(_msgSender());
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
_checkOwner();
_;
}
/**
* @dev Returns the address of the current owner.
*/
function owner() public view virtual returns (address) {
return _owner;
}
/**
* @dev Throws if the sender is not the owner.
*/
function _checkOwner() internal view virtual {
require(owner() == _msgSender(), "Ownable: caller is not the owner");
}
/**
* @dev Leaves the contract without owner. It will not be possible to call
* `onlyOwner` functions anymore. Can only be called by the current owner.
*
* NOTE: Renouncing ownership will leave the contract without an owner,
* thereby removing any functionality that is only available to the owner.
*/
function renounceOwnership() public virtual onlyOwner {
_transferOwnership(address(0));
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Can only be called by the current owner.
*/
function transferOwnership(address newOwner) public virtual onlyOwner {
require(newOwner != address(0), "Ownable: new owner is the zero address");
_transferOwnership(newOwner);
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Internal function without access restriction.
*/
function _transferOwnership(address newOwner) internal virtual {
address oldOwner = _owner;
_owner = newOwner;
emit OwnershipTransferred(oldOwner, newOwner);
}
/**
* @dev This empty reserved space is put in place to allow future versions to add new
* variables without shifting down storage in the inheritance chain.
* See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps
*/
uint256[49] private __gap;
}
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.8.1) (proxy/utils/Initializable.sol)
pragma solidity ^0.8.2;
import "../../utils/AddressUpgradeable.sol";
/**
* @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed
* behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an
* external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer
* function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.
*
* The initialization functions use a version number. Once a version number is used, it is consumed and cannot be
* reused. This mechanism prevents re-execution of each "step" but allows the creation of new initialization steps in
* case an upgrade adds a module that needs to be initialized.
*
* For example:
*
* [.hljs-theme-light.nopadding]
* ```
* contract MyToken is ERC20Upgradeable {
* function initialize() initializer public {
* __ERC20_init("MyToken", "MTK");
* }
* }
* contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {
* function initializeV2() reinitializer(2) public {
* __ERC20Permit_init("MyToken");
* }
* }
* ```
*
* TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as
* possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.
*
* CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure
* that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.
*
* [CAUTION]
* ====
* Avoid leaving a contract uninitialized.
*
* An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation
* contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke
* the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:
*
* [.hljs-theme-light.nopadding]
* ```
* /// @custom:oz-upgrades-unsafe-allow constructor
* constructor() {
* _disableInitializers();
* }
* ```
* ====
*/
abstract contract Initializable {
/**
* @dev Indicates that the contract has been initialized.
* @custom:oz-retyped-from bool
*/
uint8 private _initialized;
/**
* @dev Indicates that the contract is in the process of being initialized.
*/
bool private _initializing;
/**
* @dev Triggered when the contract has been initialized or reinitialized.
*/
event Initialized(uint8 version);
/**
* @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,
* `onlyInitializing` functions can be used to initialize parent contracts.
*
* Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a
* constructor.
*
* Emits an {Initialized} event.
*/
modifier initializer() {
bool isTopLevelCall = !_initializing;
require(
(isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),
"Initializable: contract is already initialized"
);
_initialized = 1;
if (isTopLevelCall) {
_initializing = true;
}
_;
if (isTopLevelCall) {
_initializing = false;
emit Initialized(1);
}
}
/**
* @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the
* contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be
* used to initialize parent contracts.
*
* A reinitializer may be used after the original initialization step. This is essential to configure modules that
* are added through upgrades and that require initialization.
*
* When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`
* cannot be nested. If one is invoked in the context of another, execution will revert.
*
* Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in
* a contract, executing them in the right order is up to the developer or operator.
*
* WARNING: setting the version to 255 will prevent any future reinitialization.
*
* Emits an {Initialized} event.
*/
modifier reinitializer(uint8 version) {
require(!_initializing && _initialized < version, "Initializable: contract is already initialized");
_initialized = version;
_initializing = true;
_;
_initializing = false;
emit Initialized(version);
}
/**
* @dev Modifier to protect an initialization function so that it can only be invoked by functions with the
* {initializer} and {reinitializer} modifiers, directly or indirectly.
*/
modifier onlyInitializing() {
require(_initializing, "Initializable: contract is not initializing");
_;
}
/**
* @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.
* Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized
* to any version. It is recommended to use this to lock implementation contracts that are designed to be called
* through proxies.
*
* Emits an {Initialized} event the first time it is successfully executed.
*/
function _disableInitializers() internal virtual {
require(!_initializing, "Initializable: contract is initializing");
if (_initialized < type(uint8).max) {
_initialized = type(uint8).max;
emit Initialized(type(uint8).max);
}
}
/**
* @dev Returns the highest version that has been initialized. See {reinitializer}.
*/
function _getInitializedVersion() internal view returns (uint8) {
return _initialized;
}
/**
* @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.
*/
function _isInitializing() internal view returns (bool) {
return _initializing;
}
}
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.8.0) (utils/Address.sol)
pragma solidity ^0.8.1;
/**
* @dev Collection of functions related to the address type
*/
library AddressUpgradeable {
/**
* @dev Returns true if `account` is a contract.
*
* [IMPORTANT]
* ====
* It is unsafe to assume that an address for which this function returns
* false is an externally-owned account (EOA) and not a contract.
*
* Among others, `isContract` will return false for the following
* types of addresses:
*
* - an externally-owned account
* - a contract in construction
* - an address where a contract will be created
* - an address where a contract lived, but was destroyed
* ====
*
* [IMPORTANT]
* ====
* You shouldn't rely on `isContract` to protect against flash loan attacks!
*
* Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets
* like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract
* constructor.
* ====
*/
function isContract(address account) internal view returns (bool) {
// This method relies on extcodesize/address.code.length, which returns 0
// for contracts in construction, since the code is only stored at the end
// of the constructor execution.
return account.code.length > 0;
}
/**
* @dev Replacement for Solidity's `transfer`: sends `amount` wei to
* `recipient`, forwarding all available gas and reverting on errors.
*
* https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
* of certain opcodes, possibly making contracts go over the 2300 gas limit
* imposed by `transfer`, making them unable to receive funds via
* `transfer`. {sendValue} removes this limitation.
*
* https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
*
* IMPORTANT: because control is transferred to `recipient`, care must be
* taken to not create reentrancy vulnerabilities. Consider using
* {ReentrancyGuard} or the
* https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
*/
function sendValue(address payable recipient, uint256 amount) internal {
require(address(this).balance >= amount, "Address: insufficient balance");
(bool success, ) = recipient.call{value: amount}("");
require(success, "Address: unable to send value, recipient may have reverted");
}
/**
* @dev Performs a Solidity function call using a low level `call`. A
* plain `call` is an unsafe replacement for a function call: use this
* function instead.
*
* If `target` reverts with a revert reason, it is bubbled up by this
* function (like regular Solidity function calls).
*
* Returns the raw returned data. To convert to the expected return value,
* use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
*
* Requirements:
*
* - `target` must be a contract.
* - calling `target` with `data` must not revert.
*
* _Available since v3.1._
*/
function functionCall(address target, bytes memory data) internal returns (bytes memory) {
return functionCallWithValue(target, data, 0, "Address: low-level call failed");
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with
* `errorMessage` as a fallback revert reason when `target` reverts.
*
* _Available since v3.1._
*/
function functionCall(
address target,
bytes memory data,
string memory errorMessage
) internal returns (bytes memory) {
return functionCallWithValue(target, data, 0, errorMessage);
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
* but also transferring `value` wei to `target`.
*
* Requirements:
*
* - the calling contract must have an ETH balance of at least `value`.
* - the called Solidity function must be `payable`.
*
* _Available since v3.1._
*/
function functionCallWithValue(
address target,
bytes memory data,
uint256 value
) internal returns (bytes memory) {
return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
}
/**
* @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
* with `errorMessage` as a fallback revert reason when `target` reverts.
*
* _Available since v3.1._
*/
function functionCallWithValue(
address target,
bytes memory data,
uint256 value,
string memory errorMessage
) internal returns (bytes memory) {
require(address(this).balance >= value, "Address: insufficient balance for call");
(bool success, bytes memory returndata) = target.call{value: value}(data);
return verifyCallResultFromTarget(target, success, returndata, errorMessage);
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
* but performing a static call.
*
* _Available since v3.3._
*/
function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
return functionStaticCall(target, data, "Address: low-level static call failed");
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
* but performing a static call.
*
* _Available since v3.3._
*/
function functionStaticCall(
address target,
bytes memory data,
string memory errorMessage
) internal view returns (bytes memory) {
(bool success, bytes memory returndata) = target.staticcall(data);
return verifyCallResultFromTarget(target, success, returndata, errorMessage);
}
/**
* @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling
* the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.
*
* _Available since v4.8._
*/
function verifyCallResultFromTarget(
address target,
bool success,
bytes memory returndata,
string memory errorMessage
) internal view returns (bytes memory) {
if (success) {
if (returndata.length == 0) {
// only check isContract if the call was successful and the return data is empty
// otherwise we already know that it was a contract
require(isContract(target), "Address: call to non-contract");
}
return returndata;
} else {
_revert(returndata, errorMessage);
}
}
/**
* @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the
* revert reason or using the provided one.
*
* _Available since v4.3._
*/
function verifyCallResult(
bool success,
bytes memory returndata,
string memory errorMessage
) internal pure returns (bytes memory) {
if (success) {
return returndata;
} else {
_revert(returndata, errorMessage);
}
}
function _revert(bytes memory returndata, string memory errorMessage) private pure {
// Look for revert reason and bubble it up if present
if (returndata.length > 0) {
// The easiest way to bubble the revert reason is using memory via assembly
/// @solidity memory-safe-assembly
assembly {
let returndata_size := mload(returndata)
revert(add(32, returndata), returndata_size)
}
} else {
revert(errorMessage);
}
}
}
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)
pragma solidity ^0.8.0;
import "../proxy/utils/Initializable.sol";
/**
* @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 ContextUpgradeable is Initializable {
function __Context_init() internal onlyInitializing {
}
function __Context_init_unchained() internal onlyInitializing {
}
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
return msg.data;
}
/**
* @dev This empty reserved space is put in place to allow future versions to add new
* variables without shifting down storage in the inheritance chain.
* See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps
*/
uint256[50] private __gap;
}
{
"overrides": [
{
"files": "*.sol",
"options": {
"printWidth": 80,
"tabWidth": 4,
"useTabs": false,
"singleQuote": false,
"bracketSpacing": false
}
},
{
"files": "*.yml",
"options": {}
},
{
"files": "*.yaml",
"options": {}
},
{
"files": "*.toml",
"options": {}
},
{
"files": "*.json",
"options": {}
},
{
"files": "*.js",
"options": {}
},
{
"files": "*.ts",
"options": {}
}
]
}
{
"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
},
"goerli:5": {
"linkReferences": {},
"autoDeployLib": true
},
"Custom": {
"linkReferences": {},
"autoDeployLib": true
}
},
"data": {
"bytecode": {
"functionDebugData": {},
"generatedSources": [],
"linkReferences": {},
"object": "608060405234801561001057600080fd5b50610c5c806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80637ef79f8c1461005157806384dd0d1214610081578063b31825bf146100b1578063d56154ab146100e1575b600080fd5b61006b6004803603810190610066919061077a565b610111565b6040516100789190610816565b60405180910390f35b61009b60048036038101906100969190610831565b6102b2565b6040516100a89190610816565b60405180910390f35b6100cb60048036038101906100c691906108a0565b610483565b6040516100d89190610816565b60405180910390f35b6100fb60048036038101906100f69190610831565b61050c565b60405161010891906109b1565b60405180910390f35b60008061011f86868661050c565b905060005b8151811015610184576001600080848481518110610145576101446109d3565b5b60200260200101518152602001908152602001600020600082825461016a9190610a31565b92505081905550808061017c90610a65565b915050610124565b50600080600090505b82518110156101f05760008382815181106101ab576101aa6109d3565b5b602002602001015190506000806000838152602001908152602001600020549050838111156101db578093508195505b505080806101e890610a65565b91505061018d565b5060005b825181101561025e57600080858360208110610213576102126109d3565b5b1a60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009055808061025690610a65565b9150506101f4565b50838110156102a8573081846040517f22bcb23b00000000000000000000000000000000000000000000000000000000815260040161029f93929190610acb565b60405180910390fd5b5050949350505050565b6000806102c085858561050c565b90506000816000815181106102d8576102d76109d3565b5b602002602001015190506000801b8103610346573086600081518110610301576103006109d3565b5b60200260200101516040517f2a0c203900000000000000000000000000000000000000000000000000000000815260040161033d929190610b02565b60405180910390fd5b600080600190505b83518110156104755783818151811061036a576103696109d3565b5b602002602001015191506000801b82036103d75730888281518110610392576103916109d3565b5b60200260200101516040517f2a0c20390000000000000000000000000000000000000000000000000000000081526004016103ce929190610b02565b60405180910390fd5b82821461045f5730886001836103ed9190610b2b565b815181106103fe576103fd6109d3565b5b6020026020010151898381518110610419576104186109d3565b5b60200260200101516040517fdbed4b2700000000000000000000000000000000000000000000000000000000815260040161045693929190610b5f565b60405180910390fd5b819250808061046d90610a65565b91505061034e565b508093505050509392505050565b60008373ffffffffffffffffffffffffffffffffffffffff1663b31825bf8585856040518463ffffffff1660e01b81526004016104c293929190610b96565b602060405180830381865afa1580156104df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105039190610bf9565b90509392505050565b606060005b84518110156105715761053f8582815181106105305761052f6109d3565b5b60200260200101518585610483565b828281518110610552576105516109d3565b5b602002602001018181525050808061056990610a65565b915050610511565b509392505050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6105db82610592565b810181811067ffffffffffffffff821117156105fa576105f96105a3565b5b80604052505050565b600061060d610579565b905061061982826105d2565b919050565b600067ffffffffffffffff821115610639576106386105a3565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061067a8261064f565b9050919050565b61068a8161066f565b811461069557600080fd5b50565b6000813590506106a781610681565b92915050565b60006106c06106bb8461061e565b610603565b905080838252602082019050602084028301858111156106e3576106e261064a565b5b835b8181101561070c57806106f88882610698565b8452602084019350506020810190506106e5565b5050509392505050565b600082601f83011261072b5761072a61058d565b5b813561073b8482602086016106ad565b91505092915050565b6000819050919050565b61075781610744565b811461076257600080fd5b50565b6000813590506107748161074e565b92915050565b6000806000806080858703121561079457610793610583565b5b600085013567ffffffffffffffff8111156107b2576107b1610588565b5b6107be87828801610716565b94505060206107cf87828801610765565b93505060406107e087828801610765565b92505060606107f187828801610765565b91505092959194509250565b6000819050919050565b610810816107fd565b82525050565b600060208201905061082b6000830184610807565b92915050565b60008060006060848603121561084a57610849610583565b5b600084013567ffffffffffffffff81111561086857610867610588565b5b61087486828701610716565b935050602061088586828701610765565b925050604061089686828701610765565b9150509250925092565b6000806000606084860312156108b9576108b8610583565b5b60006108c786828701610698565b93505060206108d886828701610765565b92505060406108e986828701610765565b9150509250925092565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b610928816107fd565b82525050565b600061093a838361091f565b60208301905092915050565b6000602082019050919050565b600061095e826108f3565b61096881856108fe565b93506109738361090f565b8060005b838110156109a457815161098b888261092e565b975061099683610946565b925050600181019050610977565b5085935050505092915050565b600060208201905081810360008301526109cb8184610953565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610a3c82610744565b9150610a4783610744565b9250828201905080821115610a5f57610a5e610a02565b5b92915050565b6000610a7082610744565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610aa257610aa1610a02565b5b600182019050919050565b610ab68161066f565b82525050565b610ac581610744565b82525050565b6000606082019050610ae06000830186610aad565b610aed6020830185610abc565b610afa6040830184610807565b949350505050565b6000604082019050610b176000830185610aad565b610b246020830184610aad565b9392505050565b6000610b3682610744565b9150610b4183610744565b9250828203905081811115610b5957610b58610a02565b5b92915050565b6000606082019050610b746000830186610aad565b610b816020830185610aad565b610b8e6040830184610aad565b949350505050565b6000606082019050610bab6000830186610aad565b610bb86020830185610abc565b610bc56040830184610abc565b949350505050565b610bd6816107fd565b8114610be157600080fd5b50565b600081519050610bf381610bcd565b92915050565b600060208284031215610c0f57610c0e610583565b5b6000610c1d84828501610be4565b9150509291505056fea26469706673582212207d832c09cf02fc4ffcfa4e28eed5e6ebf6b2feb51b095442303cc0545277b42c64736f6c63430008110033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xC5C DUP1 PUSH2 0x20 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 0x4C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7EF79F8C EQ PUSH2 0x51 JUMPI DUP1 PUSH4 0x84DD0D12 EQ PUSH2 0x81 JUMPI DUP1 PUSH4 0xB31825BF EQ PUSH2 0xB1 JUMPI DUP1 PUSH4 0xD56154AB EQ PUSH2 0xE1 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x66 SWAP2 SWAP1 PUSH2 0x77A JUMP JUMPDEST PUSH2 0x111 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x78 SWAP2 SWAP1 PUSH2 0x816 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x9B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x96 SWAP2 SWAP1 PUSH2 0x831 JUMP JUMPDEST PUSH2 0x2B2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA8 SWAP2 SWAP1 PUSH2 0x816 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xCB PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xC6 SWAP2 SWAP1 PUSH2 0x8A0 JUMP JUMPDEST PUSH2 0x483 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xD8 SWAP2 SWAP1 PUSH2 0x816 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xFB PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xF6 SWAP2 SWAP1 PUSH2 0x831 JUMP JUMPDEST PUSH2 0x50C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x108 SWAP2 SWAP1 PUSH2 0x9B1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x11F DUP7 DUP7 DUP7 PUSH2 0x50C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x184 JUMPI PUSH1 0x1 PUSH1 0x0 DUP1 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x145 JUMPI PUSH2 0x144 PUSH2 0x9D3 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x16A SWAP2 SWAP1 PUSH2 0xA31 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP1 DUP1 PUSH2 0x17C SWAP1 PUSH2 0xA65 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x124 JUMP JUMPDEST POP PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 POP JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x1F0 JUMPI PUSH1 0x0 DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1AB JUMPI PUSH2 0x1AA PUSH2 0x9D3 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP DUP4 DUP2 GT ISZERO PUSH2 0x1DB JUMPI DUP1 SWAP4 POP DUP2 SWAP6 POP JUMPDEST POP POP DUP1 DUP1 PUSH2 0x1E8 SWAP1 PUSH2 0xA65 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x18D JUMP JUMPDEST POP PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x25E JUMPI PUSH1 0x0 DUP1 DUP6 DUP4 PUSH1 0x20 DUP2 LT PUSH2 0x213 JUMPI PUSH2 0x212 PUSH2 0x9D3 JUMP JUMPDEST JUMPDEST BYTE PUSH1 0xF8 SHL PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SSTORE DUP1 DUP1 PUSH2 0x256 SWAP1 PUSH2 0xA65 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x1F4 JUMP JUMPDEST POP DUP4 DUP2 LT ISZERO PUSH2 0x2A8 JUMPI ADDRESS DUP2 DUP5 PUSH1 0x40 MLOAD PUSH32 0x22BCB23B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x29F SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xACB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2C0 DUP6 DUP6 DUP6 PUSH2 0x50C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x2D8 JUMPI PUSH2 0x2D7 PUSH2 0x9D3 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP1 SHL DUP2 SUB PUSH2 0x346 JUMPI ADDRESS DUP7 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x301 JUMPI PUSH2 0x300 PUSH2 0x9D3 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH32 0x2A0C203900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x33D SWAP3 SWAP2 SWAP1 PUSH2 0xB02 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 SWAP1 POP JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x475 JUMPI DUP4 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x36A JUMPI PUSH2 0x369 PUSH2 0x9D3 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP2 POP PUSH1 0x0 DUP1 SHL DUP3 SUB PUSH2 0x3D7 JUMPI ADDRESS DUP9 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x392 JUMPI PUSH2 0x391 PUSH2 0x9D3 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH32 0x2A0C203900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3CE SWAP3 SWAP2 SWAP1 PUSH2 0xB02 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 DUP3 EQ PUSH2 0x45F JUMPI ADDRESS DUP9 PUSH1 0x1 DUP4 PUSH2 0x3ED SWAP2 SWAP1 PUSH2 0xB2B JUMP JUMPDEST DUP2 MLOAD DUP2 LT PUSH2 0x3FE JUMPI PUSH2 0x3FD PUSH2 0x9D3 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP10 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x419 JUMPI PUSH2 0x418 PUSH2 0x9D3 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH32 0xDBED4B2700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x456 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xB5F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 SWAP3 POP DUP1 DUP1 PUSH2 0x46D SWAP1 PUSH2 0xA65 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x34E JUMP JUMPDEST POP DUP1 SWAP4 POP POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xB31825BF DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C2 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xB96 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4DF 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 0x503 SWAP2 SWAP1 PUSH2 0xBF9 JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x571 JUMPI PUSH2 0x53F DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x530 JUMPI PUSH2 0x52F PUSH2 0x9D3 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP6 DUP6 PUSH2 0x483 JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x552 JUMPI PUSH2 0x551 PUSH2 0x9D3 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP DUP1 DUP1 PUSH2 0x569 SWAP1 PUSH2 0xA65 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x511 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0x5DB DUP3 PUSH2 0x592 JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x5FA JUMPI PUSH2 0x5F9 PUSH2 0x5A3 JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x60D PUSH2 0x579 JUMP JUMPDEST SWAP1 POP PUSH2 0x619 DUP3 DUP3 PUSH2 0x5D2 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x639 JUMPI PUSH2 0x638 PUSH2 0x5A3 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP3 MUL SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x67A DUP3 PUSH2 0x64F JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x68A DUP2 PUSH2 0x66F JUMP JUMPDEST DUP2 EQ PUSH2 0x695 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x6A7 DUP2 PUSH2 0x681 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6C0 PUSH2 0x6BB DUP5 PUSH2 0x61E JUMP JUMPDEST PUSH2 0x603 JUMP JUMPDEST SWAP1 POP DUP1 DUP4 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0x20 DUP5 MUL DUP4 ADD DUP6 DUP2 GT ISZERO PUSH2 0x6E3 JUMPI PUSH2 0x6E2 PUSH2 0x64A JUMP JUMPDEST JUMPDEST DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x70C JUMPI DUP1 PUSH2 0x6F8 DUP9 DUP3 PUSH2 0x698 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x6E5 JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x72B JUMPI PUSH2 0x72A PUSH2 0x58D JUMP JUMPDEST JUMPDEST DUP2 CALLDATALOAD PUSH2 0x73B DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x6AD JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x757 DUP2 PUSH2 0x744 JUMP JUMPDEST DUP2 EQ PUSH2 0x762 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x774 DUP2 PUSH2 0x74E JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x794 JUMPI PUSH2 0x793 PUSH2 0x583 JUMP JUMPDEST JUMPDEST PUSH1 0x0 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x7B2 JUMPI PUSH2 0x7B1 PUSH2 0x588 JUMP JUMPDEST JUMPDEST PUSH2 0x7BE DUP8 DUP3 DUP9 ADD PUSH2 0x716 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 PUSH2 0x7CF DUP8 DUP3 DUP9 ADD PUSH2 0x765 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 PUSH2 0x7E0 DUP8 DUP3 DUP9 ADD PUSH2 0x765 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 PUSH2 0x7F1 DUP8 DUP3 DUP9 ADD PUSH2 0x765 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x810 DUP2 PUSH2 0x7FD JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x82B PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x807 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x84A JUMPI PUSH2 0x849 PUSH2 0x583 JUMP JUMPDEST JUMPDEST PUSH1 0x0 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x868 JUMPI PUSH2 0x867 PUSH2 0x588 JUMP JUMPDEST JUMPDEST PUSH2 0x874 DUP7 DUP3 DUP8 ADD PUSH2 0x716 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x885 DUP7 DUP3 DUP8 ADD PUSH2 0x765 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x896 DUP7 DUP3 DUP8 ADD PUSH2 0x765 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x8B9 JUMPI PUSH2 0x8B8 PUSH2 0x583 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x8C7 DUP7 DUP3 DUP8 ADD PUSH2 0x698 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x8D8 DUP7 DUP3 DUP8 ADD PUSH2 0x765 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x8E9 DUP7 DUP3 DUP8 ADD PUSH2 0x765 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 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 DUP2 SWAP1 POP PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x928 DUP2 PUSH2 0x7FD JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x93A DUP4 DUP4 PUSH2 0x91F JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x95E DUP3 PUSH2 0x8F3 JUMP JUMPDEST PUSH2 0x968 DUP2 DUP6 PUSH2 0x8FE JUMP JUMPDEST SWAP4 POP PUSH2 0x973 DUP4 PUSH2 0x90F JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x9A4 JUMPI DUP2 MLOAD PUSH2 0x98B DUP9 DUP3 PUSH2 0x92E JUMP JUMPDEST SWAP8 POP PUSH2 0x996 DUP4 PUSH2 0x946 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x977 JUMP JUMPDEST POP DUP6 SWAP4 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x9CB DUP2 DUP5 PUSH2 0x953 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xA3C DUP3 PUSH2 0x744 JUMP JUMPDEST SWAP2 POP PUSH2 0xA47 DUP4 PUSH2 0x744 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 ADD SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0xA5F JUMPI PUSH2 0xA5E PUSH2 0xA02 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA70 DUP3 PUSH2 0x744 JUMP JUMPDEST SWAP2 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 SUB PUSH2 0xAA2 JUMPI PUSH2 0xAA1 PUSH2 0xA02 JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xAB6 DUP2 PUSH2 0x66F JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0xAC5 DUP2 PUSH2 0x744 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0xAE0 PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0xAAD JUMP JUMPDEST PUSH2 0xAED PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0xABC JUMP JUMPDEST PUSH2 0xAFA PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x807 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0xB17 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0xAAD JUMP JUMPDEST PUSH2 0xB24 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0xAAD JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB36 DUP3 PUSH2 0x744 JUMP JUMPDEST SWAP2 POP PUSH2 0xB41 DUP4 PUSH2 0x744 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 SUB SWAP1 POP DUP2 DUP2 GT ISZERO PUSH2 0xB59 JUMPI PUSH2 0xB58 PUSH2 0xA02 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0xB74 PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0xAAD JUMP JUMPDEST PUSH2 0xB81 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0xAAD JUMP JUMPDEST PUSH2 0xB8E PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0xAAD JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0xBAB PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0xAAD JUMP JUMPDEST PUSH2 0xBB8 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0xABC JUMP JUMPDEST PUSH2 0xBC5 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0xABC JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0xBD6 DUP2 PUSH2 0x7FD JUMP JUMPDEST DUP2 EQ PUSH2 0xBE1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0xBF3 DUP2 PUSH2 0xBCD JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xC0F JUMPI PUSH2 0xC0E PUSH2 0x583 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xC1D DUP5 DUP3 DUP6 ADD PUSH2 0xBE4 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH30 0x832C09CF02FC4FFCFA4E28EED5E6EBF6B2FEB51B095442303CC0545277B4 0x2C PUSH5 0x736F6C6343 STOP ADDMOD GT STOP CALLER ",
"sourceMap": "403:4961:0:-:0;;;;;;;;;;;;;;;;;;;"
},
"deployedBytecode": {
"functionDebugData": {
"@getAgreedOnHeader_207": {
"entryPoint": 690,
"id": 207,
"parameterSlots": 3,
"returnSlots": 1
},
"@getHeaderFromOracle_53": {
"entryPoint": 1155,
"id": 53,
"parameterSlots": 3,
"returnSlots": 1
},
"@getHeaderFromThreshold_329": {
"entryPoint": 273,
"id": 329,
"parameterSlots": 4,
"returnSlots": 1
},
"@getHeadersFromOracles_93": {
"entryPoint": 1292,
"id": 93,
"parameterSlots": 3,
"returnSlots": 1
},
"abi_decode_available_length_t_array$_t_address_$dyn_memory_ptr": {
"entryPoint": 1709,
"id": null,
"parameterSlots": 3,
"returnSlots": 1
},
"abi_decode_t_address": {
"entryPoint": 1688,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_t_array$_t_address_$dyn_memory_ptr": {
"entryPoint": 1814,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_t_bytes32_fromMemory": {
"entryPoint": 3044,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_t_uint256": {
"entryPoint": 1893,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_addresst_uint256t_uint256": {
"entryPoint": 2208,
"id": null,
"parameterSlots": 2,
"returnSlots": 3
},
"abi_decode_tuple_t_array$_t_address_$dyn_memory_ptrt_uint256t_uint256": {
"entryPoint": 2097,
"id": null,
"parameterSlots": 2,
"returnSlots": 3
},
"abi_decode_tuple_t_array$_t_address_$dyn_memory_ptrt_uint256t_uint256t_uint256": {
"entryPoint": 1914,
"id": null,
"parameterSlots": 2,
"returnSlots": 4
},
"abi_decode_tuple_t_bytes32_fromMemory": {
"entryPoint": 3065,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encodeUpdatedPos_t_bytes32_to_t_bytes32": {
"entryPoint": 2350,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_t_address_to_t_address_fromStack": {
"entryPoint": 2733,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_t_array$_t_bytes32_$dyn_memory_ptr_to_t_array$_t_bytes32_$dyn_memory_ptr_fromStack": {
"entryPoint": 2387,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_t_bytes32_to_t_bytes32": {
"entryPoint": 2335,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_t_bytes32_to_t_bytes32_fromStack": {
"entryPoint": 2055,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_t_uint256_to_t_uint256_fromStack": {
"entryPoint": 2748,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed": {
"entryPoint": 2818,
"id": null,
"parameterSlots": 3,
"returnSlots": 1
},
"abi_encode_tuple_t_address_t_address_t_address__to_t_address_t_address_t_address__fromStack_reversed": {
"entryPoint": 2911,
"id": null,
"parameterSlots": 4,
"returnSlots": 1
},
"abi_encode_tuple_t_address_t_uint256_t_bytes32__to_t_address_t_uint256_t_bytes32__fromStack_reversed": {
"entryPoint": 2763,
"id": null,
"parameterSlots": 4,
"returnSlots": 1
},
"abi_encode_tuple_t_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed": {
"entryPoint": 2966,
"id": null,
"parameterSlots": 4,
"returnSlots": 1
},
"abi_encode_tuple_t_array$_t_bytes32_$dyn_memory_ptr__to_t_array$_t_bytes32_$dyn_memory_ptr__fromStack_reversed": {
"entryPoint": 2481,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed": {
"entryPoint": 2070,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"allocate_memory": {
"entryPoint": 1539,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"allocate_unbounded": {
"entryPoint": 1401,
"id": null,
"parameterSlots": 0,
"returnSlots": 1
},
"array_allocation_size_t_array$_t_address_$dyn_memory_ptr": {
"entryPoint": 1566,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"array_dataslot_t_array$_t_bytes32_$dyn_memory_ptr": {
"entryPoint": 2319,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"array_length_t_array$_t_bytes32_$dyn_memory_ptr": {
"entryPoint": 2291,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"array_nextElement_t_array$_t_bytes32_$dyn_memory_ptr": {
"entryPoint": 2374,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"array_storeLengthForEncoding_t_array$_t_bytes32_$dyn_memory_ptr_fromStack": {
"entryPoint": 2302,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"checked_add_t_uint256": {
"entryPoint": 2609,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"checked_sub_t_uint256": {
"entryPoint": 2859,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"cleanup_t_address": {
"entryPoint": 1647,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_bytes32": {
"entryPoint": 2045,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_uint160": {
"entryPoint": 1615,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_uint256": {
"entryPoint": 1860,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"finalize_allocation": {
"entryPoint": 1490,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"increment_t_uint256": {
"entryPoint": 2661,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"panic_error_0x11": {
"entryPoint": 2562,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"panic_error_0x32": {
"entryPoint": 2515,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"panic_error_0x41": {
"entryPoint": 1443,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d": {
"entryPoint": 1421,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef": {
"entryPoint": 1610,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db": {
"entryPoint": 1416,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b": {
"entryPoint": 1411,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"round_up_to_mul_of_32": {
"entryPoint": 1426,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"validator_revert_t_address": {
"entryPoint": 1665,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"validator_revert_t_bytes32": {
"entryPoint": 3021,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"validator_revert_t_uint256": {
"entryPoint": 1870,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
}
},
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:12060:2",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "47:35:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "57:19:2",
"value": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "73:2:2",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "67:5:2"
},
"nodeType": "YulFunctionCall",
"src": "67:9:2"
},
"variableNames": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "57:6:2"
}
]
}
]
},
"name": "allocate_unbounded",
"nodeType": "YulFunctionDefinition",
"returnVariables": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "40:6:2",
"type": ""
}
],
"src": "7:75:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "177:28:2",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "194:1:2",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "197:1:2",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "187:6:2"
},
"nodeType": "YulFunctionCall",
"src": "187:12:2"
},
"nodeType": "YulExpressionStatement",
"src": "187:12:2"
}
]
},
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulFunctionDefinition",
"src": "88:117:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "300:28:2",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "317:1:2",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "320:1:2",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "310:6:2"
},
"nodeType": "YulFunctionCall",
"src": "310:12:2"
},
"nodeType": "YulExpressionStatement",
"src": "310:12:2"
}
]
},
"name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db",
"nodeType": "YulFunctionDefinition",
"src": "211:117:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "423:28:2",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "440:1:2",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "443:1:2",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "433:6:2"
},
"nodeType": "YulFunctionCall",
"src": "433:12:2"
},
"nodeType": "YulExpressionStatement",
"src": "433:12:2"
}
]
},
"name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d",
"nodeType": "YulFunctionDefinition",
"src": "334:117:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "505:54:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "515:38:2",
"value": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "533:5:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "540:2:2",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "529:3:2"
},
"nodeType": "YulFunctionCall",
"src": "529:14:2"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "549:2:2",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "545:3:2"
},
"nodeType": "YulFunctionCall",
"src": "545:7:2"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "525:3:2"
},
"nodeType": "YulFunctionCall",
"src": "525:28:2"
},
"variableNames": [
{
"name": "result",
"nodeType": "YulIdentifier",
"src": "515:6:2"
}
]
}
]
},
"name": "round_up_to_mul_of_32",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "488:5:2",
"type": ""
}
],
"returnVariables": [
{
"name": "result",
"nodeType": "YulTypedName",
"src": "498:6:2",
"type": ""
}
],
"src": "457:102:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "593:152:2",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "610:1:2",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "613:77:2",
"type": "",
"value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "603:6:2"
},
"nodeType": "YulFunctionCall",
"src": "603:88:2"
},
"nodeType": "YulExpressionStatement",
"src": "603:88:2"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "707:1:2",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "710:4:2",
"type": "",
"value": "0x41"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "700:6:2"
},
"nodeType": "YulFunctionCall",
"src": "700:15:2"
},
"nodeType": "YulExpressionStatement",
"src": "700:15:2"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "731:1:2",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "734:4:2",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "724:6:2"
},
"nodeType": "YulFunctionCall",
"src": "724:15:2"
},
"nodeType": "YulExpressionStatement",
"src": "724:15:2"
}
]
},
"name": "panic_error_0x41",
"nodeType": "YulFunctionDefinition",
"src": "565:180:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "794:238:2",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "804:58:2",
"value": {
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "826:6:2"
},
{
"arguments": [
{
"name": "size",
"nodeType": "YulIdentifier",
"src": "856:4:2"
}
],
"functionName": {
"name": "round_up_to_mul_of_32",
"nodeType": "YulIdentifier",
"src": "834:21:2"
},
"nodeType": "YulFunctionCall",
"src": "834:27:2"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "822:3:2"
},
"nodeType": "YulFunctionCall",
"src": "822:40:2"
},
"variables": [
{
"name": "newFreePtr",
"nodeType": "YulTypedName",
"src": "808:10:2",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "973:22:2",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x41",
"nodeType": "YulIdentifier",
"src": "975:16:2"
},
"nodeType": "YulFunctionCall",
"src": "975:18:2"
},
"nodeType": "YulExpressionStatement",
"src": "975:18:2"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "newFreePtr",
"nodeType": "YulIdentifier",
"src": "916:10:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "928:18:2",
"type": "",
"value": "0xffffffffffffffff"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "913:2:2"
},
"nodeType": "YulFunctionCall",
"src": "913:34:2"
},
{
"arguments": [
{
"name": "newFreePtr",
"nodeType": "YulIdentifier",
"src": "952:10:2"
},
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "964:6:2"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "949:2:2"
},
"nodeType": "YulFunctionCall",
"src": "949:22:2"
}
],
"functionName": {
"name": "or",
"nodeType": "YulIdentifier",
"src": "910:2:2"
},
"nodeType": "YulFunctionCall",
"src": "910:62:2"
},
"nodeType": "YulIf",
"src": "907:88:2"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1011:2:2",
"type": "",
"value": "64"
},
{
"name": "newFreePtr",
"nodeType": "YulIdentifier",
"src": "1015:10:2"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1004:6:2"
},
"nodeType": "YulFunctionCall",
"src": "1004:22:2"
},
"nodeType": "YulExpressionStatement",
"src": "1004:22:2"
}
]
},
"name": "finalize_allocation",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "780:6:2",
"type": ""
},
{
"name": "size",
"nodeType": "YulTypedName",
"src": "788:4:2",
"type": ""
}
],
"src": "751:281:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1079:88:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1089:30:2",
"value": {
"arguments": [],
"functionName": {
"name": "allocate_unbounded",
"nodeType": "YulIdentifier",
"src": "1099:18:2"
},
"nodeType": "YulFunctionCall",
"src": "1099:20:2"
},
"variableNames": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "1089:6:2"
}
]
},
{
"expression": {
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "1148:6:2"
},
{
"name": "size",
"nodeType": "YulIdentifier",
"src": "1156:4:2"
}
],
"functionName": {
"name": "finalize_allocation",
"nodeType": "YulIdentifier",
"src": "1128:19:2"
},
"nodeType": "YulFunctionCall",
"src": "1128:33:2"
},
"nodeType": "YulExpressionStatement",
"src": "1128:33:2"
}
]
},
"name": "allocate_memory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "size",
"nodeType": "YulTypedName",
"src": "1063:4:2",
"type": ""
}
],
"returnVariables": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "1072:6:2",
"type": ""
}
],
"src": "1038:129:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1255:229:2",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "1360:22:2",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x41",
"nodeType": "YulIdentifier",
"src": "1362:16:2"
},
"nodeType": "YulFunctionCall",
"src": "1362:18:2"
},
"nodeType": "YulExpressionStatement",
"src": "1362:18:2"
}
]
},
"condition": {
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "1332:6:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1340:18:2",
"type": "",
"value": "0xffffffffffffffff"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "1329:2:2"
},
"nodeType": "YulFunctionCall",
"src": "1329:30:2"
},
"nodeType": "YulIf",
"src": "1326:56:2"
},
{
"nodeType": "YulAssignment",
"src": "1392:25:2",
"value": {
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "1404:6:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1412:4:2",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "mul",
"nodeType": "YulIdentifier",
"src": "1400:3:2"
},
"nodeType": "YulFunctionCall",
"src": "1400:17:2"
},
"variableNames": [
{
"name": "size",
"nodeType": "YulIdentifier",
"src": "1392:4:2"
}
]
},
{
"nodeType": "YulAssignment",
"src": "1454:23:2",
"value": {
"arguments": [
{
"name": "size",
"nodeType": "YulIdentifier",
"src": "1466:4:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1472:4:2",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1462:3:2"
},
"nodeType": "YulFunctionCall",
"src": "1462:15:2"
},
"variableNames": [
{
"name": "size",
"nodeType": "YulIdentifier",
"src": "1454:4:2"
}
]
}
]
},
"name": "array_allocation_size_t_array$_t_address_$dyn_memory_ptr",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "1239:6:2",
"type": ""
}
],
"returnVariables": [
{
"name": "size",
"nodeType": "YulTypedName",
"src": "1250:4:2",
"type": ""
}
],
"src": "1173:311:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1579:28:2",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1596:1:2",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1599:1:2",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "1589:6:2"
},
"nodeType": "YulFunctionCall",
"src": "1589:12:2"
},
"nodeType": "YulExpressionStatement",
"src": "1589:12:2"
}
]
},
"name": "revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef",
"nodeType": "YulFunctionDefinition",
"src": "1490:117:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1658:81:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1668:65:2",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1683:5:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1690:42:2",
"type": "",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "1679:3:2"
},
"nodeType": "YulFunctionCall",
"src": "1679:54:2"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "1668:7:2"
}
]
}
]
},
"name": "cleanup_t_uint160",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1640:5:2",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "1650:7:2",
"type": ""
}
],
"src": "1613:126:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1790:51:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1800:35:2",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1829:5:2"
}
],
"functionName": {
"name": "cleanup_t_uint160",
"nodeType": "YulIdentifier",
"src": "1811:17:2"
},
"nodeType": "YulFunctionCall",
"src": "1811:24:2"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "1800:7:2"
}
]
}
]
},
"name": "cleanup_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1772:5:2",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "1782:7:2",
"type": ""
}
],
"src": "1745:96:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1890:79:2",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "1947:16:2",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1956:1:2",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1959:1:2",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "1949:6:2"
},
"nodeType": "YulFunctionCall",
"src": "1949:12:2"
},
"nodeType": "YulExpressionStatement",
"src": "1949:12:2"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1913:5:2"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1938:5:2"
}
],
"functionName": {
"name": "cleanup_t_address",
"nodeType": "YulIdentifier",
"src": "1920:17:2"
},
"nodeType": "YulFunctionCall",
"src": "1920:24:2"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "1910:2:2"
},
"nodeType": "YulFunctionCall",
"src": "1910:35:2"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "1903:6:2"
},
"nodeType": "YulFunctionCall",
"src": "1903:43:2"
},
"nodeType": "YulIf",
"src": "1900:63:2"
}
]
},
"name": "validator_revert_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1883:5:2",
"type": ""
}
],
"src": "1847:122:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2027:87:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2037:29:2",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "2059:6:2"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "2046:12:2"
},
"nodeType": "YulFunctionCall",
"src": "2046:20:2"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "2037:5:2"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "2102:5:2"
}
],
"functionName": {
"name": "validator_revert_t_address",
"nodeType": "YulIdentifier",
"src": "2075:26:2"
},
"nodeType": "YulFunctionCall",
"src": "2075:33:2"
},
"nodeType": "YulExpressionStatement",
"src": "2075:33:2"
}
]
},
"name": "abi_decode_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "2005:6:2",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "2013:3:2",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "2021:5:2",
"type": ""
}
],
"src": "1975:139:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2239:608:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2249:90:2",
"value": {
"arguments": [
{
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "2331:6:2"
}
],
"functionName": {
"name": "array_allocation_size_t_array$_t_address_$dyn_memory_ptr",
"nodeType": "YulIdentifier",
"src": "2274:56:2"
},
"nodeType": "YulFunctionCall",
"src": "2274:64:2"
}
],
"functionName": {
"name": "allocate_memory",
"nodeType": "YulIdentifier",
"src": "2258:15:2"
},
"nodeType": "YulFunctionCall",
"src": "2258:81:2"
},
"variableNames": [
{
"name": "array",
"nodeType": "YulIdentifier",
"src": "2249:5:2"
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "2348:16:2",
"value": {
"name": "array",
"nodeType": "YulIdentifier",
"src": "2359:5:2"
},
"variables": [
{
"name": "dst",
"nodeType": "YulTypedName",
"src": "2352:3:2",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "array",
"nodeType": "YulIdentifier",
"src": "2381:5:2"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "2388:6:2"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "2374:6:2"
},
"nodeType": "YulFunctionCall",
"src": "2374:21:2"
},
"nodeType": "YulExpressionStatement",
"src": "2374:21:2"
},
{
"nodeType": "YulAssignment",
"src": "2404:23:2",
"value": {
"arguments": [
{
"name": "array",
"nodeType": "YulIdentifier",
"src": "2415:5:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2422:4:2",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2411:3:2"
},
"nodeType": "YulFunctionCall",
"src": "2411:16:2"
},
"variableNames": [
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "2404:3:2"
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "2437:44:2",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "2455:6:2"
},
{
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "2467:6:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2475:4:2",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "mul",
"nodeType": "YulIdentifier",
"src": "2463:3:2"
},
"nodeType": "YulFunctionCall",
"src": "2463:17:2"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2451:3:2"
},
"nodeType": "YulFunctionCall",
"src": "2451:30:2"
},
"variables": [
{
"name": "srcEnd",
"nodeType": "YulTypedName",
"src": "2441:6:2",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "2509:103:2",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef",
"nodeType": "YulIdentifier",
"src": "2523:77:2"
},
"nodeType": "YulFunctionCall",
"src": "2523:79:2"
},
"nodeType": "YulExpressionStatement",
"src": "2523:79:2"
}
]
},
"condition": {
"arguments": [
{
"name": "srcEnd",
"nodeType": "YulIdentifier",
"src": "2496:6:2"
},
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "2504:3:2"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "2493:2:2"
},
"nodeType": "YulFunctionCall",
"src": "2493:15:2"
},
"nodeType": "YulIf",
"src": "2490:122:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2697:144:2",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "2712:21:2",
"value": {
"name": "src",
"nodeType": "YulIdentifier",
"src": "2730:3:2"
},
"variables": [
{
"name": "elementPos",
"nodeType": "YulTypedName",
"src": "2716:10:2",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "2754:3:2"
},
{
"arguments": [
{
"name": "elementPos",
"nodeType": "YulIdentifier",
"src": "2780:10:2"
},
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "2792:3:2"
}
],
"functionName": {
"name": "abi_decode_t_address",
"nodeType": "YulIdentifier",
"src": "2759:20:2"
},
"nodeType": "YulFunctionCall",
"src": "2759:37:2"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "2747:6:2"
},
"nodeType": "YulFunctionCall",
"src": "2747:50:2"
},
"nodeType": "YulExpressionStatement",
"src": "2747:50:2"
},
{
"nodeType": "YulAssignment",
"src": "2810:21:2",
"value": {
"arguments": [
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "2821:3:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2826:4:2",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2817:3:2"
},
"nodeType": "YulFunctionCall",
"src": "2817:14:2"
},
"variableNames": [
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "2810:3:2"
}
]
}
]
},
"condition": {
"arguments": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "2650:3:2"
},
{
"name": "srcEnd",
"nodeType": "YulIdentifier",
"src": "2655:6:2"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "2647:2:2"
},
"nodeType": "YulFunctionCall",
"src": "2647:15:2"
},
"nodeType": "YulForLoop",
"post": {
"nodeType": "YulBlock",
"src": "2663:25:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2665:21:2",
"value": {
"arguments": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "2676:3:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2681:4:2",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2672:3:2"
},
"nodeType": "YulFunctionCall",
"src": "2672:14:2"
},
"variableNames": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "2665:3:2"
}
]
}
]
},
"pre": {
"nodeType": "YulBlock",
"src": "2625:21:2",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "2627:17:2",
"value": {
"name": "offset",
"nodeType": "YulIdentifier",
"src": "2638:6:2"
},
"variables": [
{
"name": "src",
"nodeType": "YulTypedName",
"src": "2631:3:2",
"type": ""
}
]
}
]
},
"src": "2621:220:2"
}
]
},
"name": "abi_decode_available_length_t_array$_t_address_$dyn_memory_ptr",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "2209:6:2",
"type": ""
},
{
"name": "length",
"nodeType": "YulTypedName",
"src": "2217:6:2",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "2225:3:2",
"type": ""
}
],
"returnVariables": [
{
"name": "array",
"nodeType": "YulTypedName",
"src": "2233:5:2",
"type": ""
}
],
"src": "2137:710:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2947:293:2",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "2996:83:2",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d",
"nodeType": "YulIdentifier",
"src": "2998:77:2"
},
"nodeType": "YulFunctionCall",
"src": "2998:79:2"
},
"nodeType": "YulExpressionStatement",
"src": "2998:79:2"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "2975:6:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2983:4:2",
"type": "",
"value": "0x1f"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2971:3:2"
},
"nodeType": "YulFunctionCall",
"src": "2971:17:2"
},
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "2990:3:2"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "2967:3:2"
},
"nodeType": "YulFunctionCall",
"src": "2967:27:2"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "2960:6:2"
},
"nodeType": "YulFunctionCall",
"src": "2960:35:2"
},
"nodeType": "YulIf",
"src": "2957:122:2"
},
{
"nodeType": "YulVariableDeclaration",
"src": "3088:34:2",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "3115:6:2"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "3102:12:2"
},
"nodeType": "YulFunctionCall",
"src": "3102:20:2"
},
"variables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "3092:6:2",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "3131:103:2",
"value": {
"arguments": [
{
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "3207:6:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3215:4:2",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3203:3:2"
},
"nodeType": "YulFunctionCall",
"src": "3203:17:2"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "3222:6:2"
},
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "3230:3:2"
}
],
"functionName": {
"name": "abi_decode_available_length_t_array$_t_address_$dyn_memory_ptr",
"nodeType": "YulIdentifier",
"src": "3140:62:2"
},
"nodeType": "YulFunctionCall",
"src": "3140:94:2"
},
"variableNames": [
{
"name": "array",
"nodeType": "YulIdentifier",
"src": "3131:5:2"
}
]
}
]
},
"name": "abi_decode_t_array$_t_address_$dyn_memory_ptr",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "2925:6:2",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "2933:3:2",
"type": ""
}
],
"returnVariables": [
{
"name": "array",
"nodeType": "YulTypedName",
"src": "2941:5:2",
"type": ""
}
],
"src": "2870:370:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3291:32:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "3301:16:2",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "3312:5:2"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "3301:7:2"
}
]
}
]
},
"name": "cleanup_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "3273:5:2",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "3283:7:2",
"type": ""
}
],
"src": "3246:77:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3372:79:2",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "3429:16:2",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3438:1:2",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3441:1:2",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "3431:6:2"
},
"nodeType": "YulFunctionCall",
"src": "3431:12:2"
},
"nodeType": "YulExpressionStatement",
"src": "3431:12:2"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "3395:5:2"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "3420:5:2"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "3402:17:2"
},
"nodeType": "YulFunctionCall",
"src": "3402:24:2"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "3392:2:2"
},
"nodeType": "YulFunctionCall",
"src": "3392:35:2"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "3385:6:2"
},
"nodeType": "YulFunctionCall",
"src": "3385:43:2"
},
"nodeType": "YulIf",
"src": "3382:63:2"
}
]
},
"name": "validator_revert_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "3365:5:2",
"type": ""
}
],
"src": "3329:122:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3509:87:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "3519:29:2",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "3541:6:2"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "3528:12:2"
},
"nodeType": "YulFunctionCall",
"src": "3528:20:2"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "3519:5:2"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "3584:5:2"
}
],
"functionName": {
"name": "validator_revert_t_uint256",
"nodeType": "YulIdentifier",
"src": "3557:26:2"
},
"nodeType": "YulFunctionCall",
"src": "3557:33:2"
},
"nodeType": "YulExpressionStatement",
"src": "3557:33:2"
}
]
},
"name": "abi_decode_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "3487:6:2",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "3495:3:2",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "3503:5:2",
"type": ""
}
],
"src": "3457:139:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3744:833:2",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "3791:83:2",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulIdentifier",
"src": "3793:77:2"
},
"nodeType": "YulFunctionCall",
"src": "3793:79:2"
},
"nodeType": "YulExpressionStatement",
"src": "3793:79:2"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "3765:7:2"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3774:9:2"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "3761:3:2"
},
"nodeType": "YulFunctionCall",
"src": "3761:23:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3786:3:2",
"type": "",
"value": "128"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "3757:3:2"
},
"nodeType": "YulFunctionCall",
"src": "3757:33:2"
},
"nodeType": "YulIf",
"src": "3754:120:2"
},
{
"nodeType": "YulBlock",
"src": "3884:302:2",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "3899:45:2",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3930:9:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3941:1:2",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3926:3:2"
},
"nodeType": "YulFunctionCall",
"src": "3926:17:2"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "3913:12:2"
},
"nodeType": "YulFunctionCall",
"src": "3913:31:2"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "3903:6:2",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "3991:83:2",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db",
"nodeType": "YulIdentifier",
"src": "3993:77:2"
},
"nodeType": "YulFunctionCall",
"src": "3993:79:2"
},
"nodeType": "YulExpressionStatement",
"src": "3993:79:2"
}
]
},
"condition": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "3963:6:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3971:18:2",
"type": "",
"value": "0xffffffffffffffff"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "3960:2:2"
},
"nodeType": "YulFunctionCall",
"src": "3960:30:2"
},
"nodeType": "YulIf",
"src": "3957:117:2"
},
{
"nodeType": "YulAssignment",
"src": "4088:88:2",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4148:9:2"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "4159:6:2"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4144:3:2"
},
"nodeType": "YulFunctionCall",
"src": "4144:22:2"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "4168:7:2"
}
],
"functionName": {
"name": "abi_decode_t_array$_t_address_$dyn_memory_ptr",
"nodeType": "YulIdentifier",
"src": "4098:45:2"
},
"nodeType": "YulFunctionCall",
"src": "4098:78:2"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "4088:6:2"
}
]
}
]
},
{
"nodeType": "YulBlock",
"src": "4196:118:2",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "4211:16:2",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "4225:2:2",
"type": "",
"value": "32"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "4215:6:2",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "4241:63:2",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4276:9:2"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "4287:6:2"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4272:3:2"
},
"nodeType": "YulFunctionCall",
"src": "4272:22:2"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "4296:7:2"
}
],
"functionName": {
"name": "abi_decode_t_uint256",
"nodeType": "YulIdentifier",
"src": "4251:20:2"
},
"nodeType": "YulFunctionCall",
"src": "4251:53:2"
},
"variableNames": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "4241:6:2"
}
]
}
]
},
{
"nodeType": "YulBlock",
"src": "4324:118:2",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "4339:16:2",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "4353:2:2",
"type": "",
"value": "64"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "4343:6:2",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "4369:63:2",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4404:9:2"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "4415:6:2"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4400:3:2"
},
"nodeType": "YulFunctionCall",
"src": "4400:22:2"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "4424:7:2"
}
],
"functionName": {
"name": "abi_decode_t_uint256",
"nodeType": "YulIdentifier",
"src": "4379:20:2"
},
"nodeType": "YulFunctionCall",
"src": "4379:53:2"
},
"variableNames": [
{
"name": "value2",
"nodeType": "YulIdentifier",
"src": "4369:6:2"
}
]
}
]
},
{
"nodeType": "YulBlock",
"src": "4452:118:2",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "4467:16:2",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "4481:2:2",
"type": "",
"value": "96"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "4471:6:2",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "4497:63:2",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4532:9:2"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "4543:6:2"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4528:3:2"
},
"nodeType": "YulFunctionCall",
"src": "4528:22:2"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "4552:7:2"
}
],
"functionName": {
"name": "abi_decode_t_uint256",
"nodeType": "YulIdentifier",
"src": "4507:20:2"
},
"nodeType": "YulFunctionCall",
"src": "4507:53:2"
},
"variableNames": [
{
"name": "value3",
"nodeType": "YulIdentifier",
"src": "4497:6:2"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_array$_t_address_$dyn_memory_ptrt_uint256t_uint256t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "3690:9:2",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "3701:7:2",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "3713:6:2",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "3721:6:2",
"type": ""
},
{
"name": "value2",
"nodeType": "YulTypedName",
"src": "3729:6:2",
"type": ""
},
{
"name": "value3",
"nodeType": "YulTypedName",
"src": "3737:6:2",
"type": ""
}
],
"src": "3602:975:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4628:32:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "4638:16:2",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "4649:5:2"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "4638:7:2"
}
]
}
]
},
"name": "cleanup_t_bytes32",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "4610:5:2",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "4620:7:2",
"type": ""
}
],
"src": "4583:77:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4731:53:2",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "4748:3:2"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "4771:5:2"
}
],
"functionName": {
"name": "cleanup_t_bytes32",
"nodeType": "YulIdentifier",
"src": "4753:17:2"
},
"nodeType": "YulFunctionCall",
"src": "4753:24:2"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "4741:6:2"
},
"nodeType": "YulFunctionCall",
"src": "4741:37:2"
},
"nodeType": "YulExpressionStatement",
"src": "4741:37:2"
}
]
},
"name": "abi_encode_t_bytes32_to_t_bytes32_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "4719:5:2",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "4726:3:2",
"type": ""
}
],
"src": "4666:118:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4888:124:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "4898:26:2",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4910:9:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4921:2:2",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4906:3:2"
},
"nodeType": "YulFunctionCall",
"src": "4906:18:2"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "4898:4:2"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "4978:6:2"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4991:9:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5002:1:2",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4987:3:2"
},
"nodeType": "YulFunctionCall",
"src": "4987:17:2"
}
],
"functionName": {
"name": "abi_encode_t_bytes32_to_t_bytes32_fromStack",
"nodeType": "YulIdentifier",
"src": "4934:43:2"
},
"nodeType": "YulFunctionCall",
"src": "4934:71:2"
},
"nodeType": "YulExpressionStatement",
"src": "4934:71:2"
}
]
},
"name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "4860:9:2",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "4872:6:2",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "4883:4:2",
"type": ""
}
],
"src": "4790:222:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5143:704:2",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "5189:83:2",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulIdentifier",
"src": "5191:77:2"
},
"nodeType": "YulFunctionCall",
"src": "5191:79:2"
},
"nodeType": "YulExpressionStatement",
"src": "5191:79:2"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "5164:7:2"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5173:9:2"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "5160:3:2"
},
"nodeType": "YulFunctionCall",
"src": "5160:23:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5185:2:2",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "5156:3:2"
},
"nodeType": "YulFunctionCall",
"src": "5156:32:2"
},
"nodeType": "YulIf",
"src": "5153:119:2"
},
{
"nodeType": "YulBlock",
"src": "5282:302:2",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "5297:45:2",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5328:9:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5339:1:2",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5324:3:2"
},
"nodeType": "YulFunctionCall",
"src": "5324:17:2"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "5311:12:2"
},
"nodeType": "YulFunctionCall",
"src": "5311:31:2"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "5301:6:2",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "5389:83:2",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db",
"nodeType": "YulIdentifier",
"src": "5391:77:2"
},
"nodeType": "YulFunctionCall",
"src": "5391:79:2"
},
"nodeType": "YulExpressionStatement",
"src": "5391:79:2"
}
]
},
"condition": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "5361:6:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5369:18:2",
"type": "",
"value": "0xffffffffffffffff"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "5358:2:2"
},
"nodeType": "YulFunctionCall",
"src": "5358:30:2"
},
"nodeType": "YulIf",
"src": "5355:117:2"
},
{
"nodeType": "YulAssignment",
"src": "5486:88:2",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5546:9:2"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "5557:6:2"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5542:3:2"
},
"nodeType": "YulFunctionCall",
"src": "5542:22:2"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "5566:7:2"
}
],
"functionName": {
"name": "abi_decode_t_array$_t_address_$dyn_memory_ptr",
"nodeType": "YulIdentifier",
"src": "5496:45:2"
},
"nodeType": "YulFunctionCall",
"src": "5496:78:2"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "5486:6:2"
}
]
}
]
},
{
"nodeType": "YulBlock",
"src": "5594:118:2",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "5609:16:2",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "5623:2:2",
"type": "",
"value": "32"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "5613:6:2",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "5639:63:2",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5674:9:2"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "5685:6:2"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5670:3:2"
},
"nodeType": "YulFunctionCall",
"src": "5670:22:2"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "5694:7:2"
}
],
"functionName": {
"name": "abi_decode_t_uint256",
"nodeType": "YulIdentifier",
"src": "5649:20:2"
},
"nodeType": "YulFunctionCall",
"src": "5649:53:2"
},
"variableNames": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "5639:6:2"
}
]
}
]
},
{
"nodeType": "YulBlock",
"src": "5722:118:2",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "5737:16:2",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "5751:2:2",
"type": "",
"value": "64"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "5741:6:2",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "5767:63:2",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5802:9:2"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "5813:6:2"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5798:3:2"
},
"nodeType": "YulFunctionCall",
"src": "5798:22:2"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "5822:7:2"
}
],
"functionName": {
"name": "abi_decode_t_uint256",
"nodeType": "YulIdentifier",
"src": "5777:20:2"
},
"nodeType": "YulFunctionCall",
"src": "5777:53:2"
},
"variableNames": [
{
"name": "value2",
"nodeType": "YulIdentifier",
"src": "5767:6:2"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_array$_t_address_$dyn_memory_ptrt_uint256t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "5097:9:2",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "5108:7:2",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "5120:6:2",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "5128:6:2",
"type": ""
},
{
"name": "value2",
"nodeType": "YulTypedName",
"src": "5136:6:2",
"type": ""
}
],
"src": "5018:829:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5953:519:2",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "5999:83:2",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulIdentifier",
"src": "6001:77:2"
},
"nodeType": "YulFunctionCall",
"src": "6001:79:2"
},
"nodeType": "YulExpressionStatement",
"src": "6001:79:2"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "5974:7:2"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5983:9:2"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "5970:3:2"
},
"nodeType": "YulFunctionCall",
"src": "5970:23:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5995:2:2",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "5966:3:2"
},
"nodeType": "YulFunctionCall",
"src": "5966:32:2"
},
"nodeType": "YulIf",
"src": "5963:119:2"
},
{
"nodeType": "YulBlock",
"src": "6092:117:2",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "6107:15:2",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "6121:1:2",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "6111:6:2",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "6136:63:2",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "6171:9:2"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "6182:6:2"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6167:3:2"
},
"nodeType": "YulFunctionCall",
"src": "6167:22:2"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "6191:7:2"
}
],
"functionName": {
"name": "abi_decode_t_address",
"nodeType": "YulIdentifier",
"src": "6146:20:2"
},
"nodeType": "YulFunctionCall",
"src": "6146:53:2"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "6136:6:2"
}
]
}
]
},
{
"nodeType": "YulBlock",
"src": "6219:118:2",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "6234:16:2",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "6248:2:2",
"type": "",
"value": "32"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "6238:6:2",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "6264:63:2",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "6299:9:2"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "6310:6:2"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6295:3:2"
},
"nodeType": "YulFunctionCall",
"src": "6295:22:2"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "6319:7:2"
}
],
"functionName": {
"name": "abi_decode_t_uint256",
"nodeType": "YulIdentifier",
"src": "6274:20:2"
},
"nodeType": "YulFunctionCall",
"src": "6274:53:2"
},
"variableNames": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "6264:6:2"
}
]
}
]
},
{
"nodeType": "YulBlock",
"src": "6347:118:2",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "6362:16:2",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "6376:2:2",
"type": "",
"value": "64"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "6366:6:2",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "6392:63:2",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "6427:9:2"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "6438:6:2"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6423:3:2"
},
"nodeType": "YulFunctionCall",
"src": "6423:22:2"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "6447:7:2"
}
],
"functionName": {
"name": "abi_decode_t_uint256",
"nodeType": "YulIdentifier",
"src": "6402:20:2"
},
"nodeType": "YulFunctionCall",
"src": "6402:53:2"
},
"variableNames": [
{
"name": "value2",
"nodeType": "YulIdentifier",
"src": "6392:6:2"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_addresst_uint256t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "5907:9:2",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "5918:7:2",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "5930:6:2",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "5938:6:2",
"type": ""
},
{
"name": "value2",
"nodeType": "YulTypedName",
"src": "5946:6:2",
"type": ""
}
],
"src": "5853:619:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6552:40:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "6563:22:2",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "6579:5:2"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "6573:5:2"
},
"nodeType": "YulFunctionCall",
"src": "6573:12:2"
},
"variableNames": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "6563:6:2"
}
]
}
]
},
"name": "array_length_t_array$_t_bytes32_$dyn_memory_ptr",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "6535:5:2",
"type": ""
}
],
"returnVariables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "6545:6:2",
"type": ""
}
],
"src": "6478:114:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6709:73:2",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "6726:3:2"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "6731:6:2"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "6719:6:2"
},
"nodeType": "YulFunctionCall",
"src": "6719:19:2"
},
"nodeType": "YulExpressionStatement",
"src": "6719:19:2"
},
{
"nodeType": "YulAssignment",
"src": "6747:29:2",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "6766:3:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6771:4:2",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6762:3:2"
},
"nodeType": "YulFunctionCall",
"src": "6762:14:2"
},
"variableNames": [
{
"name": "updated_pos",
"nodeType": "YulIdentifier",
"src": "6747:11:2"
}
]
}
]
},
"name": "array_storeLengthForEncoding_t_array$_t_bytes32_$dyn_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "6681:3:2",
"type": ""
},
{
"name": "length",
"nodeType": "YulTypedName",
"src": "6686:6:2",
"type": ""
}
],
"returnVariables": [
{
"name": "updated_pos",
"nodeType": "YulTypedName",
"src": "6697:11:2",
"type": ""
}
],
"src": "6598:184:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6860:60:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "6870:11:2",
"value": {
"name": "ptr",
"nodeType": "YulIdentifier",
"src": "6878:3:2"
},
"variableNames": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "6870:4:2"
}
]
},
{
"nodeType": "YulAssignment",
"src": "6891:22:2",
"value": {
"arguments": [
{
"name": "ptr",
"nodeType": "YulIdentifier",
"src": "6903:3:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6908:4:2",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6899:3:2"
},
"nodeType": "YulFunctionCall",
"src": "6899:14:2"
},
"variableNames": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "6891:4:2"
}
]
}
]
},
"name": "array_dataslot_t_array$_t_bytes32_$dyn_memory_ptr",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "ptr",
"nodeType": "YulTypedName",
"src": "6847:3:2",
"type": ""
}
],
"returnVariables": [
{
"name": "data",
"nodeType": "YulTypedName",
"src": "6855:4:2",
"type": ""
}
],
"src": "6788:132:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6981:53:2",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "6998:3:2"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "7021:5:2"
}
],
"functionName": {
"name": "cleanup_t_bytes32",
"nodeType": "YulIdentifier",
"src": "7003:17:2"
},
"nodeType": "YulFunctionCall",
"src": "7003:24:2"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "6991:6:2"
},
"nodeType": "YulFunctionCall",
"src": "6991:37:2"
},
"nodeType": "YulExpressionStatement",
"src": "6991:37:2"
}
]
},
"name": "abi_encode_t_bytes32_to_t_bytes32",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "6969:5:2",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "6976:3:2",
"type": ""
}
],
"src": "6926:108:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "7120:99:2",
"statements": [
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "7164:6:2"
},
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "7172:3:2"
}
],
"functionName": {
"name": "abi_encode_t_bytes32_to_t_bytes32",
"nodeType": "YulIdentifier",
"src": "7130:33:2"
},
"nodeType": "YulFunctionCall",
"src": "7130:46:2"
},
"nodeType": "YulExpressionStatement",
"src": "7130:46:2"
},
{
"nodeType": "YulAssignment",
"src": "7185:28:2",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "7203:3:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7208:4:2",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7199:3:2"
},
"nodeType": "YulFunctionCall",
"src": "7199:14:2"
},
"variableNames": [
{
"name": "updatedPos",
"nodeType": "YulIdentifier",
"src": "7185:10:2"
}
]
}
]
},
"name": "abi_encodeUpdatedPos_t_bytes32_to_t_bytes32",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "7093:6:2",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "7101:3:2",
"type": ""
}
],
"returnVariables": [
{
"name": "updatedPos",
"nodeType": "YulTypedName",
"src": "7109:10:2",
"type": ""
}
],
"src": "7040:179:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "7300:38:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "7310:22:2",
"value": {
"arguments": [
{
"name": "ptr",
"nodeType": "YulIdentifier",
"src": "7322:3:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7327:4:2",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7318:3:2"
},
"nodeType": "YulFunctionCall",
"src": "7318:14:2"
},
"variableNames": [
{
"name": "next",
"nodeType": "YulIdentifier",
"src": "7310:4:2"
}
]
}
]
},
"name": "array_nextElement_t_array$_t_bytes32_$dyn_memory_ptr",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "ptr",
"nodeType": "YulTypedName",
"src": "7287:3:2",
"type": ""
}
],
"returnVariables": [
{
"name": "next",
"nodeType": "YulTypedName",
"src": "7295:4:2",
"type": ""
}
],
"src": "7225:113:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "7498:608:2",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "7508:68:2",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "7570:5:2"
}
],
"functionName": {
"name": "array_length_t_array$_t_bytes32_$dyn_memory_ptr",
"nodeType": "YulIdentifier",
"src": "7522:47:2"
},
"nodeType": "YulFunctionCall",
"src": "7522:54:2"
},
"variables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "7512:6:2",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "7585:93:2",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "7666:3:2"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "7671:6:2"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_array$_t_bytes32_$dyn_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "7592:73:2"
},
"nodeType": "YulFunctionCall",
"src": "7592:86:2"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "7585:3:2"
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "7687:71:2",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "7752:5:2"
}
],
"functionName": {
"name": "array_dataslot_t_array$_t_bytes32_$dyn_memory_ptr",
"nodeType": "YulIdentifier",
"src": "7702:49:2"
},
"nodeType": "YulFunctionCall",
"src": "7702:56:2"
},
"variables": [
{
"name": "baseRef",
"nodeType": "YulTypedName",
"src": "7691:7:2",
"type": ""
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "7767:21:2",
"value": {
"name": "baseRef",
"nodeType": "YulIdentifier",
"src": "7781:7:2"
},
"variables": [
{
"name": "srcPtr",
"nodeType": "YulTypedName",
"src": "7771:6:2",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "7857:224:2",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "7871:34:2",
"value": {
"arguments": [
{
"name": "srcPtr",
"nodeType": "YulIdentifier",
"src": "7898:6:2"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "7892:5:2"
},
"nodeType": "YulFunctionCall",
"src": "7892:13:2"
},
"variables": [
{
"name": "elementValue0",
"nodeType": "YulTypedName",
"src": "7875:13:2",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "7918:70:2",
"value": {
"arguments": [
{
"name": "elementValue0",
"nodeType": "YulIdentifier",
"src": "7969:13:2"
},
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "7984:3:2"
}
],
"functionName": {
"name": "abi_encodeUpdatedPos_t_bytes32_to_t_bytes32",
"nodeType": "YulIdentifier",
"src": "7925:43:2"
},
"nodeType": "YulFunctionCall",
"src": "7925:63:2"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "7918:3:2"
}
]
},
{
"nodeType": "YulAssignment",
"src": "8001:70:2",
"value": {
"arguments": [
{
"name": "srcPtr",
"nodeType": "YulIdentifier",
"src": "8064:6:2"
}
],
"functionName": {
"name": "array_nextElement_t_array$_t_bytes32_$dyn_memory_ptr",
"nodeType": "YulIdentifier",
"src": "8011:52:2"
},
"nodeType": "YulFunctionCall",
"src": "8011:60:2"
},
"variableNames": [
{
"name": "srcPtr",
"nodeType": "YulIdentifier",
"src": "8001:6:2"
}
]
}
]
},
"condition": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "7819:1:2"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "7822:6:2"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "7816:2:2"
},
"nodeType": "YulFunctionCall",
"src": "7816:13:2"
},
"nodeType": "YulForLoop",
"post": {
"nodeType": "YulBlock",
"src": "7830:18:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "7832:14:2",
"value": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "7841:1:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7844:1:2",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7837:3:2"
},
"nodeType": "YulFunctionCall",
"src": "7837:9:2"
},
"variableNames": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "7832:1:2"
}
]
}
]
},
"pre": {
"nodeType": "YulBlock",
"src": "7801:14:2",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "7803:10:2",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "7812:1:2",
"type": "",
"value": "0"
},
"variables": [
{
"name": "i",
"nodeType": "YulTypedName",
"src": "7807:1:2",
"type": ""
}
]
}
]
},
"src": "7797:284:2"
},
{
"nodeType": "YulAssignment",
"src": "8090:10:2",
"value": {
"name": "pos",
"nodeType": "YulIdentifier",
"src": "8097:3:2"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "8090:3:2"
}
]
}
]
},
"name": "abi_encode_t_array$_t_bytes32_$dyn_memory_ptr_to_t_array$_t_bytes32_$dyn_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "7477:5:2",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "7484:3:2",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "7493:3:2",
"type": ""
}
],
"src": "7374:732:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "8260:225:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "8270:26:2",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "8282:9:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8293:2:2",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8278:3:2"
},
"nodeType": "YulFunctionCall",
"src": "8278:18:2"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "8270:4:2"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "8317:9:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8328:1:2",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8313:3:2"
},
"nodeType": "YulFunctionCall",
"src": "8313:17:2"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "8336:4:2"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "8342:9:2"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "8332:3:2"
},
"nodeType": "YulFunctionCall",
"src": "8332:20:2"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "8306:6:2"
},
"nodeType": "YulFunctionCall",
"src": "8306:47:2"
},
"nodeType": "YulExpressionStatement",
"src": "8306:47:2"
},
{
"nodeType": "YulAssignment",
"src": "8362:116:2",
"value": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "8464:6:2"
},
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "8473:4:2"
}
],
"functionName": {
"name": "abi_encode_t_array$_t_bytes32_$dyn_memory_ptr_to_t_array$_t_bytes32_$dyn_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "8370:93:2"
},
"nodeType": "YulFunctionCall",
"src": "8370:108:2"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "8362:4:2"
}
]
}
]
},
"name": "abi_encode_tuple_t_array$_t_bytes32_$dyn_memory_ptr__to_t_array$_t_bytes32_$dyn_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "8232:9:2",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "8244:6:2",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "8255:4:2",
"type": ""
}
],
"src": "8112:373:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "8519:152:2",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8536:1:2",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8539:77:2",
"type": "",
"value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "8529:6:2"
},
"nodeType": "YulFunctionCall",
"src": "8529:88:2"
},
"nodeType": "YulExpressionStatement",
"src": "8529:88:2"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8633:1:2",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8636:4:2",
"type": "",
"value": "0x32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "8626:6:2"
},
"nodeType": "YulFunctionCall",
"src": "8626:15:2"
},
"nodeType": "YulExpressionStatement",
"src": "8626:15:2"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8657:1:2",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8660:4:2",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "8650:6:2"
},
"nodeType": "YulFunctionCall",
"src": "8650:15:2"
},
"nodeType": "YulExpressionStatement",
"src": "8650:15:2"
}
]
},
"name": "panic_error_0x32",
"nodeType": "YulFunctionDefinition",
"src": "8491:180:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "8705:152:2",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8722:1:2",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8725:77:2",
"type": "",
"value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "8715:6:2"
},
"nodeType": "YulFunctionCall",
"src": "8715:88:2"
},
"nodeType": "YulExpressionStatement",
"src": "8715:88:2"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8819:1:2",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8822:4:2",
"type": "",
"value": "0x11"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "8812:6:2"
},
"nodeType": "YulFunctionCall",
"src": "8812:15:2"
},
"nodeType": "YulExpressionStatement",
"src": "8812:15:2"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8843:1:2",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8846:4:2",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "8836:6:2"
},
"nodeType": "YulFunctionCall",
"src": "8836:15:2"
},
"nodeType": "YulExpressionStatement",
"src": "8836:15:2"
}
]
},
"name": "panic_error_0x11",
"nodeType": "YulFunctionDefinition",
"src": "8677:180:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "8907:147:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "8917:25:2",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "8940:1:2"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "8922:17:2"
},
"nodeType": "YulFunctionCall",
"src": "8922:20:2"
},
"variableNames": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "8917:1:2"
}
]
},
{
"nodeType": "YulAssignment",
"src": "8951:25:2",
"value": {
"arguments": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "8974:1:2"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "8956:17:2"
},
"nodeType": "YulFunctionCall",
"src": "8956:20:2"
},
"variableNames": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "8951:1:2"
}
]
},
{
"nodeType": "YulAssignment",
"src": "8985:16:2",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "8996:1:2"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "8999:1:2"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8992:3:2"
},
"nodeType": "YulFunctionCall",
"src": "8992:9:2"
},
"variableNames": [
{
"name": "sum",
"nodeType": "YulIdentifier",
"src": "8985:3:2"
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "9025:22:2",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x11",
"nodeType": "YulIdentifier",
"src": "9027:16:2"
},
"nodeType": "YulFunctionCall",
"src": "9027:18:2"
},
"nodeType": "YulExpressionStatement",
"src": "9027:18:2"
}
]
},
"condition": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "9017:1:2"
},
{
"name": "sum",
"nodeType": "YulIdentifier",
"src": "9020:3:2"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "9014:2:2"
},
"nodeType": "YulFunctionCall",
"src": "9014:10:2"
},
"nodeType": "YulIf",
"src": "9011:36:2"
}
]
},
"name": "checked_add_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "x",
"nodeType": "YulTypedName",
"src": "8894:1:2",
"type": ""
},
{
"name": "y",
"nodeType": "YulTypedName",
"src": "8897:1:2",
"type": ""
}
],
"returnVariables": [
{
"name": "sum",
"nodeType": "YulTypedName",
"src": "8903:3:2",
"type": ""
}
],
"src": "8863:191:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "9103:190:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "9113:33:2",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "9140:5:2"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "9122:17:2"
},
"nodeType": "YulFunctionCall",
"src": "9122:24:2"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "9113:5:2"
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "9236:22:2",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x11",
"nodeType": "YulIdentifier",
"src": "9238:16:2"
},
"nodeType": "YulFunctionCall",
"src": "9238:18:2"
},
"nodeType": "YulExpressionStatement",
"src": "9238:18:2"
}
]
},
"condition": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "9161:5:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9168:66:2",
"type": "",
"value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "9158:2:2"
},
"nodeType": "YulFunctionCall",
"src": "9158:77:2"
},
"nodeType": "YulIf",
"src": "9155:103:2"
},
{
"nodeType": "YulAssignment",
"src": "9267:20:2",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "9278:5:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9285:1:2",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "9274:3:2"
},
"nodeType": "YulFunctionCall",
"src": "9274:13:2"
},
"variableNames": [
{
"name": "ret",
"nodeType": "YulIdentifier",
"src": "9267:3:2"
}
]
}
]
},
"name": "increment_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "9089:5:2",
"type": ""
}
],
"returnVariables": [
{
"name": "ret",
"nodeType": "YulTypedName",
"src": "9099:3:2",
"type": ""
}
],
"src": "9060:233:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "9364:53:2",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "9381:3:2"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "9404:5:2"
}
],
"functionName": {
"name": "cleanup_t_address",
"nodeType": "YulIdentifier",
"src": "9386:17:2"
},
"nodeType": "YulFunctionCall",
"src": "9386:24:2"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "9374:6:2"
},
"nodeType": "YulFunctionCall",
"src": "9374:37:2"
},
"nodeType": "YulExpressionStatement",
"src": "9374:37:2"
}
]
},
"name": "abi_encode_t_address_to_t_address_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "9352:5:2",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "9359:3:2",
"type": ""
}
],
"src": "9299:118:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "9488:53:2",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "9505:3:2"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "9528:5:2"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "9510:17:2"
},
"nodeType": "YulFunctionCall",
"src": "9510:24:2"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "9498:6:2"
},
"nodeType": "YulFunctionCall",
"src": "9498:37:2"
},
"nodeType": "YulExpressionStatement",
"src": "9498:37:2"
}
]
},
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "9476:5:2",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "9483:3:2",
"type": ""
}
],
"src": "9423:118:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "9701:288:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "9711:26:2",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "9723:9:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9734:2:2",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "9719:3:2"
},
"nodeType": "YulFunctionCall",
"src": "9719:18:2"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "9711:4:2"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "9791:6:2"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "9804:9:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9815:1:2",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "9800:3:2"
},
"nodeType": "YulFunctionCall",
"src": "9800:17:2"
}
],
"functionName": {
"name": "abi_encode_t_address_to_t_address_fromStack",
"nodeType": "YulIdentifier",
"src": "9747:43:2"
},
"nodeType": "YulFunctionCall",
"src": "9747:71:2"
},
"nodeType": "YulExpressionStatement",
"src": "9747:71:2"
},
{
"expression": {
"arguments": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "9872:6:2"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "9885:9:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9896:2:2",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "9881:3:2"
},
"nodeType": "YulFunctionCall",
"src": "9881:18:2"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulIdentifier",
"src": "9828:43:2"
},
"nodeType": "YulFunctionCall",
"src": "9828:72:2"
},
"nodeType": "YulExpressionStatement",
"src": "9828:72:2"
},
{
"expression": {
"arguments": [
{
"name": "value2",
"nodeType": "YulIdentifier",
"src": "9954:6:2"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "9967:9:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9978:2:2",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "9963:3:2"
},
"nodeType": "YulFunctionCall",
"src": "9963:18:2"
}
],
"functionName": {
"name": "abi_encode_t_bytes32_to_t_bytes32_fromStack",
"nodeType": "YulIdentifier",
"src": "9910:43:2"
},
"nodeType": "YulFunctionCall",
"src": "9910:72:2"
},
"nodeType": "YulExpressionStatement",
"src": "9910:72:2"
}
]
},
"name": "abi_encode_tuple_t_address_t_uint256_t_bytes32__to_t_address_t_uint256_t_bytes32__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "9657:9:2",
"type": ""
},
{
"name": "value2",
"nodeType": "YulTypedName",
"src": "9669:6:2",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "9677:6:2",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "9685:6:2",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "9696:4:2",
"type": ""
}
],
"src": "9547:442:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "10121:206:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "10131:26:2",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "10143:9:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10154:2:2",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "10139:3:2"
},
"nodeType": "YulFunctionCall",
"src": "10139:18:2"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "10131:4:2"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "10211:6:2"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "10224:9:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10235:1:2",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "10220:3:2"
},
"nodeType": "YulFunctionCall",
"src": "10220:17:2"
}
],
"functionName": {
"name": "abi_encode_t_address_to_t_address_fromStack",
"nodeType": "YulIdentifier",
"src": "10167:43:2"
},
"nodeType": "YulFunctionCall",
"src": "10167:71:2"
},
"nodeType": "YulExpressionStatement",
"src": "10167:71:2"
},
{
"expression": {
"arguments": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "10292:6:2"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "10305:9:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10316:2:2",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "10301:3:2"
},
"nodeType": "YulFunctionCall",
"src": "10301:18:2"
}
],
"functionName": {
"name": "abi_encode_t_address_to_t_address_fromStack",
"nodeType": "YulIdentifier",
"src": "10248:43:2"
},
"nodeType": "YulFunctionCall",
"src": "10248:72:2"
},
"nodeType": "YulExpressionStatement",
"src": "10248:72:2"
}
]
},
"name": "abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "10085:9:2",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "10097:6:2",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "10105:6:2",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "10116:4:2",
"type": ""
}
],
"src": "9995:332:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "10378:149:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "10388:25:2",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "10411:1:2"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "10393:17:2"
},
"nodeType": "YulFunctionCall",
"src": "10393:20:2"
},
"variableNames": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "10388:1:2"
}
]
},
{
"nodeType": "YulAssignment",
"src": "10422:25:2",
"value": {
"arguments": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "10445:1:2"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "10427:17:2"
},
"nodeType": "YulFunctionCall",
"src": "10427:20:2"
},
"variableNames": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "10422:1:2"
}
]
},
{
"nodeType": "YulAssignment",
"src": "10456:17:2",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "10468:1:2"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "10471:1:2"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "10464:3:2"
},
"nodeType": "YulFunctionCall",
"src": "10464:9:2"
},
"variableNames": [
{
"name": "diff",
"nodeType": "YulIdentifier",
"src": "10456:4:2"
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "10498:22:2",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x11",
"nodeType": "YulIdentifier",
"src": "10500:16:2"
},
"nodeType": "YulFunctionCall",
"src": "10500:18:2"
},
"nodeType": "YulExpressionStatement",
"src": "10500:18:2"
}
]
},
"condition": {
"arguments": [
{
"name": "diff",
"nodeType": "YulIdentifier",
"src": "10489:4:2"
},
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "10495:1:2"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "10486:2:2"
},
"nodeType": "YulFunctionCall",
"src": "10486:11:2"
},
"nodeType": "YulIf",
"src": "10483:37:2"
}
]
},
"name": "checked_sub_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "x",
"nodeType": "YulTypedName",
"src": "10364:1:2",
"type": ""
},
{
"name": "y",
"nodeType": "YulTypedName",
"src": "10367:1:2",
"type": ""
}
],
"returnVariables": [
{
"name": "diff",
"nodeType": "YulTypedName",
"src": "10373:4:2",
"type": ""
}
],
"src": "10333:194:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "10687:288:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "10697:26:2",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "10709:9:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10720:2:2",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "10705:3:2"
},
"nodeType": "YulFunctionCall",
"src": "10705:18:2"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "10697:4:2"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "10777:6:2"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "10790:9:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10801:1:2",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "10786:3:2"
},
"nodeType": "YulFunctionCall",
"src": "10786:17:2"
}
],
"functionName": {
"name": "abi_encode_t_address_to_t_address_fromStack",
"nodeType": "YulIdentifier",
"src": "10733:43:2"
},
"nodeType": "YulFunctionCall",
"src": "10733:71:2"
},
"nodeType": "YulExpressionStatement",
"src": "10733:71:2"
},
{
"expression": {
"arguments": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "10858:6:2"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "10871:9:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10882:2:2",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "10867:3:2"
},
"nodeType": "YulFunctionCall",
"src": "10867:18:2"
}
],
"functionName": {
"name": "abi_encode_t_address_to_t_address_fromStack",
"nodeType": "YulIdentifier",
"src": "10814:43:2"
},
"nodeType": "YulFunctionCall",
"src": "10814:72:2"
},
"nodeType": "YulExpressionStatement",
"src": "10814:72:2"
},
{
"expression": {
"arguments": [
{
"name": "value2",
"nodeType": "YulIdentifier",
"src": "10940:6:2"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "10953:9:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10964:2:2",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "10949:3:2"
},
"nodeType": "YulFunctionCall",
"src": "10949:18:2"
}
],
"functionName": {
"name": "abi_encode_t_address_to_t_address_fromStack",
"nodeType": "YulIdentifier",
"src": "10896:43:2"
},
"nodeType": "YulFunctionCall",
"src": "10896:72:2"
},
"nodeType": "YulExpressionStatement",
"src": "10896:72:2"
}
]
},
"name": "abi_encode_tuple_t_address_t_address_t_address__to_t_address_t_address_t_address__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "10643:9:2",
"type": ""
},
{
"name": "value2",
"nodeType": "YulTypedName",
"src": "10655:6:2",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "10663:6:2",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "10671:6:2",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "10682:4:2",
"type": ""
}
],
"src": "10533:442:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "11135:288:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "11145:26:2",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "11157:9:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11168:2:2",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "11153:3:2"
},
"nodeType": "YulFunctionCall",
"src": "11153:18:2"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "11145:4:2"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "11225:6:2"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "11238:9:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11249:1:2",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "11234:3:2"
},
"nodeType": "YulFunctionCall",
"src": "11234:17:2"
}
],
"functionName": {
"name": "abi_encode_t_address_to_t_address_fromStack",
"nodeType": "YulIdentifier",
"src": "11181:43:2"
},
"nodeType": "YulFunctionCall",
"src": "11181:71:2"
},
"nodeType": "YulExpressionStatement",
"src": "11181:71:2"
},
{
"expression": {
"arguments": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "11306:6:2"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "11319:9:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11330:2:2",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "11315:3:2"
},
"nodeType": "YulFunctionCall",
"src": "11315:18:2"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulIdentifier",
"src": "11262:43:2"
},
"nodeType": "YulFunctionCall",
"src": "11262:72:2"
},
"nodeType": "YulExpressionStatement",
"src": "11262:72:2"
},
{
"expression": {
"arguments": [
{
"name": "value2",
"nodeType": "YulIdentifier",
"src": "11388:6:2"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "11401:9:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11412:2:2",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "11397:3:2"
},
"nodeType": "YulFunctionCall",
"src": "11397:18:2"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulIdentifier",
"src": "11344:43:2"
},
"nodeType": "YulFunctionCall",
"src": "11344:72:2"
},
"nodeType": "YulExpressionStatement",
"src": "11344:72:2"
}
]
},
"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": "11091:9:2",
"type": ""
},
{
"name": "value2",
"nodeType": "YulTypedName",
"src": "11103:6:2",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "11111:6:2",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "11119:6:2",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "11130:4:2",
"type": ""
}
],
"src": "10981:442:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "11472:79:2",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "11529:16:2",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11538:1:2",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11541:1:2",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "11531:6:2"
},
"nodeType": "YulFunctionCall",
"src": "11531:12:2"
},
"nodeType": "YulExpressionStatement",
"src": "11531:12:2"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "11495:5:2"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "11520:5:2"
}
],
"functionName": {
"name": "cleanup_t_bytes32",
"nodeType": "YulIdentifier",
"src": "11502:17:2"
},
"nodeType": "YulFunctionCall",
"src": "11502:24:2"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "11492:2:2"
},
"nodeType": "YulFunctionCall",
"src": "11492:35:2"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "11485:6:2"
},
"nodeType": "YulFunctionCall",
"src": "11485:43:2"
},
"nodeType": "YulIf",
"src": "11482:63:2"
}
]
},
"name": "validator_revert_t_bytes32",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "11465:5:2",
"type": ""
}
],
"src": "11429:122:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "11620:80:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "11630:22:2",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "11645:6:2"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "11639:5:2"
},
"nodeType": "YulFunctionCall",
"src": "11639:13:2"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "11630:5:2"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "11688:5:2"
}
],
"functionName": {
"name": "validator_revert_t_bytes32",
"nodeType": "YulIdentifier",
"src": "11661:26:2"
},
"nodeType": "YulFunctionCall",
"src": "11661:33:2"
},
"nodeType": "YulExpressionStatement",
"src": "11661:33:2"
}
]
},
"name": "abi_decode_t_bytes32_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "11598:6:2",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "11606:3:2",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "11614:5:2",
"type": ""
}
],
"src": "11557:143:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "11783:274:2",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "11829:83:2",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulIdentifier",
"src": "11831:77:2"
},
"nodeType": "YulFunctionCall",
"src": "11831:79:2"
},
"nodeType": "YulExpressionStatement",
"src": "11831:79:2"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "11804:7:2"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "11813:9:2"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "11800:3:2"
},
"nodeType": "YulFunctionCall",
"src": "11800:23:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11825:2:2",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "11796:3:2"
},
"nodeType": "YulFunctionCall",
"src": "11796:32:2"
},
"nodeType": "YulIf",
"src": "11793:119:2"
},
{
"nodeType": "YulBlock",
"src": "11922:128:2",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "11937:15:2",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "11951:1:2",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "11941:6:2",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "11966:74:2",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "12012:9:2"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "12023:6:2"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "12008:3:2"
},
"nodeType": "YulFunctionCall",
"src": "12008:22:2"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "12032:7:2"
}
],
"functionName": {
"name": "abi_decode_t_bytes32_fromMemory",
"nodeType": "YulIdentifier",
"src": "11976:31:2"
},
"nodeType": "YulFunctionCall",
"src": "11976:64:2"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "11966:6:2"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_bytes32_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "11753:9:2",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "11764:7:2",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "11776:6:2",
"type": ""
}
],
"src": "11706:351:2"
}
]
},
"contents": "{\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() {\n revert(0, 0)\n }\n\n function round_up_to_mul_of_32(value) -> result {\n result := and(add(value, 31), not(31))\n }\n\n function panic_error_0x41() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n\n function finalize_allocation(memPtr, size) {\n let newFreePtr := add(memPtr, round_up_to_mul_of_32(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 allocate_memory(size) -> memPtr {\n memPtr := allocate_unbounded()\n finalize_allocation(memPtr, size)\n }\n\n function array_allocation_size_t_array$_t_address_$dyn_memory_ptr(length) -> size {\n // Make sure we can allocate memory without overflow\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n\n size := mul(length, 0x20)\n\n // add length slot\n size := add(size, 0x20)\n\n }\n\n function revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef() {\n revert(0, 0)\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\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 abi_decode_t_address(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_address(value)\n }\n\n // address[]\n function abi_decode_available_length_t_array$_t_address_$dyn_memory_ptr(offset, length, end) -> array {\n array := allocate_memory(array_allocation_size_t_array$_t_address_$dyn_memory_ptr(length))\n let dst := array\n\n mstore(array, length)\n dst := add(array, 0x20)\n\n let srcEnd := add(offset, mul(length, 0x20))\n if gt(srcEnd, end) {\n revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef()\n }\n for { let src := offset } lt(src, srcEnd) { src := add(src, 0x20) }\n {\n\n let elementPos := src\n\n mstore(dst, abi_decode_t_address(elementPos, end))\n dst := add(dst, 0x20)\n }\n }\n\n // address[]\n function abi_decode_t_array$_t_address_$dyn_memory_ptr(offset, end) -> array {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n let length := calldataload(offset)\n array := abi_decode_available_length_t_array$_t_address_$dyn_memory_ptr(add(offset, 0x20), length, end)\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function validator_revert_t_uint256(value) {\n if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\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_array$_t_address_$dyn_memory_ptrt_uint256t_uint256t_uint256(headStart, dataEnd) -> value0, value1, value2, value3 {\n if slt(sub(dataEnd, headStart), 128) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := calldataload(add(headStart, 0))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value0 := abi_decode_t_array$_t_address_$dyn_memory_ptr(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 let offset := 64\n\n value2 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 96\n\n value3 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_bytes32(value) -> cleaned {\n cleaned := value\n }\n\n function abi_encode_t_bytes32_to_t_bytes32_fromStack(value, pos) {\n mstore(pos, cleanup_t_bytes32(value))\n }\n\n function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_bytes32_to_t_bytes32_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_decode_tuple_t_array$_t_address_$dyn_memory_ptrt_uint256t_uint256(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 96) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := calldataload(add(headStart, 0))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value0 := abi_decode_t_array$_t_address_$dyn_memory_ptr(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 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_uint256t_uint256(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 96) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\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 let offset := 64\n\n value2 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function array_length_t_array$_t_bytes32_$dyn_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_storeLengthForEncoding_t_array$_t_bytes32_$dyn_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function array_dataslot_t_array$_t_bytes32_$dyn_memory_ptr(ptr) -> data {\n data := ptr\n\n data := add(ptr, 0x20)\n\n }\n\n function abi_encode_t_bytes32_to_t_bytes32(value, pos) {\n mstore(pos, cleanup_t_bytes32(value))\n }\n\n function abi_encodeUpdatedPos_t_bytes32_to_t_bytes32(value0, pos) -> updatedPos {\n abi_encode_t_bytes32_to_t_bytes32(value0, pos)\n updatedPos := add(pos, 0x20)\n }\n\n function array_nextElement_t_array$_t_bytes32_$dyn_memory_ptr(ptr) -> next {\n next := add(ptr, 0x20)\n }\n\n // bytes32[] -> bytes32[]\n function abi_encode_t_array$_t_bytes32_$dyn_memory_ptr_to_t_array$_t_bytes32_$dyn_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_array$_t_bytes32_$dyn_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_array$_t_bytes32_$dyn_memory_ptr_fromStack(pos, length)\n let baseRef := array_dataslot_t_array$_t_bytes32_$dyn_memory_ptr(value)\n let srcPtr := baseRef\n for { let i := 0 } lt(i, length) { i := add(i, 1) }\n {\n let elementValue0 := mload(srcPtr)\n pos := abi_encodeUpdatedPos_t_bytes32_to_t_bytes32(elementValue0, pos)\n srcPtr := array_nextElement_t_array$_t_bytes32_$dyn_memory_ptr(srcPtr)\n }\n end := pos\n }\n\n function abi_encode_tuple_t_array$_t_bytes32_$dyn_memory_ptr__to_t_array$_t_bytes32_$dyn_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_array$_t_bytes32_$dyn_memory_ptr_to_t_array$_t_bytes32_$dyn_memory_ptr_fromStack(value0, tail)\n\n }\n\n function panic_error_0x32() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n\n function panic_error_0x11() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n\n function checked_add_t_uint256(x, y) -> sum {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n sum := add(x, y)\n\n if gt(x, sum) { panic_error_0x11() }\n\n }\n\n function increment_t_uint256(value) -> ret {\n value := cleanup_t_uint256(value)\n if eq(value, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) { panic_error_0x11() }\n ret := add(value, 1)\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_uint256_to_t_uint256_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\n }\n\n function abi_encode_tuple_t_address_t_uint256_t_bytes32__to_t_address_t_uint256_t_bytes32__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_bytes32_to_t_bytes32_fromStack(value2, add(headStart, 64))\n\n }\n\n function abi_encode_tuple_t_address_t_address__to_t_address_t_address__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_address_to_t_address_fromStack(value1, add(headStart, 32))\n\n }\n\n function checked_sub_t_uint256(x, y) -> diff {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n diff := sub(x, y)\n\n if gt(diff, x) { panic_error_0x11() }\n\n }\n\n function abi_encode_tuple_t_address_t_address_t_address__to_t_address_t_address_t_address__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_address_to_t_address_fromStack(value2, add(headStart, 64))\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 validator_revert_t_bytes32(value) {\n if iszero(eq(value, cleanup_t_bytes32(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_bytes32_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_bytes32(value)\n }\n\n function abi_decode_tuple_t_bytes32_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes32_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n}\n",
"id": 2,
"language": "Yul",
"name": "#utility.yul"
}
],
"immutableReferences": {},
"linkReferences": {},
"object": "608060405234801561001057600080fd5b506004361061004c5760003560e01c80637ef79f8c1461005157806384dd0d1214610081578063b31825bf146100b1578063d56154ab146100e1575b600080fd5b61006b6004803603810190610066919061077a565b610111565b6040516100789190610816565b60405180910390f35b61009b60048036038101906100969190610831565b6102b2565b6040516100a89190610816565b60405180910390f35b6100cb60048036038101906100c691906108a0565b610483565b6040516100d89190610816565b60405180910390f35b6100fb60048036038101906100f69190610831565b61050c565b60405161010891906109b1565b60405180910390f35b60008061011f86868661050c565b905060005b8151811015610184576001600080848481518110610145576101446109d3565b5b60200260200101518152602001908152602001600020600082825461016a9190610a31565b92505081905550808061017c90610a65565b915050610124565b50600080600090505b82518110156101f05760008382815181106101ab576101aa6109d3565b5b602002602001015190506000806000838152602001908152602001600020549050838111156101db578093508195505b505080806101e890610a65565b91505061018d565b5060005b825181101561025e57600080858360208110610213576102126109d3565b5b1a60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009055808061025690610a65565b9150506101f4565b50838110156102a8573081846040517f22bcb23b00000000000000000000000000000000000000000000000000000000815260040161029f93929190610acb565b60405180910390fd5b5050949350505050565b6000806102c085858561050c565b90506000816000815181106102d8576102d76109d3565b5b602002602001015190506000801b8103610346573086600081518110610301576103006109d3565b5b60200260200101516040517f2a0c203900000000000000000000000000000000000000000000000000000000815260040161033d929190610b02565b60405180910390fd5b600080600190505b83518110156104755783818151811061036a576103696109d3565b5b602002602001015191506000801b82036103d75730888281518110610392576103916109d3565b5b60200260200101516040517f2a0c20390000000000000000000000000000000000000000000000000000000081526004016103ce929190610b02565b60405180910390fd5b82821461045f5730886001836103ed9190610b2b565b815181106103fe576103fd6109d3565b5b6020026020010151898381518110610419576104186109d3565b5b60200260200101516040517fdbed4b2700000000000000000000000000000000000000000000000000000000815260040161045693929190610b5f565b60405180910390fd5b819250808061046d90610a65565b91505061034e565b508093505050509392505050565b60008373ffffffffffffffffffffffffffffffffffffffff1663b31825bf8585856040518463ffffffff1660e01b81526004016104c293929190610b96565b602060405180830381865afa1580156104df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105039190610bf9565b90509392505050565b606060005b84518110156105715761053f8582815181106105305761052f6109d3565b5b60200260200101518585610483565b828281518110610552576105516109d3565b5b602002602001018181525050808061056990610a65565b915050610511565b509392505050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6105db82610592565b810181811067ffffffffffffffff821117156105fa576105f96105a3565b5b80604052505050565b600061060d610579565b905061061982826105d2565b919050565b600067ffffffffffffffff821115610639576106386105a3565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061067a8261064f565b9050919050565b61068a8161066f565b811461069557600080fd5b50565b6000813590506106a781610681565b92915050565b60006106c06106bb8461061e565b610603565b905080838252602082019050602084028301858111156106e3576106e261064a565b5b835b8181101561070c57806106f88882610698565b8452602084019350506020810190506106e5565b5050509392505050565b600082601f83011261072b5761072a61058d565b5b813561073b8482602086016106ad565b91505092915050565b6000819050919050565b61075781610744565b811461076257600080fd5b50565b6000813590506107748161074e565b92915050565b6000806000806080858703121561079457610793610583565b5b600085013567ffffffffffffffff8111156107b2576107b1610588565b5b6107be87828801610716565b94505060206107cf87828801610765565b93505060406107e087828801610765565b92505060606107f187828801610765565b91505092959194509250565b6000819050919050565b610810816107fd565b82525050565b600060208201905061082b6000830184610807565b92915050565b60008060006060848603121561084a57610849610583565b5b600084013567ffffffffffffffff81111561086857610867610588565b5b61087486828701610716565b935050602061088586828701610765565b925050604061089686828701610765565b9150509250925092565b6000806000606084860312156108b9576108b8610583565b5b60006108c786828701610698565b93505060206108d886828701610765565b92505060406108e986828701610765565b9150509250925092565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b610928816107fd565b82525050565b600061093a838361091f565b60208301905092915050565b6000602082019050919050565b600061095e826108f3565b61096881856108fe565b93506109738361090f565b8060005b838110156109a457815161098b888261092e565b975061099683610946565b925050600181019050610977565b5085935050505092915050565b600060208201905081810360008301526109cb8184610953565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610a3c82610744565b9150610a4783610744565b9250828201905080821115610a5f57610a5e610a02565b5b92915050565b6000610a7082610744565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610aa257610aa1610a02565b5b600182019050919050565b610ab68161066f565b82525050565b610ac581610744565b82525050565b6000606082019050610ae06000830186610aad565b610aed6020830185610abc565b610afa6040830184610807565b949350505050565b6000604082019050610b176000830185610aad565b610b246020830184610aad565b9392505050565b6000610b3682610744565b9150610b4183610744565b9250828203905081811115610b5957610b58610a02565b5b92915050565b6000606082019050610b746000830186610aad565b610b816020830185610aad565b610b8e6040830184610aad565b949350505050565b6000606082019050610bab6000830186610aad565b610bb86020830185610abc565b610bc56040830184610abc565b949350505050565b610bd6816107fd565b8114610be157600080fd5b50565b600081519050610bf381610bcd565b92915050565b600060208284031215610c0f57610c0e610583565b5b6000610c1d84828501610be4565b9150509291505056fea26469706673582212207d832c09cf02fc4ffcfa4e28eed5e6ebf6b2feb51b095442303cc0545277b42c64736f6c63430008110033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7EF79F8C EQ PUSH2 0x51 JUMPI DUP1 PUSH4 0x84DD0D12 EQ PUSH2 0x81 JUMPI DUP1 PUSH4 0xB31825BF EQ PUSH2 0xB1 JUMPI DUP1 PUSH4 0xD56154AB EQ PUSH2 0xE1 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x66 SWAP2 SWAP1 PUSH2 0x77A JUMP JUMPDEST PUSH2 0x111 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x78 SWAP2 SWAP1 PUSH2 0x816 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x9B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x96 SWAP2 SWAP1 PUSH2 0x831 JUMP JUMPDEST PUSH2 0x2B2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA8 SWAP2 SWAP1 PUSH2 0x816 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xCB PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xC6 SWAP2 SWAP1 PUSH2 0x8A0 JUMP JUMPDEST PUSH2 0x483 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xD8 SWAP2 SWAP1 PUSH2 0x816 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xFB PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xF6 SWAP2 SWAP1 PUSH2 0x831 JUMP JUMPDEST PUSH2 0x50C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x108 SWAP2 SWAP1 PUSH2 0x9B1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x11F DUP7 DUP7 DUP7 PUSH2 0x50C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x184 JUMPI PUSH1 0x1 PUSH1 0x0 DUP1 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x145 JUMPI PUSH2 0x144 PUSH2 0x9D3 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x16A SWAP2 SWAP1 PUSH2 0xA31 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP1 DUP1 PUSH2 0x17C SWAP1 PUSH2 0xA65 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x124 JUMP JUMPDEST POP PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 POP JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x1F0 JUMPI PUSH1 0x0 DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1AB JUMPI PUSH2 0x1AA PUSH2 0x9D3 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP DUP4 DUP2 GT ISZERO PUSH2 0x1DB JUMPI DUP1 SWAP4 POP DUP2 SWAP6 POP JUMPDEST POP POP DUP1 DUP1 PUSH2 0x1E8 SWAP1 PUSH2 0xA65 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x18D JUMP JUMPDEST POP PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x25E JUMPI PUSH1 0x0 DUP1 DUP6 DUP4 PUSH1 0x20 DUP2 LT PUSH2 0x213 JUMPI PUSH2 0x212 PUSH2 0x9D3 JUMP JUMPDEST JUMPDEST BYTE PUSH1 0xF8 SHL PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SSTORE DUP1 DUP1 PUSH2 0x256 SWAP1 PUSH2 0xA65 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x1F4 JUMP JUMPDEST POP DUP4 DUP2 LT ISZERO PUSH2 0x2A8 JUMPI ADDRESS DUP2 DUP5 PUSH1 0x40 MLOAD PUSH32 0x22BCB23B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x29F SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xACB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2C0 DUP6 DUP6 DUP6 PUSH2 0x50C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x2D8 JUMPI PUSH2 0x2D7 PUSH2 0x9D3 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP1 SHL DUP2 SUB PUSH2 0x346 JUMPI ADDRESS DUP7 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x301 JUMPI PUSH2 0x300 PUSH2 0x9D3 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH32 0x2A0C203900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x33D SWAP3 SWAP2 SWAP1 PUSH2 0xB02 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 SWAP1 POP JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x475 JUMPI DUP4 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x36A JUMPI PUSH2 0x369 PUSH2 0x9D3 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP2 POP PUSH1 0x0 DUP1 SHL DUP3 SUB PUSH2 0x3D7 JUMPI ADDRESS DUP9 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x392 JUMPI PUSH2 0x391 PUSH2 0x9D3 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH32 0x2A0C203900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3CE SWAP3 SWAP2 SWAP1 PUSH2 0xB02 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 DUP3 EQ PUSH2 0x45F JUMPI ADDRESS DUP9 PUSH1 0x1 DUP4 PUSH2 0x3ED SWAP2 SWAP1 PUSH2 0xB2B JUMP JUMPDEST DUP2 MLOAD DUP2 LT PUSH2 0x3FE JUMPI PUSH2 0x3FD PUSH2 0x9D3 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP10 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x419 JUMPI PUSH2 0x418 PUSH2 0x9D3 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH32 0xDBED4B2700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x456 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xB5F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 SWAP3 POP DUP1 DUP1 PUSH2 0x46D SWAP1 PUSH2 0xA65 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x34E JUMP JUMPDEST POP DUP1 SWAP4 POP POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xB31825BF DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C2 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xB96 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4DF 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 0x503 SWAP2 SWAP1 PUSH2 0xBF9 JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x571 JUMPI PUSH2 0x53F DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x530 JUMPI PUSH2 0x52F PUSH2 0x9D3 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP6 DUP6 PUSH2 0x483 JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x552 JUMPI PUSH2 0x551 PUSH2 0x9D3 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP DUP1 DUP1 PUSH2 0x569 SWAP1 PUSH2 0xA65 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x511 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0x5DB DUP3 PUSH2 0x592 JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x5FA JUMPI PUSH2 0x5F9 PUSH2 0x5A3 JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x60D PUSH2 0x579 JUMP JUMPDEST SWAP1 POP PUSH2 0x619 DUP3 DUP3 PUSH2 0x5D2 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x639 JUMPI PUSH2 0x638 PUSH2 0x5A3 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP3 MUL SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x67A DUP3 PUSH2 0x64F JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x68A DUP2 PUSH2 0x66F JUMP JUMPDEST DUP2 EQ PUSH2 0x695 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x6A7 DUP2 PUSH2 0x681 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6C0 PUSH2 0x6BB DUP5 PUSH2 0x61E JUMP JUMPDEST PUSH2 0x603 JUMP JUMPDEST SWAP1 POP DUP1 DUP4 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0x20 DUP5 MUL DUP4 ADD DUP6 DUP2 GT ISZERO PUSH2 0x6E3 JUMPI PUSH2 0x6E2 PUSH2 0x64A JUMP JUMPDEST JUMPDEST DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x70C JUMPI DUP1 PUSH2 0x6F8 DUP9 DUP3 PUSH2 0x698 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x6E5 JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x72B JUMPI PUSH2 0x72A PUSH2 0x58D JUMP JUMPDEST JUMPDEST DUP2 CALLDATALOAD PUSH2 0x73B DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x6AD JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x757 DUP2 PUSH2 0x744 JUMP JUMPDEST DUP2 EQ PUSH2 0x762 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x774 DUP2 PUSH2 0x74E JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x794 JUMPI PUSH2 0x793 PUSH2 0x583 JUMP JUMPDEST JUMPDEST PUSH1 0x0 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x7B2 JUMPI PUSH2 0x7B1 PUSH2 0x588 JUMP JUMPDEST JUMPDEST PUSH2 0x7BE DUP8 DUP3 DUP9 ADD PUSH2 0x716 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 PUSH2 0x7CF DUP8 DUP3 DUP9 ADD PUSH2 0x765 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 PUSH2 0x7E0 DUP8 DUP3 DUP9 ADD PUSH2 0x765 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 PUSH2 0x7F1 DUP8 DUP3 DUP9 ADD PUSH2 0x765 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x810 DUP2 PUSH2 0x7FD JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x82B PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x807 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x84A JUMPI PUSH2 0x849 PUSH2 0x583 JUMP JUMPDEST JUMPDEST PUSH1 0x0 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x868 JUMPI PUSH2 0x867 PUSH2 0x588 JUMP JUMPDEST JUMPDEST PUSH2 0x874 DUP7 DUP3 DUP8 ADD PUSH2 0x716 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x885 DUP7 DUP3 DUP8 ADD PUSH2 0x765 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x896 DUP7 DUP3 DUP8 ADD PUSH2 0x765 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x8B9 JUMPI PUSH2 0x8B8 PUSH2 0x583 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x8C7 DUP7 DUP3 DUP8 ADD PUSH2 0x698 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x8D8 DUP7 DUP3 DUP8 ADD PUSH2 0x765 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x8E9 DUP7 DUP3 DUP8 ADD PUSH2 0x765 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 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 DUP2 SWAP1 POP PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x928 DUP2 PUSH2 0x7FD JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x93A DUP4 DUP4 PUSH2 0x91F JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x95E DUP3 PUSH2 0x8F3 JUMP JUMPDEST PUSH2 0x968 DUP2 DUP6 PUSH2 0x8FE JUMP JUMPDEST SWAP4 POP PUSH2 0x973 DUP4 PUSH2 0x90F JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x9A4 JUMPI DUP2 MLOAD PUSH2 0x98B DUP9 DUP3 PUSH2 0x92E JUMP JUMPDEST SWAP8 POP PUSH2 0x996 DUP4 PUSH2 0x946 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x977 JUMP JUMPDEST POP DUP6 SWAP4 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x9CB DUP2 DUP5 PUSH2 0x953 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xA3C DUP3 PUSH2 0x744 JUMP JUMPDEST SWAP2 POP PUSH2 0xA47 DUP4 PUSH2 0x744 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 ADD SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0xA5F JUMPI PUSH2 0xA5E PUSH2 0xA02 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA70 DUP3 PUSH2 0x744 JUMP JUMPDEST SWAP2 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 SUB PUSH2 0xAA2 JUMPI PUSH2 0xAA1 PUSH2 0xA02 JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xAB6 DUP2 PUSH2 0x66F JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0xAC5 DUP2 PUSH2 0x744 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0xAE0 PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0xAAD JUMP JUMPDEST PUSH2 0xAED PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0xABC JUMP JUMPDEST PUSH2 0xAFA PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x807 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0xB17 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0xAAD JUMP JUMPDEST PUSH2 0xB24 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0xAAD JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB36 DUP3 PUSH2 0x744 JUMP JUMPDEST SWAP2 POP PUSH2 0xB41 DUP4 PUSH2 0x744 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 SUB SWAP1 POP DUP2 DUP2 GT ISZERO PUSH2 0xB59 JUMPI PUSH2 0xB58 PUSH2 0xA02 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0xB74 PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0xAAD JUMP JUMPDEST PUSH2 0xB81 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0xAAD JUMP JUMPDEST PUSH2 0xB8E PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0xAAD JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0xBAB PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0xAAD JUMP JUMPDEST PUSH2 0xBB8 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0xABC JUMP JUMPDEST PUSH2 0xBC5 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0xABC JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0xBD6 DUP2 PUSH2 0x7FD JUMP JUMPDEST DUP2 EQ PUSH2 0xBE1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0xBF3 DUP2 PUSH2 0xBCD JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xC0F JUMPI PUSH2 0xC0E PUSH2 0x583 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xC1D DUP5 DUP3 DUP6 ADD PUSH2 0xBE4 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH30 0x832C09CF02FC4FFCFA4E28EED5E6EBF6B2FEB51B095442303CC0545277B4 0x2C PUSH5 0x736F6C6343 STOP ADDMOD GT STOP CALLER ",
"sourceMap": "403:4961:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4368:994;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2783:890;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1102:277;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1953:353;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4368:994;4542:19;4573:29;4605:59;4627:14;4643:7;4652:11;4605:21;:59::i;:::-;4573:91;;4679:9;4674:103;4698:12;:19;4694:1;:23;4674:103;;;4765:1;4738:6;:23;4745:12;4758:1;4745:15;;;;;;;;:::i;:::-;;;;;;;;4738:23;;;;;;;;;;;;:28;;;;;;;:::i;:::-;;;;;;;;4719:3;;;;;:::i;:::-;;;;4674:103;;;;4786:20;4821:9;4833:1;4821:13;;4816:323;4840:12;:19;4836:1;:23;4816:323;;;4880:21;4904:12;4917:1;4904:15;;;;;;;;:::i;:::-;;;;;;;;4880:39;;4933:20;4956:6;:21;4963:13;4956:21;;;;;;;;;;;;4933:44;;5010:12;4995;:27;4991:138;;;5057:12;5042:27;;5101:13;5087:27;;4991:138;4866:273;;4861:3;;;;;:::i;:::-;;;;4816:323;;;;5153:9;5148:104;5172:12;:19;5168:1;:23;5148:104;;;5219:6;:22;5226:11;5238:1;5226:14;;;;;;;:::i;:::-;;;;;5219:22;;;;;;;;;;;;;;5212:29;;;5193:3;;;;;:::i;:::-;;;;5148:104;;;;5280:9;5265:12;:24;5261:94;;;5322:4;5329:12;5343:11;5298:57;;;;;;;;;;;;;:::i;:::-;;;;;;;;5261:94;4563:799;;4368:994;;;;;;:::o;2783:890::-;2930:19;2961:29;2993:59;3015:14;3031:7;3040:11;2993:21;:59::i;:::-;2961:91;;3062:22;3087:12;3100:1;3087:15;;;;;;;;:::i;:::-;;;;;;;;3062:40;;3142:1;3134:10;;3116:14;:28;3112:93;;3180:4;3187:14;3202:1;3187:17;;;;;;;;:::i;:::-;;;;;;;;3153:52;;;;;;;;;;;;:::i;:::-;;;;;;;;3112:93;3215:21;3251:9;3263:1;3251:13;;3246:384;3270:12;:19;3266:1;:23;3246:384;;;3326:12;3339:1;3326:15;;;;;;;;:::i;:::-;;;;;;;;3310:31;;3384:1;3376:10;;3359:13;:27;3355:92;;3422:4;3429:14;3444:1;3429:17;;;;;;;;:::i;:::-;;;;;;;;3395:52;;;;;;;;;;;;:::i;:::-;;;;;;;;3355:92;3482:14;3465:13;:31;3461:114;;3529:4;3536:14;3553:1;3551;:3;;;;:::i;:::-;3536:19;;;;;;;;:::i;:::-;;;;;;;;3557:14;3572:1;3557:17;;;;;;;;:::i;:::-;;;;;;;;3505:70;;;;;;;;;;;;;:::i;:::-;;;;;;;;3461:114;3606:13;3589:30;;3291:3;;;;;:::i;:::-;;;;3246:384;;;;3653:13;3639:27;;2951:722;;;2783:890;;;;;:::o;1102:277::-;1241:19;1301:13;1286:49;;;1336:13;1351:7;1360:11;1286:86;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1272:100;;1102:277;;;;;:::o;1953:353::-;2104:29;2150:9;2145:155;2169:14;:21;2165:1;:25;2145:155;;;2229:60;2249:14;2264:1;2249:17;;;;;;;;:::i;:::-;;;;;;;;2268:7;2277:11;2229:19;:60::i;:::-;2211:12;2224:1;2211:15;;;;;;;;:::i;:::-;;;;;;;:78;;;;;2192:3;;;;;:::i;:::-;;;;2145:155;;;;1953:353;;;;;:::o;7:75:2:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:117;443:1;440;433:12;457:102;498:6;549:2;545:7;540:2;533:5;529:14;525:28;515:38;;457:102;;;:::o;565:180::-;613:77;610:1;603:88;710:4;707:1;700:15;734:4;731:1;724:15;751:281;834:27;856:4;834:27;:::i;:::-;826:6;822:40;964:6;952:10;949:22;928:18;916:10;913:34;910:62;907:88;;;975:18;;:::i;:::-;907:88;1015:10;1011:2;1004:22;794:238;751:281;;:::o;1038:129::-;1072:6;1099:20;;:::i;:::-;1089:30;;1128:33;1156:4;1148:6;1128:33;:::i;:::-;1038:129;;;:::o;1173:311::-;1250:4;1340:18;1332:6;1329:30;1326:56;;;1362:18;;:::i;:::-;1326:56;1412:4;1404:6;1400:17;1392:25;;1472:4;1466;1462:15;1454:23;;1173:311;;;:::o;1490:117::-;1599:1;1596;1589:12;1613:126;1650:7;1690:42;1683:5;1679:54;1668:65;;1613:126;;;:::o;1745:96::-;1782:7;1811:24;1829:5;1811:24;:::i;:::-;1800:35;;1745:96;;;:::o;1847:122::-;1920:24;1938:5;1920:24;:::i;:::-;1913:5;1910:35;1900:63;;1959:1;1956;1949:12;1900:63;1847:122;:::o;1975:139::-;2021:5;2059:6;2046:20;2037:29;;2075:33;2102:5;2075:33;:::i;:::-;1975:139;;;;:::o;2137:710::-;2233:5;2258:81;2274:64;2331:6;2274:64;:::i;:::-;2258:81;:::i;:::-;2249:90;;2359:5;2388:6;2381:5;2374:21;2422:4;2415:5;2411:16;2404:23;;2475:4;2467:6;2463:17;2455:6;2451:30;2504:3;2496:6;2493:15;2490:122;;;2523:79;;:::i;:::-;2490:122;2638:6;2621:220;2655:6;2650:3;2647:15;2621:220;;;2730:3;2759:37;2792:3;2780:10;2759:37;:::i;:::-;2754:3;2747:50;2826:4;2821:3;2817:14;2810:21;;2697:144;2681:4;2676:3;2672:14;2665:21;;2621:220;;;2625:21;2239:608;;2137:710;;;;;:::o;2870:370::-;2941:5;2990:3;2983:4;2975:6;2971:17;2967:27;2957:122;;2998:79;;:::i;:::-;2957:122;3115:6;3102:20;3140:94;3230:3;3222:6;3215:4;3207:6;3203:17;3140:94;:::i;:::-;3131:103;;2947:293;2870:370;;;;:::o;3246:77::-;3283:7;3312:5;3301:16;;3246:77;;;:::o;3329:122::-;3402:24;3420:5;3402:24;:::i;:::-;3395:5;3392:35;3382:63;;3441:1;3438;3431:12;3382:63;3329:122;:::o;3457:139::-;3503:5;3541:6;3528:20;3519:29;;3557:33;3584:5;3557:33;:::i;:::-;3457:139;;;;:::o;3602:975::-;3713:6;3721;3729;3737;3786:3;3774:9;3765:7;3761:23;3757:33;3754:120;;;3793:79;;:::i;:::-;3754:120;3941:1;3930:9;3926:17;3913:31;3971:18;3963:6;3960:30;3957:117;;;3993:79;;:::i;:::-;3957:117;4098:78;4168:7;4159:6;4148:9;4144:22;4098:78;:::i;:::-;4088:88;;3884:302;4225:2;4251:53;4296:7;4287:6;4276:9;4272:22;4251:53;:::i;:::-;4241:63;;4196:118;4353:2;4379:53;4424:7;4415:6;4404:9;4400:22;4379:53;:::i;:::-;4369:63;;4324:118;4481:2;4507:53;4552:7;4543:6;4532:9;4528:22;4507:53;:::i;:::-;4497:63;;4452:118;3602:975;;;;;;;:::o;4583:77::-;4620:7;4649:5;4638:16;;4583:77;;;:::o;4666:118::-;4753:24;4771:5;4753:24;:::i;:::-;4748:3;4741:37;4666:118;;:::o;4790:222::-;4883:4;4921:2;4910:9;4906:18;4898:26;;4934:71;5002:1;4991:9;4987:17;4978:6;4934:71;:::i;:::-;4790:222;;;;:::o;5018:829::-;5120:6;5128;5136;5185:2;5173:9;5164:7;5160:23;5156:32;5153:119;;;5191:79;;:::i;:::-;5153:119;5339:1;5328:9;5324:17;5311:31;5369:18;5361:6;5358:30;5355:117;;;5391:79;;:::i;:::-;5355:117;5496:78;5566:7;5557:6;5546:9;5542:22;5496:78;:::i;:::-;5486:88;;5282:302;5623:2;5649:53;5694:7;5685:6;5674:9;5670:22;5649:53;:::i;:::-;5639:63;;5594:118;5751:2;5777:53;5822:7;5813:6;5802:9;5798:22;5777:53;:::i;:::-;5767:63;;5722:118;5018:829;;;;;:::o;5853:619::-;5930:6;5938;5946;5995:2;5983:9;5974:7;5970:23;5966:32;5963:119;;;6001:79;;:::i;:::-;5963:119;6121:1;6146:53;6191:7;6182:6;6171:9;6167:22;6146:53;:::i;:::-;6136:63;;6092:117;6248:2;6274:53;6319:7;6310:6;6299:9;6295:22;6274:53;:::i;:::-;6264:63;;6219:118;6376:2;6402:53;6447:7;6438:6;6427:9;6423:22;6402:53;:::i;:::-;6392:63;;6347:118;5853:619;;;;;:::o;6478:114::-;6545:6;6579:5;6573:12;6563:22;;6478:114;;;:::o;6598:184::-;6697:11;6731:6;6726:3;6719:19;6771:4;6766:3;6762:14;6747:29;;6598:184;;;;:::o;6788:132::-;6855:4;6878:3;6870:11;;6908:4;6903:3;6899:14;6891:22;;6788:132;;;:::o;6926:108::-;7003:24;7021:5;7003:24;:::i;:::-;6998:3;6991:37;6926:108;;:::o;7040:179::-;7109:10;7130:46;7172:3;7164:6;7130:46;:::i;:::-;7208:4;7203:3;7199:14;7185:28;;7040:179;;;;:::o;7225:113::-;7295:4;7327;7322:3;7318:14;7310:22;;7225:113;;;:::o;7374:732::-;7493:3;7522:54;7570:5;7522:54;:::i;:::-;7592:86;7671:6;7666:3;7592:86;:::i;:::-;7585:93;;7702:56;7752:5;7702:56;:::i;:::-;7781:7;7812:1;7797:284;7822:6;7819:1;7816:13;7797:284;;;7898:6;7892:13;7925:63;7984:3;7969:13;7925:63;:::i;:::-;7918:70;;8011:60;8064:6;8011:60;:::i;:::-;8001:70;;7857:224;7844:1;7841;7837:9;7832:14;;7797:284;;;7801:14;8097:3;8090:10;;7498:608;;;7374:732;;;;:::o;8112:373::-;8255:4;8293:2;8282:9;8278:18;8270:26;;8342:9;8336:4;8332:20;8328:1;8317:9;8313:17;8306:47;8370:108;8473:4;8464:6;8370:108;:::i;:::-;8362:116;;8112:373;;;;:::o;8491:180::-;8539:77;8536:1;8529:88;8636:4;8633:1;8626:15;8660:4;8657:1;8650:15;8677:180;8725:77;8722:1;8715:88;8822:4;8819:1;8812:15;8846:4;8843:1;8836:15;8863:191;8903:3;8922:20;8940:1;8922:20;:::i;:::-;8917:25;;8956:20;8974:1;8956:20;:::i;:::-;8951:25;;8999:1;8996;8992:9;8985:16;;9020:3;9017:1;9014:10;9011:36;;;9027:18;;:::i;:::-;9011:36;8863:191;;;;:::o;9060:233::-;9099:3;9122:24;9140:5;9122:24;:::i;:::-;9113:33;;9168:66;9161:5;9158:77;9155:103;;9238:18;;:::i;:::-;9155:103;9285:1;9278:5;9274:13;9267:20;;9060:233;;;:::o;9299:118::-;9386:24;9404:5;9386:24;:::i;:::-;9381:3;9374:37;9299:118;;:::o;9423:::-;9510:24;9528:5;9510:24;:::i;:::-;9505:3;9498:37;9423:118;;:::o;9547:442::-;9696:4;9734:2;9723:9;9719:18;9711:26;;9747:71;9815:1;9804:9;9800:17;9791:6;9747:71;:::i;:::-;9828:72;9896:2;9885:9;9881:18;9872:6;9828:72;:::i;:::-;9910;9978:2;9967:9;9963:18;9954:6;9910:72;:::i;:::-;9547:442;;;;;;:::o;9995:332::-;10116:4;10154:2;10143:9;10139:18;10131:26;;10167:71;10235:1;10224:9;10220:17;10211:6;10167:71;:::i;:::-;10248:72;10316:2;10305:9;10301:18;10292:6;10248:72;:::i;:::-;9995:332;;;;;:::o;10333:194::-;10373:4;10393:20;10411:1;10393:20;:::i;:::-;10388:25;;10427:20;10445:1;10427:20;:::i;:::-;10422:25;;10471:1;10468;10464:9;10456:17;;10495:1;10489:4;10486:11;10483:37;;;10500:18;;:::i;:::-;10483:37;10333:194;;;;:::o;10533:442::-;10682:4;10720:2;10709:9;10705:18;10697:26;;10733:71;10801:1;10790:9;10786:17;10777:6;10733:71;:::i;:::-;10814:72;10882:2;10871:9;10867:18;10858:6;10814:72;:::i;:::-;10896;10964:2;10953:9;10949:18;10940:6;10896:72;:::i;:::-;10533:442;;;;;;:::o;10981:::-;11130:4;11168:2;11157:9;11153:18;11145:26;;11181:71;11249:1;11238:9;11234:17;11225:6;11181:71;:::i;:::-;11262:72;11330:2;11319:9;11315:18;11306:6;11262:72;:::i;:::-;11344;11412:2;11401:9;11397:18;11388:6;11344:72;:::i;:::-;10981:442;;;;;;:::o;11429:122::-;11502:24;11520:5;11502:24;:::i;:::-;11495:5;11492:35;11482:63;;11541:1;11538;11531:12;11482:63;11429:122;:::o;11557:143::-;11614:5;11645:6;11639:13;11630:22;;11661:33;11688:5;11661:33;:::i;:::-;11557:143;;;;:::o;11706:351::-;11776:6;11825:2;11813:9;11804:7;11800:23;11796:32;11793:119;;;11831:79;;:::i;:::-;11793:119;11951:1;11976:64;12032:7;12023:6;12012:9;12008:22;11976:64;:::i;:::-;11966:74;;11922:128;11706:351;;;;:::o"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "632800",
"executionCost": "664",
"totalCost": "633464"
},
"external": {
"getAgreedOnHeader(address[],uint256,uint256)": "infinite",
"getHeaderFromOracle(address,uint256,uint256)": "infinite",
"getHeaderFromThreshold(address[],uint256,uint256,uint256)": "infinite",
"getHeadersFromOracles(address[],uint256,uint256)": "infinite"
}
},
"methodIdentifiers": {
"getAgreedOnHeader(address[],uint256,uint256)": "84dd0d12",
"getHeaderFromOracle(address,uint256,uint256)": "b31825bf",
"getHeaderFromThreshold(address[],uint256,uint256,uint256)": "7ef79f8c",
"getHeadersFromOracles(address[],uint256,uint256)": "d56154ab"
}
},
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "emitter",
"type": "address"
},
{
"internalType": "address",
"name": "oracleAdapter",
"type": "address"
}
],
"name": "OracleDidNotReport",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "emitter",
"type": "address"
},
{
"internalType": "address",
"name": "oracleOne",
"type": "address"
},
{
"internalType": "address",
"name": "oracleTwo",
"type": "address"
}
],
"name": "OraclesDisagree",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "uint256",
"name": "highestCount",
"type": "uint256"
},
{
"internalType": "bytes32",
"name": "blockHeader",
"type": "bytes32"
}
],
"name": "ThresholdNotMet",
"type": "error"
},
{
"inputs": [
{
"internalType": "address[]",
"name": "oracleAdapters",
"type": "address[]"
},
{
"internalType": "uint256",
"name": "chainId",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "blockNumber",
"type": "uint256"
}
],
"name": "getAgreedOnHeader",
"outputs": [
{
"internalType": "bytes32",
"name": "blockHeader",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "oracleAdapter",
"type": "address"
},
{
"internalType": "uint256",
"name": "chainId",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "blockNumber",
"type": "uint256"
}
],
"name": "getHeaderFromOracle",
"outputs": [
{
"internalType": "bytes32",
"name": "blockHeader",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address[]",
"name": "oracleAdapters",
"type": "address[]"
},
{
"internalType": "uint256",
"name": "chainId",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "blockNumber",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "threshold",
"type": "uint256"
}
],
"name": "getHeaderFromThreshold",
"outputs": [
{
"internalType": "bytes32",
"name": "blockHeader",
"type": "bytes32"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address[]",
"name": "oracleAdapters",
"type": "address[]"
},
{
"internalType": "uint256",
"name": "chainId",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "blockNumber",
"type": "uint256"
}
],
"name": "getHeadersFromOracles",
"outputs": [
{
"internalType": "bytes32[]",
"name": "blockHeaders",
"type": "bytes32[]"
}
],
"stateMutability": "view",
"type": "function"
}
]
}
{
"compiler": {
"version": "0.8.17+commit.8df45f5f"
},
"language": "Solidity",
"output": {
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "emitter",
"type": "address"
},
{
"internalType": "address",
"name": "oracleAdapter",
"type": "address"
}
],
"name": "OracleDidNotReport",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "emitter",
"type": "address"
},
{
"internalType": "address",
"name": "oracleOne",
"type": "address"
},
{
"internalType": "address",
"name": "oracleTwo",
"type": "address"
}
],
"name": "OraclesDisagree",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "uint256",
"name": "highestCount",
"type": "uint256"
},
{
"internalType": "bytes32",
"name": "blockHeader",
"type": "bytes32"
}
],
"name": "ThresholdNotMet",
"type": "error"
},
{
"inputs": [
{
"internalType": "address[]",
"name": "oracleAdapters",
"type": "address[]"
},
{
"internalType": "uint256",
"name": "chainId",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "blockNumber",
"type": "uint256"
}
],
"name": "getAgreedOnHeader",
"outputs": [
{
"internalType": "bytes32",
"name": "blockHeader",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "oracleAdapter",
"type": "address"
},
{
"internalType": "uint256",
"name": "chainId",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "blockNumber",
"type": "uint256"
}
],
"name": "getHeaderFromOracle",
"outputs": [
{
"internalType": "bytes32",
"name": "blockHeader",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address[]",
"name": "oracleAdapters",
"type": "address[]"
},
{
"internalType": "uint256",
"name": "chainId",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "blockNumber",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "threshold",
"type": "uint256"
}
],
"name": "getHeaderFromThreshold",
"outputs": [
{
"internalType": "bytes32",
"name": "blockHeader",
"type": "bytes32"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address[]",
"name": "oracleAdapters",
"type": "address[]"
},
{
"internalType": "uint256",
"name": "chainId",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "blockNumber",
"type": "uint256"
}
],
"name": "getHeadersFromOracles",
"outputs": [
{
"internalType": "bytes32[]",
"name": "blockHeaders",
"type": "bytes32[]"
}
],
"stateMutability": "view",
"type": "function"
}
],
"devdoc": {
"kind": "dev",
"methods": {
"getAgreedOnHeader(address[],uint256,uint256)": {
"details": "Returns the blockheader universally agreed upon by a given set of oracles.",
"params": {
"blockNumber": "Block number for which to return headers.",
"chainId": "Id of the chain to query.",
"oracleAdapters": "Array of address for the oracle adapters to query."
},
"returns": {
"blockHeader": "Block header agreed on by the given set of oracle adapters."
}
},
"getHeaderFromOracle(address,uint256,uint256)": {
"details": "Returns the block header reported by a given oracle for a given block.",
"params": {
"blockNumber": "Block number for which to return a header.",
"chainId": "Id of the chain to query.",
"oracleAdapter": "Address of the oracle adapter to query."
},
"returns": {
"blockHeader": "Block header reported by the given oracle adapter for the given block number."
}
},
"getHeaderFromThreshold(address[],uint256,uint256,uint256)": {
"details": "Returns the blockheader agreed upon by a threshold of given header oracles.",
"params": {
"blockNumber": "Block number for which to return headers.",
"chainId": "Id of the chain to query.",
"oracleAdapters": "Array of address for the oracle adapters to query.",
"threshold": "Threshold of oracles that must report the same header for the given block. `threshold` MUST be `<= oracleAdapters.length && > oracleAdapters.length / 2`."
},
"returns": {
"blockHeader": "Block header reported by the required threshold of given oracle adapters for the given block number."
}
},
"getHeadersFromOracles(address[],uint256,uint256)": {
"details": "Returns the block headers for a given block reported by a given set of oracles.",
"params": {
"blockNumber": "Block number for which to return headers.",
"chainId": "Id of the chain to query.",
"oracleAdapters": "Array of address for the oracle adapters to query, MUST be provided in numerical order from smallest to largest."
},
"returns": {
"blockHeaders": "Array of block header reported by the given oracle adapters for the given block number."
}
}
},
"version": 1
},
"userdoc": {
"errors": {
"OracleDidNotReport(address,address)": [
{
"notice": "TODO: add events"
}
]
},
"kind": "user",
"methods": {
"getAgreedOnHeader(address[],uint256,uint256)": {
"notice": "MUST revert if oracles disagree on the header or if an oracle does not report."
},
"getHeaderFromThreshold(address[],uint256,uint256,uint256)": {
"notice": "This method MUST revert if the oracleAdapters array contains duplicates."
},
"getHeadersFromOracles(address[],uint256,uint256)": {
"notice": "This method MUST revert if the oracleAdapters array contains duplicates."
}
},
"version": 1
}
},
"settings": {
"compilationTarget": {
"Hashi.sol": "Hashi"
},
"evmVersion": "london",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": false,
"runs": 200
},
"remappings": []
},
"sources": {
"Hashi.sol": {
"keccak256": "0x653b040b9b0b7152b21af6877eced6cf664580b020ffa0272562f9eb350cd05f",
"license": "LGPL-3.0-only",
"urls": [
"bzz-raw://eda9df94eb97b373f14e31af0ef0a4b7d3bb856d5bbd22a0a073799af9985bf0",
"dweb:/ipfs/QmcFXYEFbcPGXJ1XqrWRfxvumTYiuUPPCoEU32ciUeQznc"
]
},
"IOracleAdapter.sol": {
"keccak256": "0x7bea3758157ec2715a450dec19e29bb183da43c23113b5f34e87335dadfb5a81",
"license": "LGPL-3.0-only",
"urls": [
"bzz-raw://f650ff1d5348117edab7bf2724f1886ee4fbefa0250ba18b975168e23d626f62",
"dweb:/ipfs/QmZNtD7WVBEYUbKWD7DQ4SaqdwwjwczYC7mFpehmMPSRzg"
]
}
},
"version": 1
}
{
"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
},
"goerli:5": {
"linkReferences": {},
"autoDeployLib": true
},
"Custom": {
"linkReferences": {},
"autoDeployLib": true
}
},
"data": {
"bytecode": {
"functionDebugData": {},
"generatedSources": [],
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"deployedBytecode": {
"functionDebugData": {},
"generatedSources": [],
"immutableReferences": {},
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"gasEstimates": null,
"methodIdentifiers": {
"getHeaderFromOracle(address,uint256,uint256)": "b31825bf"
}
},
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "oracleAdapter",
"type": "address"
},
{
"internalType": "uint256",
"name": "chainId",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "blockNumber",
"type": "uint256"
}
],
"name": "getHeaderFromOracle",
"outputs": [
{
"internalType": "bytes32",
"name": "blockHeader",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
}
]
}
{
"compiler": {
"version": "0.8.17+commit.8df45f5f"
},
"language": "Solidity",
"output": {
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "oracleAdapter",
"type": "address"
},
{
"internalType": "uint256",
"name": "chainId",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "blockNumber",
"type": "uint256"
}
],
"name": "getHeaderFromOracle",
"outputs": [
{
"internalType": "bytes32",
"name": "blockHeader",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
}
],
"devdoc": {
"kind": "dev",
"methods": {},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
},
"settings": {
"compilationTarget": {
"IOracleAdapter.sol": "IOracleAdapter"
},
"evmVersion": "london",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": false,
"runs": 200
},
"remappings": []
},
"sources": {
"IOracleAdapter.sol": {
"keccak256": "0x7bea3758157ec2715a450dec19e29bb183da43c23113b5f34e87335dadfb5a81",
"license": "LGPL-3.0-only",
"urls": [
"bzz-raw://f650ff1d5348117edab7bf2724f1886ee4fbefa0250ba18b975168e23d626f62",
"dweb:/ipfs/QmZNtD7WVBEYUbKWD7DQ4SaqdwwjwczYC7mFpehmMPSRzg"
]
}
},
"version": 1
}
{
"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
},
"goerli:5": {
"linkReferences": {},
"autoDeployLib": true
},
"Custom": {
"linkReferences": {},
"autoDeployLib": true
}
},
"data": {
"bytecode": {
"functionDebugData": {
"@_994": {
"entryPoint": null,
"id": 994,
"parameterSlots": 1,
"returnSlots": 0
},
"abi_decode_t_address_fromMemory": {
"entryPoint": 199,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_address_fromMemory": {
"entryPoint": 220,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"allocate_unbounded": {
"entryPoint": null,
"id": null,
"parameterSlots": 0,
"returnSlots": 1
},
"cleanup_t_address": {
"entryPoint": 158,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_uint160": {
"entryPoint": 126,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db": {
"entryPoint": null,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b": {
"entryPoint": 121,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"validator_revert_t_address": {
"entryPoint": 176,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
}
},
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:1199:7",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "47:35:7",
"statements": [
{
"nodeType": "YulAssignment",
"src": "57:19:7",
"value": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "73:2:7",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "67:5:7"
},
"nodeType": "YulFunctionCall",
"src": "67:9:7"
},
"variableNames": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "57:6:7"
}
]
}
]
},
"name": "allocate_unbounded",
"nodeType": "YulFunctionDefinition",
"returnVariables": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "40:6:7",
"type": ""
}
],
"src": "7:75:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "177:28:7",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "194:1:7",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "197:1:7",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "187:6:7"
},
"nodeType": "YulFunctionCall",
"src": "187:12:7"
},
"nodeType": "YulExpressionStatement",
"src": "187:12:7"
}
]
},
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulFunctionDefinition",
"src": "88:117:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "300:28:7",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "317:1:7",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "320:1:7",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "310:6:7"
},
"nodeType": "YulFunctionCall",
"src": "310:12:7"
},
"nodeType": "YulExpressionStatement",
"src": "310:12:7"
}
]
},
"name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db",
"nodeType": "YulFunctionDefinition",
"src": "211:117:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "379:81:7",
"statements": [
{
"nodeType": "YulAssignment",
"src": "389:65:7",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "404:5:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "411:42:7",
"type": "",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "400:3:7"
},
"nodeType": "YulFunctionCall",
"src": "400:54:7"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "389:7:7"
}
]
}
]
},
"name": "cleanup_t_uint160",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "361:5:7",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "371:7:7",
"type": ""
}
],
"src": "334:126:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "511:51:7",
"statements": [
{
"nodeType": "YulAssignment",
"src": "521:35:7",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "550:5:7"
}
],
"functionName": {
"name": "cleanup_t_uint160",
"nodeType": "YulIdentifier",
"src": "532:17:7"
},
"nodeType": "YulFunctionCall",
"src": "532:24:7"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "521:7:7"
}
]
}
]
},
"name": "cleanup_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "493:5:7",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "503:7:7",
"type": ""
}
],
"src": "466:96:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "611:79:7",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "668:16:7",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "677:1:7",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "680:1:7",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "670:6:7"
},
"nodeType": "YulFunctionCall",
"src": "670:12:7"
},
"nodeType": "YulExpressionStatement",
"src": "670:12:7"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "634:5:7"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "659:5:7"
}
],
"functionName": {
"name": "cleanup_t_address",
"nodeType": "YulIdentifier",
"src": "641:17:7"
},
"nodeType": "YulFunctionCall",
"src": "641:24:7"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "631:2:7"
},
"nodeType": "YulFunctionCall",
"src": "631:35:7"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "624:6:7"
},
"nodeType": "YulFunctionCall",
"src": "624:43:7"
},
"nodeType": "YulIf",
"src": "621:63:7"
}
]
},
"name": "validator_revert_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "604:5:7",
"type": ""
}
],
"src": "568:122:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "759:80:7",
"statements": [
{
"nodeType": "YulAssignment",
"src": "769:22:7",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "784:6:7"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "778:5:7"
},
"nodeType": "YulFunctionCall",
"src": "778:13:7"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "769:5:7"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "827:5:7"
}
],
"functionName": {
"name": "validator_revert_t_address",
"nodeType": "YulIdentifier",
"src": "800:26:7"
},
"nodeType": "YulFunctionCall",
"src": "800:33:7"
},
"nodeType": "YulExpressionStatement",
"src": "800:33:7"
}
]
},
"name": "abi_decode_t_address_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "737:6:7",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "745:3:7",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "753:5:7",
"type": ""
}
],
"src": "696:143:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "922:274:7",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "968:83:7",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulIdentifier",
"src": "970:77:7"
},
"nodeType": "YulFunctionCall",
"src": "970:79:7"
},
"nodeType": "YulExpressionStatement",
"src": "970:79:7"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "943:7:7"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "952:9:7"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "939:3:7"
},
"nodeType": "YulFunctionCall",
"src": "939:23:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "964:2:7",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "935:3:7"
},
"nodeType": "YulFunctionCall",
"src": "935:32:7"
},
"nodeType": "YulIf",
"src": "932:119:7"
},
{
"nodeType": "YulBlock",
"src": "1061:128:7",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "1076:15:7",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "1090:1:7",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "1080:6:7",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "1105:74:7",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1151:9:7"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "1162:6:7"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1147:3:7"
},
"nodeType": "YulFunctionCall",
"src": "1147:22:7"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "1171:7:7"
}
],
"functionName": {
"name": "abi_decode_t_address_fromMemory",
"nodeType": "YulIdentifier",
"src": "1115:31:7"
},
"nodeType": "YulFunctionCall",
"src": "1115:64:7"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "1105:6:7"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_address_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "892:9:7",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "903:7:7",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "915:6:7",
"type": ""
}
],
"src": "845:351:7"
}
]
},
"contents": "{\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\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 abi_decode_t_address_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_address(value)\n }\n\n function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n}\n",
"id": 7,
"language": "Yul",
"name": "#utility.yul"
}
],
"linkReferences": {},
"object": "608060405234801561001057600080fd5b50604051610d3a380380610d3a833981810160405281019061003291906100dc565b80606560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050610109565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006100a98261007e565b9050919050565b6100b98161009e565b81146100c457600080fd5b50565b6000815190506100d6816100b0565b92915050565b6000602082840312156100f2576100f1610079565b5b6000610100848285016100c7565b91505092915050565b610c22806101186000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80638da5cb5b1161005b5780638da5cb5b146100ff578063a045a0151461011d578063ec2cf2d51461014d578063f2fde38b1461016b57610088565b80630fc9c33b1461008d57806367e2120e146100a95780636e53670a146100c5578063715018a6146100f5575b600080fd5b6100a760048036038101906100a291906107ec565b610187565b005b6100c360048036038101906100be9190610848565b6101bb565b005b6100df60048036038101906100da9190610875565b610207565b6040516100ec91906108ce565b60405180910390f35b6100fd6102c3565b005b6101076102d7565b60405161011491906108f8565b60405180910390f35b61013760048036038101906101329190610875565b610301565b60405161014491906108f8565b60405180910390f35b61015561034f565b60405161016291906108f8565b60405180910390f35b61018560048036038101906101809190610848565b610375565b005b61018f6103f8565b806066600084815260200190815260200160002090805190602001906101b6929190610544565b505050565b6101c36103f8565b80606560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166384dd0d126066600086815260200190815260200160002085856040518463ffffffff1660e01b815260040161027a93929190610a46565b602060405180830381865afa158015610297573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102bb9190610ab0565b905092915050565b6102cb6103f8565b6102d56000610476565b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6066602052816000526040600020818154811061031d57600080fd5b906000526020600020016000915091509054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61037d6103f8565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036103ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103e390610b60565b60405180910390fd5b6103f581610476565b50565b61040061053c565b73ffffffffffffffffffffffffffffffffffffffff1661041e6102d7565b73ffffffffffffffffffffffffffffffffffffffff1614610474576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161046b90610bcc565b60405180910390fd5b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600033905090565b8280548282559060005260206000209081019282156105bd579160200282015b828111156105bc5782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190610564565b5b5090506105ca91906105ce565b5090565b5b808211156105e75760008160009055506001016105cf565b5090565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b610612816105ff565b811461061d57600080fd5b50565b60008135905061062f81610609565b92915050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6106838261063a565b810181811067ffffffffffffffff821117156106a2576106a161064b565b5b80604052505050565b60006106b56105eb565b90506106c1828261067a565b919050565b600067ffffffffffffffff8211156106e1576106e061064b565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610722826106f7565b9050919050565b61073281610717565b811461073d57600080fd5b50565b60008135905061074f81610729565b92915050565b6000610768610763846106c6565b6106ab565b9050808382526020820190506020840283018581111561078b5761078a6106f2565b5b835b818110156107b457806107a08882610740565b84526020840193505060208101905061078d565b5050509392505050565b600082601f8301126107d3576107d2610635565b5b81356107e3848260208601610755565b91505092915050565b60008060408385031215610803576108026105f5565b5b600061081185828601610620565b925050602083013567ffffffffffffffff811115610832576108316105fa565b5b61083e858286016107be565b9150509250929050565b60006020828403121561085e5761085d6105f5565b5b600061086c84828501610740565b91505092915050565b6000806040838503121561088c5761088b6105f5565b5b600061089a85828601610620565b92505060206108ab85828601610620565b9150509250929050565b6000819050919050565b6108c8816108b5565b82525050565b60006020820190506108e360008301846108bf565b92915050565b6108f281610717565b82525050565b600060208201905061090d60008301846108e9565b92915050565b600081549050919050565b600082825260208201905092915050565b60008190508160005260206000209050919050565b61094d81610717565b82525050565b600061095f8383610944565b60208301905092915050565b60008160001c9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006109ab6109a68361096b565b610978565b9050919050565b60006109be8254610998565b9050919050565b6000600182019050919050565b60006109dd82610913565b6109e7818561091e565b93506109f28361092f565b8060005b83811015610a2a57610a07826109b2565b610a118882610953565b9750610a1c836109c5565b9250506001810190506109f6565b5085935050505092915050565b610a40816105ff565b82525050565b60006060820190508181036000830152610a6081866109d2565b9050610a6f6020830185610a37565b610a7c6040830184610a37565b949350505050565b610a8d816108b5565b8114610a9857600080fd5b50565b600081519050610aaa81610a84565b92915050565b600060208284031215610ac657610ac56105f5565b5b6000610ad484828501610a9b565b91505092915050565b600082825260208201905092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000610b4a602683610add565b9150610b5582610aee565b604082019050919050565b60006020820190508181036000830152610b7981610b3d565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000610bb6602083610add565b9150610bc182610b80565b602082019050919050565b60006020820190508181036000830152610be581610ba9565b905091905056fea264697066735822122050acc362451e4b76e8b7d5ef4276295109b4011862d33bfc1568152f3a26734c64736f6c63430008110033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0xD3A CODESIZE SUB DUP1 PUSH2 0xD3A DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE DUP2 ADD SWAP1 PUSH2 0x32 SWAP2 SWAP1 PUSH2 0xDC JUMP JUMPDEST DUP1 PUSH1 0x65 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP PUSH2 0x109 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA9 DUP3 PUSH2 0x7E JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xB9 DUP2 PUSH2 0x9E JUMP JUMPDEST DUP2 EQ PUSH2 0xC4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0xD6 DUP2 PUSH2 0xB0 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF2 JUMPI PUSH2 0xF1 PUSH2 0x79 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x100 DUP5 DUP3 DUP6 ADD PUSH2 0xC7 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xC22 DUP1 PUSH2 0x118 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 0x88 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DA5CB5B GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xFF JUMPI DUP1 PUSH4 0xA045A015 EQ PUSH2 0x11D JUMPI DUP1 PUSH4 0xEC2CF2D5 EQ PUSH2 0x14D JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x16B JUMPI PUSH2 0x88 JUMP JUMPDEST DUP1 PUSH4 0xFC9C33B EQ PUSH2 0x8D JUMPI DUP1 PUSH4 0x67E2120E EQ PUSH2 0xA9 JUMPI DUP1 PUSH4 0x6E53670A EQ PUSH2 0xC5 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0xF5 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA7 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xA2 SWAP2 SWAP1 PUSH2 0x7EC JUMP JUMPDEST PUSH2 0x187 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xC3 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xBE SWAP2 SWAP1 PUSH2 0x848 JUMP JUMPDEST PUSH2 0x1BB JUMP JUMPDEST STOP JUMPDEST PUSH2 0xDF PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xDA SWAP2 SWAP1 PUSH2 0x875 JUMP JUMPDEST PUSH2 0x207 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xEC SWAP2 SWAP1 PUSH2 0x8CE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xFD PUSH2 0x2C3 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x107 PUSH2 0x2D7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x114 SWAP2 SWAP1 PUSH2 0x8F8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x137 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x132 SWAP2 SWAP1 PUSH2 0x875 JUMP JUMPDEST PUSH2 0x301 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x144 SWAP2 SWAP1 PUSH2 0x8F8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x155 PUSH2 0x34F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x162 SWAP2 SWAP1 PUSH2 0x8F8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x185 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x180 SWAP2 SWAP1 PUSH2 0x848 JUMP JUMPDEST PUSH2 0x375 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x18F PUSH2 0x3F8 JUMP JUMPDEST DUP1 PUSH1 0x66 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x1B6 SWAP3 SWAP2 SWAP1 PUSH2 0x544 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x1C3 PUSH2 0x3F8 JUMP JUMPDEST DUP1 PUSH1 0x65 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x65 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x84DD0D12 PUSH1 0x66 PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP6 DUP6 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x27A SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xA46 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x297 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 0x2BB SWAP2 SWAP1 PUSH2 0xAB0 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x2CB PUSH2 0x3F8 JUMP JUMPDEST PUSH2 0x2D5 PUSH1 0x0 PUSH2 0x476 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH1 0x33 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x66 PUSH1 0x20 MSTORE DUP2 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x31D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP2 POP SWAP2 POP SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x65 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH2 0x37D PUSH2 0x3F8 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x3EC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3E3 SWAP1 PUSH2 0xB60 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x3F5 DUP2 PUSH2 0x476 JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x400 PUSH2 0x53C JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x41E PUSH2 0x2D7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x474 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x46B SWAP1 PUSH2 0xBCC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH1 0x33 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP2 PUSH1 0x33 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 PUSH1 0x0 CALLER SWAP1 POP SWAP1 JUMP JUMPDEST DUP3 DUP1 SLOAD DUP3 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP3 DUP3 ISZERO PUSH2 0x5BD JUMPI SWAP2 PUSH1 0x20 MUL DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x5BC JUMPI DUP3 MLOAD DUP3 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x564 JUMP JUMPDEST JUMPDEST POP SWAP1 POP PUSH2 0x5CA SWAP2 SWAP1 PUSH2 0x5CE JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x5E7 JUMPI PUSH1 0x0 DUP2 PUSH1 0x0 SWAP1 SSTORE POP PUSH1 0x1 ADD PUSH2 0x5CF JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x612 DUP2 PUSH2 0x5FF JUMP JUMPDEST DUP2 EQ PUSH2 0x61D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x62F DUP2 PUSH2 0x609 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0x683 DUP3 PUSH2 0x63A JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x6A2 JUMPI PUSH2 0x6A1 PUSH2 0x64B JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6B5 PUSH2 0x5EB JUMP JUMPDEST SWAP1 POP PUSH2 0x6C1 DUP3 DUP3 PUSH2 0x67A JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x6E1 JUMPI PUSH2 0x6E0 PUSH2 0x64B JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP3 MUL SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x722 DUP3 PUSH2 0x6F7 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x732 DUP2 PUSH2 0x717 JUMP JUMPDEST DUP2 EQ PUSH2 0x73D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x74F DUP2 PUSH2 0x729 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x768 PUSH2 0x763 DUP5 PUSH2 0x6C6 JUMP JUMPDEST PUSH2 0x6AB JUMP JUMPDEST SWAP1 POP DUP1 DUP4 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0x20 DUP5 MUL DUP4 ADD DUP6 DUP2 GT ISZERO PUSH2 0x78B JUMPI PUSH2 0x78A PUSH2 0x6F2 JUMP JUMPDEST JUMPDEST DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x7B4 JUMPI DUP1 PUSH2 0x7A0 DUP9 DUP3 PUSH2 0x740 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x78D JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x7D3 JUMPI PUSH2 0x7D2 PUSH2 0x635 JUMP JUMPDEST JUMPDEST DUP2 CALLDATALOAD PUSH2 0x7E3 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x755 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x803 JUMPI PUSH2 0x802 PUSH2 0x5F5 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x811 DUP6 DUP3 DUP7 ADD PUSH2 0x620 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x832 JUMPI PUSH2 0x831 PUSH2 0x5FA JUMP JUMPDEST JUMPDEST PUSH2 0x83E DUP6 DUP3 DUP7 ADD PUSH2 0x7BE JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x85E JUMPI PUSH2 0x85D PUSH2 0x5F5 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x86C DUP5 DUP3 DUP6 ADD PUSH2 0x740 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x88C JUMPI PUSH2 0x88B PUSH2 0x5F5 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x89A DUP6 DUP3 DUP7 ADD PUSH2 0x620 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x8AB DUP6 DUP3 DUP7 ADD PUSH2 0x620 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x8C8 DUP2 PUSH2 0x8B5 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x8E3 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x8BF JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x8F2 DUP2 PUSH2 0x717 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x90D PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x8E9 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SLOAD 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 DUP2 SWAP1 POP DUP2 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x94D DUP2 PUSH2 0x717 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x95F DUP4 DUP4 PUSH2 0x944 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 SHR SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9AB PUSH2 0x9A6 DUP4 PUSH2 0x96B JUMP JUMPDEST PUSH2 0x978 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9BE DUP3 SLOAD PUSH2 0x998 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9DD DUP3 PUSH2 0x913 JUMP JUMPDEST PUSH2 0x9E7 DUP2 DUP6 PUSH2 0x91E JUMP JUMPDEST SWAP4 POP PUSH2 0x9F2 DUP4 PUSH2 0x92F JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xA2A JUMPI PUSH2 0xA07 DUP3 PUSH2 0x9B2 JUMP JUMPDEST PUSH2 0xA11 DUP9 DUP3 PUSH2 0x953 JUMP JUMPDEST SWAP8 POP PUSH2 0xA1C DUP4 PUSH2 0x9C5 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x9F6 JUMP JUMPDEST POP DUP6 SWAP4 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xA40 DUP2 PUSH2 0x5FF JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xA60 DUP2 DUP7 PUSH2 0x9D2 JUMP JUMPDEST SWAP1 POP PUSH2 0xA6F PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0xA37 JUMP JUMPDEST PUSH2 0xA7C PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0xA37 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0xA8D DUP2 PUSH2 0x8B5 JUMP JUMPDEST DUP2 EQ PUSH2 0xA98 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0xAAA DUP2 PUSH2 0xA84 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xAC6 JUMPI PUSH2 0xAC5 PUSH2 0x5F5 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xAD4 DUP5 DUP3 DUP6 ADD PUSH2 0xA9B JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6464726573730000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB4A PUSH1 0x26 DUP4 PUSH2 0xADD JUMP JUMPDEST SWAP2 POP PUSH2 0xB55 DUP3 PUSH2 0xAEE JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xB79 DUP2 PUSH2 0xB3D JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xBB6 PUSH1 0x20 DUP4 PUSH2 0xADD JUMP JUMPDEST SWAP2 POP PUSH2 0xBC1 DUP3 PUSH2 0xB80 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xBE5 DUP2 PUSH2 0xBA9 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 POP 0xAC 0xC3 PUSH3 0x451E4B PUSH23 0xE8B7D5EF4276295109B4011862D33BFC1568152F3A2673 0x4C PUSH5 0x736F6C6343 STOP ADDMOD GT STOP CALLER ",
"sourceMap": "167:808:6:-:0;;;326:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;372:6;364:5;;:14;;;;;;;;;;;;;;;;;;326:59;167:808;;88:117:7;197:1;194;187:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:143::-;753:5;784:6;778:13;769:22;;800:33;827:5;800:33;:::i;:::-;696:143;;;;:::o;845:351::-;915:6;964:2;952:9;943:7;939:23;935:32;932:119;;;970:79;;:::i;:::-;932:119;1090:1;1115:64;1171:7;1162:6;1151:9;1147:22;1115:64;:::i;:::-;1105:74;;1061:128;845:351;;;;:::o;167:808:6:-;;;;;;;"
},
"deployedBytecode": {
"functionDebugData": {
"@_checkOwner_68": {
"entryPoint": 1016,
"id": 68,
"parameterSlots": 0,
"returnSlots": 0
},
"@_msgSender_611": {
"entryPoint": 1340,
"id": 611,
"parameterSlots": 0,
"returnSlots": 1
},
"@_transferOwnership_125": {
"entryPoint": 1142,
"id": 125,
"parameterSlots": 1,
"returnSlots": 0
},
"@getHeader_1017": {
"entryPoint": 519,
"id": 1017,
"parameterSlots": 2,
"returnSlots": 1
},
"@hashi_979": {
"entryPoint": 847,
"id": 979,
"parameterSlots": 0,
"returnSlots": 0
},
"@oracleAdapters_984": {
"entryPoint": 769,
"id": 984,
"parameterSlots": 0,
"returnSlots": 0
},
"@owner_54": {
"entryPoint": 727,
"id": 54,
"parameterSlots": 0,
"returnSlots": 1
},
"@renounceOwnership_82": {
"entryPoint": 707,
"id": 82,
"parameterSlots": 0,
"returnSlots": 0
},
"@setHashi_1029": {
"entryPoint": 443,
"id": 1029,
"parameterSlots": 1,
"returnSlots": 0
},
"@setOracleAdapters_1046": {
"entryPoint": 391,
"id": 1046,
"parameterSlots": 2,
"returnSlots": 0
},
"@transferOwnership_105": {
"entryPoint": 885,
"id": 105,
"parameterSlots": 1,
"returnSlots": 0
},
"abi_decode_available_length_t_array$_t_address_$dyn_memory_ptr": {
"entryPoint": 1877,
"id": null,
"parameterSlots": 3,
"returnSlots": 1
},
"abi_decode_t_address": {
"entryPoint": 1856,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_t_array$_t_address_$dyn_memory_ptr": {
"entryPoint": 1982,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_t_bytes32_fromMemory": {
"entryPoint": 2715,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_t_uint256": {
"entryPoint": 1568,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_address": {
"entryPoint": 2120,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_bytes32_fromMemory": {
"entryPoint": 2736,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_uint256t_array$_t_address_$dyn_memory_ptr": {
"entryPoint": 2028,
"id": null,
"parameterSlots": 2,
"returnSlots": 2
},
"abi_decode_tuple_t_uint256t_uint256": {
"entryPoint": 2165,
"id": null,
"parameterSlots": 2,
"returnSlots": 2
},
"abi_encodeUpdatedPos_t_address_to_t_address": {
"entryPoint": 2387,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_t_address_to_t_address": {
"entryPoint": 2372,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_t_address_to_t_address_fromStack": {
"entryPoint": 2281,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_t_array$_t_address_$dyn_storage_to_t_array$_t_address_$dyn_memory_ptr_fromStack": {
"entryPoint": 2514,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_t_bytes32_to_t_bytes32_fromStack": {
"entryPoint": 2239,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe_to_t_string_memory_ptr_fromStack": {
"entryPoint": 2877,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe_to_t_string_memory_ptr_fromStack": {
"entryPoint": 2985,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_uint256_to_t_uint256_fromStack": {
"entryPoint": 2615,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
"entryPoint": 2296,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_array$_t_address_$dyn_storage_t_uint256_t_uint256__to_t_array$_t_address_$dyn_memory_ptr_t_uint256_t_uint256__fromStack_reversed": {
"entryPoint": 2630,
"id": null,
"parameterSlots": 4,
"returnSlots": 1
},
"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed": {
"entryPoint": 2254,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 2912,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 3020,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"allocate_memory": {
"entryPoint": 1707,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"allocate_unbounded": {
"entryPoint": 1515,
"id": null,
"parameterSlots": 0,
"returnSlots": 1
},
"array_allocation_size_t_array$_t_address_$dyn_memory_ptr": {
"entryPoint": 1734,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"array_dataslot_t_array$_t_address_$dyn_storage": {
"entryPoint": 2351,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"array_length_t_array$_t_address_$dyn_storage": {
"entryPoint": 2323,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"array_nextElement_t_array$_t_address_$dyn_storage": {
"entryPoint": 2501,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"array_storeLengthForEncoding_t_array$_t_address_$dyn_memory_ptr_fromStack": {
"entryPoint": 2334,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"array_storeLengthForEncoding_t_string_memory_ptr_fromStack": {
"entryPoint": 2781,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"cleanup_from_storage_t_address": {
"entryPoint": 2424,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_address": {
"entryPoint": 1815,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_bytes32": {
"entryPoint": 2229,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_uint160": {
"entryPoint": 1783,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_uint256": {
"entryPoint": 1535,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"extract_from_storage_value_offset_0t_address": {
"entryPoint": 2456,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"finalize_allocation": {
"entryPoint": 1658,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"panic_error_0x41": {
"entryPoint": 1611,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"read_from_storage_offset_0_t_address": {
"entryPoint": 2482,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d": {
"entryPoint": 1589,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef": {
"entryPoint": 1778,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db": {
"entryPoint": 1530,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b": {
"entryPoint": 1525,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"round_up_to_mul_of_32": {
"entryPoint": 1594,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"shift_right_0_unsigned": {
"entryPoint": 2411,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"store_literal_in_memory_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe": {
"entryPoint": 2798,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe": {
"entryPoint": 2944,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"validator_revert_t_address": {
"entryPoint": 1833,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"validator_revert_t_bytes32": {
"entryPoint": 2692,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"validator_revert_t_uint256": {
"entryPoint": 1545,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
}
},
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:11676:7",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "47:35:7",
"statements": [
{
"nodeType": "YulAssignment",
"src": "57:19:7",
"value": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "73:2:7",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "67:5:7"
},
"nodeType": "YulFunctionCall",
"src": "67:9:7"
},
"variableNames": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "57:6:7"
}
]
}
]
},
"name": "allocate_unbounded",
"nodeType": "YulFunctionDefinition",
"returnVariables": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "40:6:7",
"type": ""
}
],
"src": "7:75:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "177:28:7",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "194:1:7",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "197:1:7",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "187:6:7"
},
"nodeType": "YulFunctionCall",
"src": "187:12:7"
},
"nodeType": "YulExpressionStatement",
"src": "187:12:7"
}
]
},
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulFunctionDefinition",
"src": "88:117:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "300:28:7",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "317:1:7",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "320:1:7",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "310:6:7"
},
"nodeType": "YulFunctionCall",
"src": "310:12:7"
},
"nodeType": "YulExpressionStatement",
"src": "310:12:7"
}
]
},
"name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db",
"nodeType": "YulFunctionDefinition",
"src": "211:117:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "379:32:7",
"statements": [
{
"nodeType": "YulAssignment",
"src": "389:16:7",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "400:5:7"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "389:7:7"
}
]
}
]
},
"name": "cleanup_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "361:5:7",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "371:7:7",
"type": ""
}
],
"src": "334:77:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "460:79:7",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "517:16:7",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "526:1:7",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "529:1:7",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "519:6:7"
},
"nodeType": "YulFunctionCall",
"src": "519:12:7"
},
"nodeType": "YulExpressionStatement",
"src": "519:12:7"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "483:5:7"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "508:5:7"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "490:17:7"
},
"nodeType": "YulFunctionCall",
"src": "490:24:7"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "480:2:7"
},
"nodeType": "YulFunctionCall",
"src": "480:35:7"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "473:6:7"
},
"nodeType": "YulFunctionCall",
"src": "473:43:7"
},
"nodeType": "YulIf",
"src": "470:63:7"
}
]
},
"name": "validator_revert_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "453:5:7",
"type": ""
}
],
"src": "417:122:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "597:87:7",
"statements": [
{
"nodeType": "YulAssignment",
"src": "607:29:7",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "629:6:7"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "616:12:7"
},
"nodeType": "YulFunctionCall",
"src": "616:20:7"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "607:5:7"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "672:5:7"
}
],
"functionName": {
"name": "validator_revert_t_uint256",
"nodeType": "YulIdentifier",
"src": "645:26:7"
},
"nodeType": "YulFunctionCall",
"src": "645:33:7"
},
"nodeType": "YulExpressionStatement",
"src": "645:33:7"
}
]
},
"name": "abi_decode_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "575:6:7",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "583:3:7",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "591:5:7",
"type": ""
}
],
"src": "545:139:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "779:28:7",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "796:1:7",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "799:1:7",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "789:6:7"
},
"nodeType": "YulFunctionCall",
"src": "789:12:7"
},
"nodeType": "YulExpressionStatement",
"src": "789:12:7"
}
]
},
"name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d",
"nodeType": "YulFunctionDefinition",
"src": "690:117:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "861:54:7",
"statements": [
{
"nodeType": "YulAssignment",
"src": "871:38:7",
"value": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "889:5:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "896:2:7",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "885:3:7"
},
"nodeType": "YulFunctionCall",
"src": "885:14:7"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "905:2:7",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "901:3:7"
},
"nodeType": "YulFunctionCall",
"src": "901:7:7"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "881:3:7"
},
"nodeType": "YulFunctionCall",
"src": "881:28:7"
},
"variableNames": [
{
"name": "result",
"nodeType": "YulIdentifier",
"src": "871:6:7"
}
]
}
]
},
"name": "round_up_to_mul_of_32",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "844:5:7",
"type": ""
}
],
"returnVariables": [
{
"name": "result",
"nodeType": "YulTypedName",
"src": "854:6:7",
"type": ""
}
],
"src": "813:102:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "949:152:7",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "966:1:7",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "969:77:7",
"type": "",
"value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "959:6:7"
},
"nodeType": "YulFunctionCall",
"src": "959:88:7"
},
"nodeType": "YulExpressionStatement",
"src": "959:88:7"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1063:1:7",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1066:4:7",
"type": "",
"value": "0x41"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1056:6:7"
},
"nodeType": "YulFunctionCall",
"src": "1056:15:7"
},
"nodeType": "YulExpressionStatement",
"src": "1056:15:7"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1087:1:7",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1090:4:7",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "1080:6:7"
},
"nodeType": "YulFunctionCall",
"src": "1080:15:7"
},
"nodeType": "YulExpressionStatement",
"src": "1080:15:7"
}
]
},
"name": "panic_error_0x41",
"nodeType": "YulFunctionDefinition",
"src": "921:180:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1150:238:7",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "1160:58:7",
"value": {
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "1182:6:7"
},
{
"arguments": [
{
"name": "size",
"nodeType": "YulIdentifier",
"src": "1212:4:7"
}
],
"functionName": {
"name": "round_up_to_mul_of_32",
"nodeType": "YulIdentifier",
"src": "1190:21:7"
},
"nodeType": "YulFunctionCall",
"src": "1190:27:7"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1178:3:7"
},
"nodeType": "YulFunctionCall",
"src": "1178:40:7"
},
"variables": [
{
"name": "newFreePtr",
"nodeType": "YulTypedName",
"src": "1164:10:7",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "1329:22:7",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x41",
"nodeType": "YulIdentifier",
"src": "1331:16:7"
},
"nodeType": "YulFunctionCall",
"src": "1331:18:7"
},
"nodeType": "YulExpressionStatement",
"src": "1331:18:7"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "newFreePtr",
"nodeType": "YulIdentifier",
"src": "1272:10:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1284:18:7",
"type": "",
"value": "0xffffffffffffffff"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "1269:2:7"
},
"nodeType": "YulFunctionCall",
"src": "1269:34:7"
},
{
"arguments": [
{
"name": "newFreePtr",
"nodeType": "YulIdentifier",
"src": "1308:10:7"
},
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "1320:6:7"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "1305:2:7"
},
"nodeType": "YulFunctionCall",
"src": "1305:22:7"
}
],
"functionName": {
"name": "or",
"nodeType": "YulIdentifier",
"src": "1266:2:7"
},
"nodeType": "YulFunctionCall",
"src": "1266:62:7"
},
"nodeType": "YulIf",
"src": "1263:88:7"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1367:2:7",
"type": "",
"value": "64"
},
{
"name": "newFreePtr",
"nodeType": "YulIdentifier",
"src": "1371:10:7"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1360:6:7"
},
"nodeType": "YulFunctionCall",
"src": "1360:22:7"
},
"nodeType": "YulExpressionStatement",
"src": "1360:22:7"
}
]
},
"name": "finalize_allocation",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "1136:6:7",
"type": ""
},
{
"name": "size",
"nodeType": "YulTypedName",
"src": "1144:4:7",
"type": ""
}
],
"src": "1107:281:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1435:88:7",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1445:30:7",
"value": {
"arguments": [],
"functionName": {
"name": "allocate_unbounded",
"nodeType": "YulIdentifier",
"src": "1455:18:7"
},
"nodeType": "YulFunctionCall",
"src": "1455:20:7"
},
"variableNames": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "1445:6:7"
}
]
},
{
"expression": {
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "1504:6:7"
},
{
"name": "size",
"nodeType": "YulIdentifier",
"src": "1512:4:7"
}
],
"functionName": {
"name": "finalize_allocation",
"nodeType": "YulIdentifier",
"src": "1484:19:7"
},
"nodeType": "YulFunctionCall",
"src": "1484:33:7"
},
"nodeType": "YulExpressionStatement",
"src": "1484:33:7"
}
]
},
"name": "allocate_memory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "size",
"nodeType": "YulTypedName",
"src": "1419:4:7",
"type": ""
}
],
"returnVariables": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "1428:6:7",
"type": ""
}
],
"src": "1394:129:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1611:229:7",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "1716:22:7",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x41",
"nodeType": "YulIdentifier",
"src": "1718:16:7"
},
"nodeType": "YulFunctionCall",
"src": "1718:18:7"
},
"nodeType": "YulExpressionStatement",
"src": "1718:18:7"
}
]
},
"condition": {
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "1688:6:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1696:18:7",
"type": "",
"value": "0xffffffffffffffff"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "1685:2:7"
},
"nodeType": "YulFunctionCall",
"src": "1685:30:7"
},
"nodeType": "YulIf",
"src": "1682:56:7"
},
{
"nodeType": "YulAssignment",
"src": "1748:25:7",
"value": {
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "1760:6:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1768:4:7",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "mul",
"nodeType": "YulIdentifier",
"src": "1756:3:7"
},
"nodeType": "YulFunctionCall",
"src": "1756:17:7"
},
"variableNames": [
{
"name": "size",
"nodeType": "YulIdentifier",
"src": "1748:4:7"
}
]
},
{
"nodeType": "YulAssignment",
"src": "1810:23:7",
"value": {
"arguments": [
{
"name": "size",
"nodeType": "YulIdentifier",
"src": "1822:4:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1828:4:7",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1818:3:7"
},
"nodeType": "YulFunctionCall",
"src": "1818:15:7"
},
"variableNames": [
{
"name": "size",
"nodeType": "YulIdentifier",
"src": "1810:4:7"
}
]
}
]
},
"name": "array_allocation_size_t_array$_t_address_$dyn_memory_ptr",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "1595:6:7",
"type": ""
}
],
"returnVariables": [
{
"name": "size",
"nodeType": "YulTypedName",
"src": "1606:4:7",
"type": ""
}
],
"src": "1529:311:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1935:28:7",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1952:1:7",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1955:1:7",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "1945:6:7"
},
"nodeType": "YulFunctionCall",
"src": "1945:12:7"
},
"nodeType": "YulExpressionStatement",
"src": "1945:12:7"
}
]
},
"name": "revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef",
"nodeType": "YulFunctionDefinition",
"src": "1846:117:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2014:81:7",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2024:65:7",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "2039:5:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2046:42:7",
"type": "",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "2035:3:7"
},
"nodeType": "YulFunctionCall",
"src": "2035:54:7"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "2024:7:7"
}
]
}
]
},
"name": "cleanup_t_uint160",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1996:5:7",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "2006:7:7",
"type": ""
}
],
"src": "1969:126:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2146:51:7",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2156:35:7",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "2185:5:7"
}
],
"functionName": {
"name": "cleanup_t_uint160",
"nodeType": "YulIdentifier",
"src": "2167:17:7"
},
"nodeType": "YulFunctionCall",
"src": "2167:24:7"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "2156:7:7"
}
]
}
]
},
"name": "cleanup_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "2128:5:7",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "2138:7:7",
"type": ""
}
],
"src": "2101:96:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2246:79:7",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "2303:16:7",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2312:1:7",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2315:1:7",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "2305:6:7"
},
"nodeType": "YulFunctionCall",
"src": "2305:12:7"
},
"nodeType": "YulExpressionStatement",
"src": "2305:12:7"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "2269:5:7"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "2294:5:7"
}
],
"functionName": {
"name": "cleanup_t_address",
"nodeType": "YulIdentifier",
"src": "2276:17:7"
},
"nodeType": "YulFunctionCall",
"src": "2276:24:7"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "2266:2:7"
},
"nodeType": "YulFunctionCall",
"src": "2266:35:7"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "2259:6:7"
},
"nodeType": "YulFunctionCall",
"src": "2259:43:7"
},
"nodeType": "YulIf",
"src": "2256:63:7"
}
]
},
"name": "validator_revert_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "2239:5:7",
"type": ""
}
],
"src": "2203:122:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2383:87:7",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2393:29:7",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "2415:6:7"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "2402:12:7"
},
"nodeType": "YulFunctionCall",
"src": "2402:20:7"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "2393:5:7"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "2458:5:7"
}
],
"functionName": {
"name": "validator_revert_t_address",
"nodeType": "YulIdentifier",
"src": "2431:26:7"
},
"nodeType": "YulFunctionCall",
"src": "2431:33:7"
},
"nodeType": "YulExpressionStatement",
"src": "2431:33:7"
}
]
},
"name": "abi_decode_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "2361:6:7",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "2369:3:7",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "2377:5:7",
"type": ""
}
],
"src": "2331:139:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2595:608:7",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2605:90:7",
"value": {
"arguments": [
{
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "2687:6:7"
}
],
"functionName": {
"name": "array_allocation_size_t_array$_t_address_$dyn_memory_ptr",
"nodeType": "YulIdentifier",
"src": "2630:56:7"
},
"nodeType": "YulFunctionCall",
"src": "2630:64:7"
}
],
"functionName": {
"name": "allocate_memory",
"nodeType": "YulIdentifier",
"src": "2614:15:7"
},
"nodeType": "YulFunctionCall",
"src": "2614:81:7"
},
"variableNames": [
{
"name": "array",
"nodeType": "YulIdentifier",
"src": "2605:5:7"
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "2704:16:7",
"value": {
"name": "array",
"nodeType": "YulIdentifier",
"src": "2715:5:7"
},
"variables": [
{
"name": "dst",
"nodeType": "YulTypedName",
"src": "2708:3:7",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "array",
"nodeType": "YulIdentifier",
"src": "2737:5:7"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "2744:6:7"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "2730:6:7"
},
"nodeType": "YulFunctionCall",
"src": "2730:21:7"
},
"nodeType": "YulExpressionStatement",
"src": "2730:21:7"
},
{
"nodeType": "YulAssignment",
"src": "2760:23:7",
"value": {
"arguments": [
{
"name": "array",
"nodeType": "YulIdentifier",
"src": "2771:5:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2778:4:7",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2767:3:7"
},
"nodeType": "YulFunctionCall",
"src": "2767:16:7"
},
"variableNames": [
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "2760:3:7"
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "2793:44:7",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "2811:6:7"
},
{
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "2823:6:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2831:4:7",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "mul",
"nodeType": "YulIdentifier",
"src": "2819:3:7"
},
"nodeType": "YulFunctionCall",
"src": "2819:17:7"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2807:3:7"
},
"nodeType": "YulFunctionCall",
"src": "2807:30:7"
},
"variables": [
{
"name": "srcEnd",
"nodeType": "YulTypedName",
"src": "2797:6:7",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "2865:103:7",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef",
"nodeType": "YulIdentifier",
"src": "2879:77:7"
},
"nodeType": "YulFunctionCall",
"src": "2879:79:7"
},
"nodeType": "YulExpressionStatement",
"src": "2879:79:7"
}
]
},
"condition": {
"arguments": [
{
"name": "srcEnd",
"nodeType": "YulIdentifier",
"src": "2852:6:7"
},
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "2860:3:7"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "2849:2:7"
},
"nodeType": "YulFunctionCall",
"src": "2849:15:7"
},
"nodeType": "YulIf",
"src": "2846:122:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3053:144:7",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "3068:21:7",
"value": {
"name": "src",
"nodeType": "YulIdentifier",
"src": "3086:3:7"
},
"variables": [
{
"name": "elementPos",
"nodeType": "YulTypedName",
"src": "3072:10:7",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "3110:3:7"
},
{
"arguments": [
{
"name": "elementPos",
"nodeType": "YulIdentifier",
"src": "3136:10:7"
},
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "3148:3:7"
}
],
"functionName": {
"name": "abi_decode_t_address",
"nodeType": "YulIdentifier",
"src": "3115:20:7"
},
"nodeType": "YulFunctionCall",
"src": "3115:37:7"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3103:6:7"
},
"nodeType": "YulFunctionCall",
"src": "3103:50:7"
},
"nodeType": "YulExpressionStatement",
"src": "3103:50:7"
},
{
"nodeType": "YulAssignment",
"src": "3166:21:7",
"value": {
"arguments": [
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "3177:3:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3182:4:7",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3173:3:7"
},
"nodeType": "YulFunctionCall",
"src": "3173:14:7"
},
"variableNames": [
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "3166:3:7"
}
]
}
]
},
"condition": {
"arguments": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "3006:3:7"
},
{
"name": "srcEnd",
"nodeType": "YulIdentifier",
"src": "3011:6:7"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "3003:2:7"
},
"nodeType": "YulFunctionCall",
"src": "3003:15:7"
},
"nodeType": "YulForLoop",
"post": {
"nodeType": "YulBlock",
"src": "3019:25:7",
"statements": [
{
"nodeType": "YulAssignment",
"src": "3021:21:7",
"value": {
"arguments": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "3032:3:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3037:4:7",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3028:3:7"
},
"nodeType": "YulFunctionCall",
"src": "3028:14:7"
},
"variableNames": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "3021:3:7"
}
]
}
]
},
"pre": {
"nodeType": "YulBlock",
"src": "2981:21:7",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "2983:17:7",
"value": {
"name": "offset",
"nodeType": "YulIdentifier",
"src": "2994:6:7"
},
"variables": [
{
"name": "src",
"nodeType": "YulTypedName",
"src": "2987:3:7",
"type": ""
}
]
}
]
},
"src": "2977:220:7"
}
]
},
"name": "abi_decode_available_length_t_array$_t_address_$dyn_memory_ptr",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "2565:6:7",
"type": ""
},
{
"name": "length",
"nodeType": "YulTypedName",
"src": "2573:6:7",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "2581:3:7",
"type": ""
}
],
"returnVariables": [
{
"name": "array",
"nodeType": "YulTypedName",
"src": "2589:5:7",
"type": ""
}
],
"src": "2493:710:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3303:293:7",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "3352:83:7",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d",
"nodeType": "YulIdentifier",
"src": "3354:77:7"
},
"nodeType": "YulFunctionCall",
"src": "3354:79:7"
},
"nodeType": "YulExpressionStatement",
"src": "3354:79:7"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "3331:6:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3339:4:7",
"type": "",
"value": "0x1f"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3327:3:7"
},
"nodeType": "YulFunctionCall",
"src": "3327:17:7"
},
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "3346:3:7"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "3323:3:7"
},
"nodeType": "YulFunctionCall",
"src": "3323:27:7"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "3316:6:7"
},
"nodeType": "YulFunctionCall",
"src": "3316:35:7"
},
"nodeType": "YulIf",
"src": "3313:122:7"
},
{
"nodeType": "YulVariableDeclaration",
"src": "3444:34:7",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "3471:6:7"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "3458:12:7"
},
"nodeType": "YulFunctionCall",
"src": "3458:20:7"
},
"variables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "3448:6:7",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "3487:103:7",
"value": {
"arguments": [
{
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "3563:6:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3571:4:7",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3559:3:7"
},
"nodeType": "YulFunctionCall",
"src": "3559:17:7"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "3578:6:7"
},
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "3586:3:7"
}
],
"functionName": {
"name": "abi_decode_available_length_t_array$_t_address_$dyn_memory_ptr",
"nodeType": "YulIdentifier",
"src": "3496:62:7"
},
"nodeType": "YulFunctionCall",
"src": "3496:94:7"
},
"variableNames": [
{
"name": "array",
"nodeType": "YulIdentifier",
"src": "3487:5:7"
}
]
}
]
},
"name": "abi_decode_t_array$_t_address_$dyn_memory_ptr",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "3281:6:7",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "3289:3:7",
"type": ""
}
],
"returnVariables": [
{
"name": "array",
"nodeType": "YulTypedName",
"src": "3297:5:7",
"type": ""
}
],
"src": "3226:370:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3710:576:7",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "3756:83:7",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulIdentifier",
"src": "3758:77:7"
},
"nodeType": "YulFunctionCall",
"src": "3758:79:7"
},
"nodeType": "YulExpressionStatement",
"src": "3758:79:7"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "3731:7:7"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3740:9:7"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "3727:3:7"
},
"nodeType": "YulFunctionCall",
"src": "3727:23:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3752:2:7",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "3723:3:7"
},
"nodeType": "YulFunctionCall",
"src": "3723:32:7"
},
"nodeType": "YulIf",
"src": "3720:119:7"
},
{
"nodeType": "YulBlock",
"src": "3849:117:7",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "3864:15:7",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "3878:1:7",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "3868:6:7",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "3893:63:7",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3928:9:7"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "3939:6:7"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3924:3:7"
},
"nodeType": "YulFunctionCall",
"src": "3924:22:7"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "3948:7:7"
}
],
"functionName": {
"name": "abi_decode_t_uint256",
"nodeType": "YulIdentifier",
"src": "3903:20:7"
},
"nodeType": "YulFunctionCall",
"src": "3903:53:7"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "3893:6:7"
}
]
}
]
},
{
"nodeType": "YulBlock",
"src": "3976:303:7",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "3991:46:7",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4022:9:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4033:2:7",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4018:3:7"
},
"nodeType": "YulFunctionCall",
"src": "4018:18:7"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "4005:12:7"
},
"nodeType": "YulFunctionCall",
"src": "4005:32:7"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "3995:6:7",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "4084:83:7",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db",
"nodeType": "YulIdentifier",
"src": "4086:77:7"
},
"nodeType": "YulFunctionCall",
"src": "4086:79:7"
},
"nodeType": "YulExpressionStatement",
"src": "4086:79:7"
}
]
},
"condition": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "4056:6:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4064:18:7",
"type": "",
"value": "0xffffffffffffffff"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "4053:2:7"
},
"nodeType": "YulFunctionCall",
"src": "4053:30:7"
},
"nodeType": "YulIf",
"src": "4050:117:7"
},
{
"nodeType": "YulAssignment",
"src": "4181:88:7",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4241:9:7"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "4252:6:7"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4237:3:7"
},
"nodeType": "YulFunctionCall",
"src": "4237:22:7"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "4261:7:7"
}
],
"functionName": {
"name": "abi_decode_t_array$_t_address_$dyn_memory_ptr",
"nodeType": "YulIdentifier",
"src": "4191:45:7"
},
"nodeType": "YulFunctionCall",
"src": "4191:78:7"
},
"variableNames": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "4181:6:7"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_uint256t_array$_t_address_$dyn_memory_ptr",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "3672:9:7",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "3683:7:7",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "3695:6:7",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "3703:6:7",
"type": ""
}
],
"src": "3602:684:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4358:263:7",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "4404:83:7",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulIdentifier",
"src": "4406:77:7"
},
"nodeType": "YulFunctionCall",
"src": "4406:79:7"
},
"nodeType": "YulExpressionStatement",
"src": "4406:79:7"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "4379:7:7"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4388:9:7"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "4375:3:7"
},
"nodeType": "YulFunctionCall",
"src": "4375:23:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4400:2:7",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "4371:3:7"
},
"nodeType": "YulFunctionCall",
"src": "4371:32:7"
},
"nodeType": "YulIf",
"src": "4368:119:7"
},
{
"nodeType": "YulBlock",
"src": "4497:117:7",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "4512:15:7",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "4526:1:7",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "4516:6:7",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "4541:63:7",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4576:9:7"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "4587:6:7"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4572:3:7"
},
"nodeType": "YulFunctionCall",
"src": "4572:22:7"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "4596:7:7"
}
],
"functionName": {
"name": "abi_decode_t_address",
"nodeType": "YulIdentifier",
"src": "4551:20:7"
},
"nodeType": "YulFunctionCall",
"src": "4551:53:7"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "4541:6:7"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "4328:9:7",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "4339:7:7",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "4351:6:7",
"type": ""
}
],
"src": "4292:329:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4710:391:7",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "4756:83:7",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulIdentifier",
"src": "4758:77:7"
},
"nodeType": "YulFunctionCall",
"src": "4758:79:7"
},
"nodeType": "YulExpressionStatement",
"src": "4758:79:7"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "4731:7:7"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4740:9:7"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "4727:3:7"
},
"nodeType": "YulFunctionCall",
"src": "4727:23:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4752:2:7",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "4723:3:7"
},
"nodeType": "YulFunctionCall",
"src": "4723:32:7"
},
"nodeType": "YulIf",
"src": "4720:119:7"
},
{
"nodeType": "YulBlock",
"src": "4849:117:7",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "4864:15:7",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "4878:1:7",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "4868:6:7",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "4893:63:7",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4928:9:7"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "4939:6:7"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4924:3:7"
},
"nodeType": "YulFunctionCall",
"src": "4924:22:7"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "4948:7:7"
}
],
"functionName": {
"name": "abi_decode_t_uint256",
"nodeType": "YulIdentifier",
"src": "4903:20:7"
},
"nodeType": "YulFunctionCall",
"src": "4903:53:7"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "4893:6:7"
}
]
}
]
},
{
"nodeType": "YulBlock",
"src": "4976:118:7",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "4991:16:7",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "5005:2:7",
"type": "",
"value": "32"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "4995:6:7",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "5021:63:7",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5056:9:7"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "5067:6:7"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5052:3:7"
},
"nodeType": "YulFunctionCall",
"src": "5052:22:7"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "5076:7:7"
}
],
"functionName": {
"name": "abi_decode_t_uint256",
"nodeType": "YulIdentifier",
"src": "5031:20:7"
},
"nodeType": "YulFunctionCall",
"src": "5031:53:7"
},
"variableNames": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "5021:6:7"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_uint256t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "4672:9:7",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "4683:7:7",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "4695:6:7",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "4703:6:7",
"type": ""
}
],
"src": "4627:474:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5152:32:7",
"statements": [
{
"nodeType": "YulAssignment",
"src": "5162:16:7",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "5173:5:7"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "5162:7:7"
}
]
}
]
},
"name": "cleanup_t_bytes32",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "5134:5:7",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "5144:7:7",
"type": ""
}
],
"src": "5107:77:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5255:53:7",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "5272:3:7"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "5295:5:7"
}
],
"functionName": {
"name": "cleanup_t_bytes32",
"nodeType": "YulIdentifier",
"src": "5277:17:7"
},
"nodeType": "YulFunctionCall",
"src": "5277:24:7"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "5265:6:7"
},
"nodeType": "YulFunctionCall",
"src": "5265:37:7"
},
"nodeType": "YulExpressionStatement",
"src": "5265:37:7"
}
]
},
"name": "abi_encode_t_bytes32_to_t_bytes32_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "5243:5:7",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "5250:3:7",
"type": ""
}
],
"src": "5190:118:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5412:124:7",
"statements": [
{
"nodeType": "YulAssignment",
"src": "5422:26:7",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5434:9:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5445:2:7",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5430:3:7"
},
"nodeType": "YulFunctionCall",
"src": "5430:18:7"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "5422:4:7"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "5502:6:7"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5515:9:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5526:1:7",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5511:3:7"
},
"nodeType": "YulFunctionCall",
"src": "5511:17:7"
}
],
"functionName": {
"name": "abi_encode_t_bytes32_to_t_bytes32_fromStack",
"nodeType": "YulIdentifier",
"src": "5458:43:7"
},
"nodeType": "YulFunctionCall",
"src": "5458:71:7"
},
"nodeType": "YulExpressionStatement",
"src": "5458:71:7"
}
]
},
"name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "5384:9:7",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "5396:6:7",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "5407:4:7",
"type": ""
}
],
"src": "5314:222:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5607:53:7",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "5624:3:7"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "5647:5:7"
}
],
"functionName": {
"name": "cleanup_t_address",
"nodeType": "YulIdentifier",
"src": "5629:17:7"
},
"nodeType": "YulFunctionCall",
"src": "5629:24:7"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "5617:6:7"
},
"nodeType": "YulFunctionCall",
"src": "5617:37:7"
},
"nodeType": "YulExpressionStatement",
"src": "5617:37:7"
}
]
},
"name": "abi_encode_t_address_to_t_address_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "5595:5:7",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "5602:3:7",
"type": ""
}
],
"src": "5542:118:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5764:124:7",
"statements": [
{
"nodeType": "YulAssignment",
"src": "5774:26:7",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5786:9:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5797:2:7",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5782:3:7"
},
"nodeType": "YulFunctionCall",
"src": "5782:18:7"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "5774:4:7"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "5854:6:7"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5867:9:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5878:1:7",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5863:3:7"
},
"nodeType": "YulFunctionCall",
"src": "5863:17:7"
}
],
"functionName": {
"name": "abi_encode_t_address_to_t_address_fromStack",
"nodeType": "YulIdentifier",
"src": "5810:43:7"
},
"nodeType": "YulFunctionCall",
"src": "5810:71:7"
},
"nodeType": "YulExpressionStatement",
"src": "5810:71:7"
}
]
},
"name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "5736:9:7",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "5748:6:7",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "5759:4:7",
"type": ""
}
],
"src": "5666:222:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5965:40:7",
"statements": [
{
"nodeType": "YulAssignment",
"src": "5976:22:7",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "5992:5:7"
}
],
"functionName": {
"name": "sload",
"nodeType": "YulIdentifier",
"src": "5986:5:7"
},
"nodeType": "YulFunctionCall",
"src": "5986:12:7"
},
"variableNames": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "5976:6:7"
}
]
}
]
},
"name": "array_length_t_array$_t_address_$dyn_storage",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "5948:5:7",
"type": ""
}
],
"returnVariables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "5958:6:7",
"type": ""
}
],
"src": "5894:111:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6122:73:7",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "6139:3:7"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "6144:6:7"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "6132:6:7"
},
"nodeType": "YulFunctionCall",
"src": "6132:19:7"
},
"nodeType": "YulExpressionStatement",
"src": "6132:19:7"
},
{
"nodeType": "YulAssignment",
"src": "6160:29:7",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "6179:3:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6184:4:7",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6175:3:7"
},
"nodeType": "YulFunctionCall",
"src": "6175:14:7"
},
"variableNames": [
{
"name": "updated_pos",
"nodeType": "YulIdentifier",
"src": "6160:11:7"
}
]
}
]
},
"name": "array_storeLengthForEncoding_t_array$_t_address_$dyn_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "6094:3:7",
"type": ""
},
{
"name": "length",
"nodeType": "YulTypedName",
"src": "6099:6:7",
"type": ""
}
],
"returnVariables": [
{
"name": "updated_pos",
"nodeType": "YulTypedName",
"src": "6110:11:7",
"type": ""
}
],
"src": "6011:184:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6270:87:7",
"statements": [
{
"nodeType": "YulAssignment",
"src": "6280:11:7",
"value": {
"name": "ptr",
"nodeType": "YulIdentifier",
"src": "6288:3:7"
},
"variableNames": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "6280:4:7"
}
]
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6308:1:7",
"type": "",
"value": "0"
},
{
"name": "ptr",
"nodeType": "YulIdentifier",
"src": "6311:3:7"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "6301:6:7"
},
"nodeType": "YulFunctionCall",
"src": "6301:14:7"
},
"nodeType": "YulExpressionStatement",
"src": "6301:14:7"
},
{
"nodeType": "YulAssignment",
"src": "6324:26:7",
"value": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6342:1:7",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6345:4:7",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "keccak256",
"nodeType": "YulIdentifier",
"src": "6332:9:7"
},
"nodeType": "YulFunctionCall",
"src": "6332:18:7"
},
"variableNames": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "6324:4:7"
}
]
}
]
},
"name": "array_dataslot_t_array$_t_address_$dyn_storage",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "ptr",
"nodeType": "YulTypedName",
"src": "6257:3:7",
"type": ""
}
],
"returnVariables": [
{
"name": "data",
"nodeType": "YulTypedName",
"src": "6265:4:7",
"type": ""
}
],
"src": "6201:156:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6418:53:7",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "6435:3:7"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "6458:5:7"
}
],
"functionName": {
"name": "cleanup_t_address",
"nodeType": "YulIdentifier",
"src": "6440:17:7"
},
"nodeType": "YulFunctionCall",
"src": "6440:24:7"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "6428:6:7"
},
"nodeType": "YulFunctionCall",
"src": "6428:37:7"
},
"nodeType": "YulExpressionStatement",
"src": "6428:37:7"
}
]
},
"name": "abi_encode_t_address_to_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "6406:5:7",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "6413:3:7",
"type": ""
}
],
"src": "6363:108:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6557:99:7",
"statements": [
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "6601:6:7"
},
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "6609:3:7"
}
],
"functionName": {
"name": "abi_encode_t_address_to_t_address",
"nodeType": "YulIdentifier",
"src": "6567:33:7"
},
"nodeType": "YulFunctionCall",
"src": "6567:46:7"
},
"nodeType": "YulExpressionStatement",
"src": "6567:46:7"
},
{
"nodeType": "YulAssignment",
"src": "6622:28:7",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "6640:3:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6645:4:7",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6636:3:7"
},
"nodeType": "YulFunctionCall",
"src": "6636:14:7"
},
"variableNames": [
{
"name": "updatedPos",
"nodeType": "YulIdentifier",
"src": "6622:10:7"
}
]
}
]
},
"name": "abi_encodeUpdatedPos_t_address_to_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "6530:6:7",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "6538:3:7",
"type": ""
}
],
"returnVariables": [
{
"name": "updatedPos",
"nodeType": "YulTypedName",
"src": "6546:10:7",
"type": ""
}
],
"src": "6477:179:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6713:51:7",
"statements": [
{
"nodeType": "YulAssignment",
"src": "6723:34:7",
"value": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6748:1:7",
"type": "",
"value": "0"
},
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "6751:5:7"
}
],
"functionName": {
"name": "shr",
"nodeType": "YulIdentifier",
"src": "6744:3:7"
},
"nodeType": "YulFunctionCall",
"src": "6744:13:7"
},
"variableNames": [
{
"name": "newValue",
"nodeType": "YulIdentifier",
"src": "6723:8:7"
}
]
}
]
},
"name": "shift_right_0_unsigned",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "6694:5:7",
"type": ""
}
],
"returnVariables": [
{
"name": "newValue",
"nodeType": "YulTypedName",
"src": "6704:8:7",
"type": ""
}
],
"src": "6662:102:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6828:81:7",
"statements": [
{
"nodeType": "YulAssignment",
"src": "6838:65:7",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "6853:5:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6860:42:7",
"type": "",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "6849:3:7"
},
"nodeType": "YulFunctionCall",
"src": "6849:54:7"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "6838:7:7"
}
]
}
]
},
"name": "cleanup_from_storage_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "6810:5:7",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "6820:7:7",
"type": ""
}
],
"src": "6770:139:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6990:91:7",
"statements": [
{
"nodeType": "YulAssignment",
"src": "7000:75:7",
"value": {
"arguments": [
{
"arguments": [
{
"name": "slot_value",
"nodeType": "YulIdentifier",
"src": "7063:10:7"
}
],
"functionName": {
"name": "shift_right_0_unsigned",
"nodeType": "YulIdentifier",
"src": "7040:22:7"
},
"nodeType": "YulFunctionCall",
"src": "7040:34:7"
}
],
"functionName": {
"name": "cleanup_from_storage_t_address",
"nodeType": "YulIdentifier",
"src": "7009:30:7"
},
"nodeType": "YulFunctionCall",
"src": "7009:66:7"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "7000:5:7"
}
]
}
]
},
"name": "extract_from_storage_value_offset_0t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "slot_value",
"nodeType": "YulTypedName",
"src": "6969:10:7",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "6984:5:7",
"type": ""
}
],
"src": "6915:166:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "7148:83:7",
"statements": [
{
"nodeType": "YulAssignment",
"src": "7158:66:7",
"value": {
"arguments": [
{
"arguments": [
{
"name": "slot",
"nodeType": "YulIdentifier",
"src": "7218:4:7"
}
],
"functionName": {
"name": "sload",
"nodeType": "YulIdentifier",
"src": "7212:5:7"
},
"nodeType": "YulFunctionCall",
"src": "7212:11:7"
}
],
"functionName": {
"name": "extract_from_storage_value_offset_0t_address",
"nodeType": "YulIdentifier",
"src": "7167:44:7"
},
"nodeType": "YulFunctionCall",
"src": "7167:57:7"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "7158:5:7"
}
]
}
]
},
"name": "read_from_storage_offset_0_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "slot",
"nodeType": "YulTypedName",
"src": "7133:4:7",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "7142:5:7",
"type": ""
}
],
"src": "7087:144:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "7309:38:7",
"statements": [
{
"nodeType": "YulAssignment",
"src": "7319:22:7",
"value": {
"arguments": [
{
"name": "ptr",
"nodeType": "YulIdentifier",
"src": "7331:3:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7336:4:7",
"type": "",
"value": "0x01"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7327:3:7"
},
"nodeType": "YulFunctionCall",
"src": "7327:14:7"
},
"variableNames": [
{
"name": "next",
"nodeType": "YulIdentifier",
"src": "7319:4:7"
}
]
}
]
},
"name": "array_nextElement_t_array$_t_address_$dyn_storage",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "ptr",
"nodeType": "YulTypedName",
"src": "7296:3:7",
"type": ""
}
],
"returnVariables": [
{
"name": "next",
"nodeType": "YulTypedName",
"src": "7304:4:7",
"type": ""
}
],
"src": "7237:110:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "7504:630:7",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "7514:65:7",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "7573:5:7"
}
],
"functionName": {
"name": "array_length_t_array$_t_address_$dyn_storage",
"nodeType": "YulIdentifier",
"src": "7528:44:7"
},
"nodeType": "YulFunctionCall",
"src": "7528:51:7"
},
"variables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "7518:6:7",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "7588:93:7",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "7669:3:7"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "7674:6:7"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_array$_t_address_$dyn_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "7595:73:7"
},
"nodeType": "YulFunctionCall",
"src": "7595:86:7"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "7588:3:7"
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "7690:68:7",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "7752:5:7"
}
],
"functionName": {
"name": "array_dataslot_t_array$_t_address_$dyn_storage",
"nodeType": "YulIdentifier",
"src": "7705:46:7"
},
"nodeType": "YulFunctionCall",
"src": "7705:53:7"
},
"variables": [
{
"name": "baseRef",
"nodeType": "YulTypedName",
"src": "7694:7:7",
"type": ""
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "7767:21:7",
"value": {
"name": "baseRef",
"nodeType": "YulIdentifier",
"src": "7781:7:7"
},
"variables": [
{
"name": "srcPtr",
"nodeType": "YulTypedName",
"src": "7771:6:7",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "7857:252:7",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "7871:65:7",
"value": {
"arguments": [
{
"name": "srcPtr",
"nodeType": "YulIdentifier",
"src": "7929:6:7"
}
],
"functionName": {
"name": "read_from_storage_offset_0_t_address",
"nodeType": "YulIdentifier",
"src": "7892:36:7"
},
"nodeType": "YulFunctionCall",
"src": "7892:44:7"
},
"variables": [
{
"name": "elementValue0",
"nodeType": "YulTypedName",
"src": "7875:13:7",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "7949:70:7",
"value": {
"arguments": [
{
"name": "elementValue0",
"nodeType": "YulIdentifier",
"src": "8000:13:7"
},
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "8015:3:7"
}
],
"functionName": {
"name": "abi_encodeUpdatedPos_t_address_to_t_address",
"nodeType": "YulIdentifier",
"src": "7956:43:7"
},
"nodeType": "YulFunctionCall",
"src": "7956:63:7"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "7949:3:7"
}
]
},
{
"nodeType": "YulAssignment",
"src": "8032:67:7",
"value": {
"arguments": [
{
"name": "srcPtr",
"nodeType": "YulIdentifier",
"src": "8092:6:7"
}
],
"functionName": {
"name": "array_nextElement_t_array$_t_address_$dyn_storage",
"nodeType": "YulIdentifier",
"src": "8042:49:7"
},
"nodeType": "YulFunctionCall",
"src": "8042:57:7"
},
"variableNames": [
{
"name": "srcPtr",
"nodeType": "YulIdentifier",
"src": "8032:6:7"
}
]
}
]
},
"condition": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "7819:1:7"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "7822:6:7"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "7816:2:7"
},
"nodeType": "YulFunctionCall",
"src": "7816:13:7"
},
"nodeType": "YulForLoop",
"post": {
"nodeType": "YulBlock",
"src": "7830:18:7",
"statements": [
{
"nodeType": "YulAssignment",
"src": "7832:14:7",
"value": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "7841:1:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7844:1:7",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7837:3:7"
},
"nodeType": "YulFunctionCall",
"src": "7837:9:7"
},
"variableNames": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "7832:1:7"
}
]
}
]
},
"pre": {
"nodeType": "YulBlock",
"src": "7801:14:7",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "7803:10:7",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "7812:1:7",
"type": "",
"value": "0"
},
"variables": [
{
"name": "i",
"nodeType": "YulTypedName",
"src": "7807:1:7",
"type": ""
}
]
}
]
},
"src": "7797:312:7"
},
{
"nodeType": "YulAssignment",
"src": "8118:10:7",
"value": {
"name": "pos",
"nodeType": "YulIdentifier",
"src": "8125:3:7"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "8118:3:7"
}
]
}
]
},
"name": "abi_encode_t_array$_t_address_$dyn_storage_to_t_array$_t_address_$dyn_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "7483:5:7",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "7490:3:7",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "7499:3:7",
"type": ""
}
],
"src": "7383:751:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "8205:53:7",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "8222:3:7"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "8245:5:7"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "8227:17:7"
},
"nodeType": "YulFunctionCall",
"src": "8227:24:7"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "8215:6:7"
},
"nodeType": "YulFunctionCall",
"src": "8215:37:7"
},
"nodeType": "YulExpressionStatement",
"src": "8215:37:7"
}
]
},
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "8193:5:7",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "8200:3:7",
"type": ""
}
],
"src": "8140:118:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "8465:386:7",
"statements": [
{
"nodeType": "YulAssignment",
"src": "8475:26:7",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "8487:9:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8498:2:7",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8483:3:7"
},
"nodeType": "YulFunctionCall",
"src": "8483:18:7"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "8475:4:7"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "8522:9:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8533:1:7",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8518:3:7"
},
"nodeType": "YulFunctionCall",
"src": "8518:17:7"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "8541:4:7"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "8547:9:7"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "8537:3:7"
},
"nodeType": "YulFunctionCall",
"src": "8537:20:7"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "8511:6:7"
},
"nodeType": "YulFunctionCall",
"src": "8511:47:7"
},
"nodeType": "YulExpressionStatement",
"src": "8511:47:7"
},
{
"nodeType": "YulAssignment",
"src": "8567:113:7",
"value": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "8666:6:7"
},
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "8675:4:7"
}
],
"functionName": {
"name": "abi_encode_t_array$_t_address_$dyn_storage_to_t_array$_t_address_$dyn_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "8575:90:7"
},
"nodeType": "YulFunctionCall",
"src": "8575:105:7"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "8567:4:7"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "8734:6:7"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "8747:9:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8758:2:7",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8743:3:7"
},
"nodeType": "YulFunctionCall",
"src": "8743:18:7"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulIdentifier",
"src": "8690:43:7"
},
"nodeType": "YulFunctionCall",
"src": "8690:72:7"
},
"nodeType": "YulExpressionStatement",
"src": "8690:72:7"
},
{
"expression": {
"arguments": [
{
"name": "value2",
"nodeType": "YulIdentifier",
"src": "8816:6:7"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "8829:9:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8840:2:7",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8825:3:7"
},
"nodeType": "YulFunctionCall",
"src": "8825:18:7"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulIdentifier",
"src": "8772:43:7"
},
"nodeType": "YulFunctionCall",
"src": "8772:72:7"
},
"nodeType": "YulExpressionStatement",
"src": "8772:72:7"
}
]
},
"name": "abi_encode_tuple_t_array$_t_address_$dyn_storage_t_uint256_t_uint256__to_t_array$_t_address_$dyn_memory_ptr_t_uint256_t_uint256__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "8421:9:7",
"type": ""
},
{
"name": "value2",
"nodeType": "YulTypedName",
"src": "8433:6:7",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "8441:6:7",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "8449:6:7",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "8460:4:7",
"type": ""
}
],
"src": "8264:587:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "8900:79:7",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "8957:16:7",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8966:1:7",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8969:1:7",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "8959:6:7"
},
"nodeType": "YulFunctionCall",
"src": "8959:12:7"
},
"nodeType": "YulExpressionStatement",
"src": "8959:12:7"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "8923:5:7"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "8948:5:7"
}
],
"functionName": {
"name": "cleanup_t_bytes32",
"nodeType": "YulIdentifier",
"src": "8930:17:7"
},
"nodeType": "YulFunctionCall",
"src": "8930:24:7"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "8920:2:7"
},
"nodeType": "YulFunctionCall",
"src": "8920:35:7"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "8913:6:7"
},
"nodeType": "YulFunctionCall",
"src": "8913:43:7"
},
"nodeType": "YulIf",
"src": "8910:63:7"
}
]
},
"name": "validator_revert_t_bytes32",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "8893:5:7",
"type": ""
}
],
"src": "8857:122:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "9048:80:7",
"statements": [
{
"nodeType": "YulAssignment",
"src": "9058:22:7",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "9073:6:7"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "9067:5:7"
},
"nodeType": "YulFunctionCall",
"src": "9067:13:7"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "9058:5:7"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "9116:5:7"
}
],
"functionName": {
"name": "validator_revert_t_bytes32",
"nodeType": "YulIdentifier",
"src": "9089:26:7"
},
"nodeType": "YulFunctionCall",
"src": "9089:33:7"
},
"nodeType": "YulExpressionStatement",
"src": "9089:33:7"
}
]
},
"name": "abi_decode_t_bytes32_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "9026:6:7",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "9034:3:7",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "9042:5:7",
"type": ""
}
],
"src": "8985:143:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "9211:274:7",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "9257:83:7",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulIdentifier",
"src": "9259:77:7"
},
"nodeType": "YulFunctionCall",
"src": "9259:79:7"
},
"nodeType": "YulExpressionStatement",
"src": "9259:79:7"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "9232:7:7"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "9241:9:7"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "9228:3:7"
},
"nodeType": "YulFunctionCall",
"src": "9228:23:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9253:2:7",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "9224:3:7"
},
"nodeType": "YulFunctionCall",
"src": "9224:32:7"
},
"nodeType": "YulIf",
"src": "9221:119:7"
},
{
"nodeType": "YulBlock",
"src": "9350:128:7",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "9365:15:7",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "9379:1:7",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "9369:6:7",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "9394:74:7",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "9440:9:7"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "9451:6:7"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "9436:3:7"
},
"nodeType": "YulFunctionCall",
"src": "9436:22:7"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "9460:7:7"
}
],
"functionName": {
"name": "abi_decode_t_bytes32_fromMemory",
"nodeType": "YulIdentifier",
"src": "9404:31:7"
},
"nodeType": "YulFunctionCall",
"src": "9404:64:7"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "9394:6:7"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_bytes32_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "9181:9:7",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "9192:7:7",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "9204:6:7",
"type": ""
}
],
"src": "9134:351:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "9587:73:7",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "9604:3:7"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "9609:6:7"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "9597:6:7"
},
"nodeType": "YulFunctionCall",
"src": "9597:19:7"
},
"nodeType": "YulExpressionStatement",
"src": "9597:19:7"
},
{
"nodeType": "YulAssignment",
"src": "9625:29:7",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "9644:3:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9649:4:7",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "9640:3:7"
},
"nodeType": "YulFunctionCall",
"src": "9640:14:7"
},
"variableNames": [
{
"name": "updated_pos",
"nodeType": "YulIdentifier",
"src": "9625:11:7"
}
]
}
]
},
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "9559:3:7",
"type": ""
},
{
"name": "length",
"nodeType": "YulTypedName",
"src": "9564:6:7",
"type": ""
}
],
"returnVariables": [
{
"name": "updated_pos",
"nodeType": "YulTypedName",
"src": "9575:11:7",
"type": ""
}
],
"src": "9491:169:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "9772:119:7",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "9794:6:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9802:1:7",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "9790:3:7"
},
"nodeType": "YulFunctionCall",
"src": "9790:14:7"
},
{
"hexValue": "4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061",
"kind": "string",
"nodeType": "YulLiteral",
"src": "9806:34:7",
"type": "",
"value": "Ownable: new owner is the zero a"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "9783:6:7"
},
"nodeType": "YulFunctionCall",
"src": "9783:58:7"
},
"nodeType": "YulExpressionStatement",
"src": "9783:58:7"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "9862:6:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9870:2:7",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "9858:3:7"
},
"nodeType": "YulFunctionCall",
"src": "9858:15:7"
},
{
"hexValue": "646472657373",
"kind": "string",
"nodeType": "YulLiteral",
"src": "9875:8:7",
"type": "",
"value": "ddress"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "9851:6:7"
},
"nodeType": "YulFunctionCall",
"src": "9851:33:7"
},
"nodeType": "YulExpressionStatement",
"src": "9851:33:7"
}
]
},
"name": "store_literal_in_memory_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "9764:6:7",
"type": ""
}
],
"src": "9666:225:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "10043:220:7",
"statements": [
{
"nodeType": "YulAssignment",
"src": "10053:74:7",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "10119:3:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10124:2:7",
"type": "",
"value": "38"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "10060:58:7"
},
"nodeType": "YulFunctionCall",
"src": "10060:67:7"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "10053:3:7"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "10225:3:7"
}
],
"functionName": {
"name": "store_literal_in_memory_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe",
"nodeType": "YulIdentifier",
"src": "10136:88:7"
},
"nodeType": "YulFunctionCall",
"src": "10136:93:7"
},
"nodeType": "YulExpressionStatement",
"src": "10136:93:7"
},
{
"nodeType": "YulAssignment",
"src": "10238:19:7",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "10249:3:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10254:2:7",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "10245:3:7"
},
"nodeType": "YulFunctionCall",
"src": "10245:12:7"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "10238:3:7"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "10031:3:7",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "10039:3:7",
"type": ""
}
],
"src": "9897:366:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "10440:248:7",
"statements": [
{
"nodeType": "YulAssignment",
"src": "10450:26:7",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "10462:9:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10473:2:7",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "10458:3:7"
},
"nodeType": "YulFunctionCall",
"src": "10458:18:7"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "10450:4:7"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "10497:9:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10508:1:7",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "10493:3:7"
},
"nodeType": "YulFunctionCall",
"src": "10493:17:7"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "10516:4:7"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "10522:9:7"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "10512:3:7"
},
"nodeType": "YulFunctionCall",
"src": "10512:20:7"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "10486:6:7"
},
"nodeType": "YulFunctionCall",
"src": "10486:47:7"
},
"nodeType": "YulExpressionStatement",
"src": "10486:47:7"
},
{
"nodeType": "YulAssignment",
"src": "10542:139:7",
"value": {
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "10676:4:7"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "10550:124:7"
},
"nodeType": "YulFunctionCall",
"src": "10550:131:7"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "10542:4:7"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "10420:9:7",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "10435:4:7",
"type": ""
}
],
"src": "10269:419:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "10800:76:7",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "10822:6:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10830:1:7",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "10818:3:7"
},
"nodeType": "YulFunctionCall",
"src": "10818:14:7"
},
{
"hexValue": "4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572",
"kind": "string",
"nodeType": "YulLiteral",
"src": "10834:34:7",
"type": "",
"value": "Ownable: caller is not the owner"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "10811:6:7"
},
"nodeType": "YulFunctionCall",
"src": "10811:58:7"
},
"nodeType": "YulExpressionStatement",
"src": "10811:58:7"
}
]
},
"name": "store_literal_in_memory_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "10792:6:7",
"type": ""
}
],
"src": "10694:182:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "11028:220:7",
"statements": [
{
"nodeType": "YulAssignment",
"src": "11038:74:7",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "11104:3:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11109:2:7",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "11045:58:7"
},
"nodeType": "YulFunctionCall",
"src": "11045:67:7"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "11038:3:7"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "11210:3:7"
}
],
"functionName": {
"name": "store_literal_in_memory_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe",
"nodeType": "YulIdentifier",
"src": "11121:88:7"
},
"nodeType": "YulFunctionCall",
"src": "11121:93:7"
},
"nodeType": "YulExpressionStatement",
"src": "11121:93:7"
},
{
"nodeType": "YulAssignment",
"src": "11223:19:7",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "11234:3:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11239:2:7",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "11230:3:7"
},
"nodeType": "YulFunctionCall",
"src": "11230:12:7"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "11223:3:7"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "11016:3:7",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "11024:3:7",
"type": ""
}
],
"src": "10882:366:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "11425:248:7",
"statements": [
{
"nodeType": "YulAssignment",
"src": "11435:26:7",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "11447:9:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11458:2:7",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "11443:3:7"
},
"nodeType": "YulFunctionCall",
"src": "11443:18:7"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "11435:4:7"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "11482:9:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11493:1:7",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "11478:3:7"
},
"nodeType": "YulFunctionCall",
"src": "11478:17:7"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "11501:4:7"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "11507:9:7"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "11497:3:7"
},
"nodeType": "YulFunctionCall",
"src": "11497:20:7"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "11471:6:7"
},
"nodeType": "YulFunctionCall",
"src": "11471:47:7"
},
"nodeType": "YulExpressionStatement",
"src": "11471:47:7"
},
{
"nodeType": "YulAssignment",
"src": "11527:139:7",
"value": {
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "11661:4:7"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "11535:124:7"
},
"nodeType": "YulFunctionCall",
"src": "11535:131:7"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "11527:4:7"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "11405:9:7",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "11420:4:7",
"type": ""
}
],
"src": "11254:419:7"
}
]
},
"contents": "{\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function validator_revert_t_uint256(value) {\n if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\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 revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() {\n revert(0, 0)\n }\n\n function round_up_to_mul_of_32(value) -> result {\n result := and(add(value, 31), not(31))\n }\n\n function panic_error_0x41() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n\n function finalize_allocation(memPtr, size) {\n let newFreePtr := add(memPtr, round_up_to_mul_of_32(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 allocate_memory(size) -> memPtr {\n memPtr := allocate_unbounded()\n finalize_allocation(memPtr, size)\n }\n\n function array_allocation_size_t_array$_t_address_$dyn_memory_ptr(length) -> size {\n // Make sure we can allocate memory without overflow\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n\n size := mul(length, 0x20)\n\n // add length slot\n size := add(size, 0x20)\n\n }\n\n function revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef() {\n revert(0, 0)\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\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 abi_decode_t_address(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_address(value)\n }\n\n // address[]\n function abi_decode_available_length_t_array$_t_address_$dyn_memory_ptr(offset, length, end) -> array {\n array := allocate_memory(array_allocation_size_t_array$_t_address_$dyn_memory_ptr(length))\n let dst := array\n\n mstore(array, length)\n dst := add(array, 0x20)\n\n let srcEnd := add(offset, mul(length, 0x20))\n if gt(srcEnd, end) {\n revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef()\n }\n for { let src := offset } lt(src, srcEnd) { src := add(src, 0x20) }\n {\n\n let elementPos := src\n\n mstore(dst, abi_decode_t_address(elementPos, end))\n dst := add(dst, 0x20)\n }\n }\n\n // address[]\n function abi_decode_t_array$_t_address_$dyn_memory_ptr(offset, end) -> array {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n let length := calldataload(offset)\n array := abi_decode_available_length_t_array$_t_address_$dyn_memory_ptr(add(offset, 0x20), length, end)\n }\n\n function abi_decode_tuple_t_uint256t_array$_t_address_$dyn_memory_ptr(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\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 := calldataload(add(headStart, 32))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value1 := abi_decode_t_array$_t_address_$dyn_memory_ptr(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\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_uint256t_uint256(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\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 cleanup_t_bytes32(value) -> cleaned {\n cleaned := value\n }\n\n function abi_encode_t_bytes32_to_t_bytes32_fromStack(value, pos) {\n mstore(pos, cleanup_t_bytes32(value))\n }\n\n function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_bytes32_to_t_bytes32_fromStack(value0, add(headStart, 0))\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_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 array_length_t_array$_t_address_$dyn_storage(value) -> length {\n\n length := sload(value)\n\n }\n\n function array_storeLengthForEncoding_t_array$_t_address_$dyn_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function array_dataslot_t_array$_t_address_$dyn_storage(ptr) -> data {\n data := ptr\n\n mstore(0, ptr)\n data := keccak256(0, 0x20)\n\n }\n\n function abi_encode_t_address_to_t_address(value, pos) {\n mstore(pos, cleanup_t_address(value))\n }\n\n function abi_encodeUpdatedPos_t_address_to_t_address(value0, pos) -> updatedPos {\n abi_encode_t_address_to_t_address(value0, pos)\n updatedPos := add(pos, 0x20)\n }\n\n function shift_right_0_unsigned(value) -> newValue {\n newValue :=\n\n shr(0, value)\n\n }\n\n function cleanup_from_storage_t_address(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function extract_from_storage_value_offset_0t_address(slot_value) -> value {\n value := cleanup_from_storage_t_address(shift_right_0_unsigned(slot_value))\n }\n\n function read_from_storage_offset_0_t_address(slot) -> value {\n value := extract_from_storage_value_offset_0t_address(sload(slot))\n\n }\n\n function array_nextElement_t_array$_t_address_$dyn_storage(ptr) -> next {\n next := add(ptr, 0x01)\n }\n\n // address[] -> address[]\n function abi_encode_t_array$_t_address_$dyn_storage_to_t_array$_t_address_$dyn_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_array$_t_address_$dyn_storage(value)\n pos := array_storeLengthForEncoding_t_array$_t_address_$dyn_memory_ptr_fromStack(pos, length)\n let baseRef := array_dataslot_t_array$_t_address_$dyn_storage(value)\n let srcPtr := baseRef\n for { let i := 0 } lt(i, length) { i := add(i, 1) }\n {\n let elementValue0 := read_from_storage_offset_0_t_address(srcPtr)\n pos := abi_encodeUpdatedPos_t_address_to_t_address(elementValue0, pos)\n srcPtr := array_nextElement_t_array$_t_address_$dyn_storage(srcPtr)\n }\n end := pos\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_tuple_t_array$_t_address_$dyn_storage_t_uint256_t_uint256__to_t_array$_t_address_$dyn_memory_ptr_t_uint256_t_uint256__fromStack_reversed(headStart , value2, value1, value0) -> tail {\n tail := add(headStart, 96)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_array$_t_address_$dyn_storage_to_t_array$_t_address_$dyn_memory_ptr_fromStack(value0, tail)\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 validator_revert_t_bytes32(value) {\n if iszero(eq(value, cleanup_t_bytes32(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_bytes32_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_bytes32(value)\n }\n\n function abi_decode_tuple_t_bytes32_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes32_fromMemory(add(headStart, offset), dataEnd)\n }\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 store_literal_in_memory_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe(memPtr) {\n\n mstore(add(memPtr, 0), \"Ownable: new owner is the zero a\")\n\n mstore(add(memPtr, 32), \"ddress\")\n\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 store_literal_in_memory_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe(pos)\n end := add(pos, 64)\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 store_literal_in_memory_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe(memPtr) {\n\n mstore(add(memPtr, 0), \"Ownable: caller is not the owner\")\n\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 store_literal_in_memory_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe(pos)\n end := add(pos, 32)\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}\n",
"id": 7,
"language": "Yul",
"name": "#utility.yul"
}
],
"immutableReferences": {},
"linkReferences": {},
"object": "608060405234801561001057600080fd5b50600436106100885760003560e01c80638da5cb5b1161005b5780638da5cb5b146100ff578063a045a0151461011d578063ec2cf2d51461014d578063f2fde38b1461016b57610088565b80630fc9c33b1461008d57806367e2120e146100a95780636e53670a146100c5578063715018a6146100f5575b600080fd5b6100a760048036038101906100a291906107ec565b610187565b005b6100c360048036038101906100be9190610848565b6101bb565b005b6100df60048036038101906100da9190610875565b610207565b6040516100ec91906108ce565b60405180910390f35b6100fd6102c3565b005b6101076102d7565b60405161011491906108f8565b60405180910390f35b61013760048036038101906101329190610875565b610301565b60405161014491906108f8565b60405180910390f35b61015561034f565b60405161016291906108f8565b60405180910390f35b61018560048036038101906101809190610848565b610375565b005b61018f6103f8565b806066600084815260200190815260200160002090805190602001906101b6929190610544565b505050565b6101c36103f8565b80606560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166384dd0d126066600086815260200190815260200160002085856040518463ffffffff1660e01b815260040161027a93929190610a46565b602060405180830381865afa158015610297573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102bb9190610ab0565b905092915050565b6102cb6103f8565b6102d56000610476565b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6066602052816000526040600020818154811061031d57600080fd5b906000526020600020016000915091509054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61037d6103f8565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036103ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103e390610b60565b60405180910390fd5b6103f581610476565b50565b61040061053c565b73ffffffffffffffffffffffffffffffffffffffff1661041e6102d7565b73ffffffffffffffffffffffffffffffffffffffff1614610474576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161046b90610bcc565b60405180910390fd5b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600033905090565b8280548282559060005260206000209081019282156105bd579160200282015b828111156105bc5782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190610564565b5b5090506105ca91906105ce565b5090565b5b808211156105e75760008160009055506001016105cf565b5090565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b610612816105ff565b811461061d57600080fd5b50565b60008135905061062f81610609565b92915050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6106838261063a565b810181811067ffffffffffffffff821117156106a2576106a161064b565b5b80604052505050565b60006106b56105eb565b90506106c1828261067a565b919050565b600067ffffffffffffffff8211156106e1576106e061064b565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610722826106f7565b9050919050565b61073281610717565b811461073d57600080fd5b50565b60008135905061074f81610729565b92915050565b6000610768610763846106c6565b6106ab565b9050808382526020820190506020840283018581111561078b5761078a6106f2565b5b835b818110156107b457806107a08882610740565b84526020840193505060208101905061078d565b5050509392505050565b600082601f8301126107d3576107d2610635565b5b81356107e3848260208601610755565b91505092915050565b60008060408385031215610803576108026105f5565b5b600061081185828601610620565b925050602083013567ffffffffffffffff811115610832576108316105fa565b5b61083e858286016107be565b9150509250929050565b60006020828403121561085e5761085d6105f5565b5b600061086c84828501610740565b91505092915050565b6000806040838503121561088c5761088b6105f5565b5b600061089a85828601610620565b92505060206108ab85828601610620565b9150509250929050565b6000819050919050565b6108c8816108b5565b82525050565b60006020820190506108e360008301846108bf565b92915050565b6108f281610717565b82525050565b600060208201905061090d60008301846108e9565b92915050565b600081549050919050565b600082825260208201905092915050565b60008190508160005260206000209050919050565b61094d81610717565b82525050565b600061095f8383610944565b60208301905092915050565b60008160001c9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006109ab6109a68361096b565b610978565b9050919050565b60006109be8254610998565b9050919050565b6000600182019050919050565b60006109dd82610913565b6109e7818561091e565b93506109f28361092f565b8060005b83811015610a2a57610a07826109b2565b610a118882610953565b9750610a1c836109c5565b9250506001810190506109f6565b5085935050505092915050565b610a40816105ff565b82525050565b60006060820190508181036000830152610a6081866109d2565b9050610a6f6020830185610a37565b610a7c6040830184610a37565b949350505050565b610a8d816108b5565b8114610a9857600080fd5b50565b600081519050610aaa81610a84565b92915050565b600060208284031215610ac657610ac56105f5565b5b6000610ad484828501610a9b565b91505092915050565b600082825260208201905092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000610b4a602683610add565b9150610b5582610aee565b604082019050919050565b60006020820190508181036000830152610b7981610b3d565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000610bb6602083610add565b9150610bc182610b80565b602082019050919050565b60006020820190508181036000830152610be581610ba9565b905091905056fea264697066735822122050acc362451e4b76e8b7d5ef4276295109b4011862d33bfc1568152f3a26734c64736f6c63430008110033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x88 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DA5CB5B GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xFF JUMPI DUP1 PUSH4 0xA045A015 EQ PUSH2 0x11D JUMPI DUP1 PUSH4 0xEC2CF2D5 EQ PUSH2 0x14D JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x16B JUMPI PUSH2 0x88 JUMP JUMPDEST DUP1 PUSH4 0xFC9C33B EQ PUSH2 0x8D JUMPI DUP1 PUSH4 0x67E2120E EQ PUSH2 0xA9 JUMPI DUP1 PUSH4 0x6E53670A EQ PUSH2 0xC5 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0xF5 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA7 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xA2 SWAP2 SWAP1 PUSH2 0x7EC JUMP JUMPDEST PUSH2 0x187 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xC3 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xBE SWAP2 SWAP1 PUSH2 0x848 JUMP JUMPDEST PUSH2 0x1BB JUMP JUMPDEST STOP JUMPDEST PUSH2 0xDF PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xDA SWAP2 SWAP1 PUSH2 0x875 JUMP JUMPDEST PUSH2 0x207 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xEC SWAP2 SWAP1 PUSH2 0x8CE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xFD PUSH2 0x2C3 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x107 PUSH2 0x2D7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x114 SWAP2 SWAP1 PUSH2 0x8F8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x137 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x132 SWAP2 SWAP1 PUSH2 0x875 JUMP JUMPDEST PUSH2 0x301 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x144 SWAP2 SWAP1 PUSH2 0x8F8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x155 PUSH2 0x34F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x162 SWAP2 SWAP1 PUSH2 0x8F8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x185 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x180 SWAP2 SWAP1 PUSH2 0x848 JUMP JUMPDEST PUSH2 0x375 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x18F PUSH2 0x3F8 JUMP JUMPDEST DUP1 PUSH1 0x66 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x1B6 SWAP3 SWAP2 SWAP1 PUSH2 0x544 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x1C3 PUSH2 0x3F8 JUMP JUMPDEST DUP1 PUSH1 0x65 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x65 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x84DD0D12 PUSH1 0x66 PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP6 DUP6 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x27A SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xA46 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x297 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 0x2BB SWAP2 SWAP1 PUSH2 0xAB0 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x2CB PUSH2 0x3F8 JUMP JUMPDEST PUSH2 0x2D5 PUSH1 0x0 PUSH2 0x476 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH1 0x33 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x66 PUSH1 0x20 MSTORE DUP2 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x31D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP2 POP SWAP2 POP SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x65 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH2 0x37D PUSH2 0x3F8 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x3EC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3E3 SWAP1 PUSH2 0xB60 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x3F5 DUP2 PUSH2 0x476 JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x400 PUSH2 0x53C JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x41E PUSH2 0x2D7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x474 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x46B SWAP1 PUSH2 0xBCC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH1 0x33 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP2 PUSH1 0x33 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 PUSH1 0x0 CALLER SWAP1 POP SWAP1 JUMP JUMPDEST DUP3 DUP1 SLOAD DUP3 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP3 DUP3 ISZERO PUSH2 0x5BD JUMPI SWAP2 PUSH1 0x20 MUL DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x5BC JUMPI DUP3 MLOAD DUP3 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x564 JUMP JUMPDEST JUMPDEST POP SWAP1 POP PUSH2 0x5CA SWAP2 SWAP1 PUSH2 0x5CE JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x5E7 JUMPI PUSH1 0x0 DUP2 PUSH1 0x0 SWAP1 SSTORE POP PUSH1 0x1 ADD PUSH2 0x5CF JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x612 DUP2 PUSH2 0x5FF JUMP JUMPDEST DUP2 EQ PUSH2 0x61D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x62F DUP2 PUSH2 0x609 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0x683 DUP3 PUSH2 0x63A JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x6A2 JUMPI PUSH2 0x6A1 PUSH2 0x64B JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6B5 PUSH2 0x5EB JUMP JUMPDEST SWAP1 POP PUSH2 0x6C1 DUP3 DUP3 PUSH2 0x67A JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x6E1 JUMPI PUSH2 0x6E0 PUSH2 0x64B JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP3 MUL SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x722 DUP3 PUSH2 0x6F7 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x732 DUP2 PUSH2 0x717 JUMP JUMPDEST DUP2 EQ PUSH2 0x73D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x74F DUP2 PUSH2 0x729 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x768 PUSH2 0x763 DUP5 PUSH2 0x6C6 JUMP JUMPDEST PUSH2 0x6AB JUMP JUMPDEST SWAP1 POP DUP1 DUP4 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0x20 DUP5 MUL DUP4 ADD DUP6 DUP2 GT ISZERO PUSH2 0x78B JUMPI PUSH2 0x78A PUSH2 0x6F2 JUMP JUMPDEST JUMPDEST DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x7B4 JUMPI DUP1 PUSH2 0x7A0 DUP9 DUP3 PUSH2 0x740 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x78D JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x7D3 JUMPI PUSH2 0x7D2 PUSH2 0x635 JUMP JUMPDEST JUMPDEST DUP2 CALLDATALOAD PUSH2 0x7E3 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x755 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x803 JUMPI PUSH2 0x802 PUSH2 0x5F5 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x811 DUP6 DUP3 DUP7 ADD PUSH2 0x620 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x832 JUMPI PUSH2 0x831 PUSH2 0x5FA JUMP JUMPDEST JUMPDEST PUSH2 0x83E DUP6 DUP3 DUP7 ADD PUSH2 0x7BE JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x85E JUMPI PUSH2 0x85D PUSH2 0x5F5 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x86C DUP5 DUP3 DUP6 ADD PUSH2 0x740 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x88C JUMPI PUSH2 0x88B PUSH2 0x5F5 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x89A DUP6 DUP3 DUP7 ADD PUSH2 0x620 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x8AB DUP6 DUP3 DUP7 ADD PUSH2 0x620 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x8C8 DUP2 PUSH2 0x8B5 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x8E3 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x8BF JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x8F2 DUP2 PUSH2 0x717 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x90D PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x8E9 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SLOAD 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 DUP2 SWAP1 POP DUP2 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x94D DUP2 PUSH2 0x717 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x95F DUP4 DUP4 PUSH2 0x944 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 SHR SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9AB PUSH2 0x9A6 DUP4 PUSH2 0x96B JUMP JUMPDEST PUSH2 0x978 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9BE DUP3 SLOAD PUSH2 0x998 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9DD DUP3 PUSH2 0x913 JUMP JUMPDEST PUSH2 0x9E7 DUP2 DUP6 PUSH2 0x91E JUMP JUMPDEST SWAP4 POP PUSH2 0x9F2 DUP4 PUSH2 0x92F JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xA2A JUMPI PUSH2 0xA07 DUP3 PUSH2 0x9B2 JUMP JUMPDEST PUSH2 0xA11 DUP9 DUP3 PUSH2 0x953 JUMP JUMPDEST SWAP8 POP PUSH2 0xA1C DUP4 PUSH2 0x9C5 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x9F6 JUMP JUMPDEST POP DUP6 SWAP4 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xA40 DUP2 PUSH2 0x5FF JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xA60 DUP2 DUP7 PUSH2 0x9D2 JUMP JUMPDEST SWAP1 POP PUSH2 0xA6F PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0xA37 JUMP JUMPDEST PUSH2 0xA7C PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0xA37 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0xA8D DUP2 PUSH2 0x8B5 JUMP JUMPDEST DUP2 EQ PUSH2 0xA98 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0xAAA DUP2 PUSH2 0xA84 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xAC6 JUMPI PUSH2 0xAC5 PUSH2 0x5F5 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xAD4 DUP5 DUP3 DUP6 ADD PUSH2 0xA9B JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6464726573730000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB4A PUSH1 0x26 DUP4 PUSH2 0xADD JUMP JUMPDEST SWAP2 POP PUSH2 0xB55 DUP3 PUSH2 0xAEE JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xB79 DUP2 PUSH2 0xB3D JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xBB6 PUSH1 0x20 DUP4 PUSH2 0xADD JUMP JUMPDEST SWAP2 POP PUSH2 0xBC1 DUP3 PUSH2 0xB80 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xBE5 DUP2 PUSH2 0xBA9 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 POP 0xAC 0xC3 PUSH3 0x451E4B PUSH23 0xE8B7D5EF4276295109B4011862D33BFC1568152F3A2673 0x4C PUSH5 0x736F6C6343 STOP ADDMOD GT STOP CALLER ",
"sourceMap": "167:808:6:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;691:153;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;603:82;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;391:206;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2071:101:0;;;:::i;:::-;;1441:85;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;243:51:6;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;217:20;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2321:198:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;691:153:6;1334:13:0;:11;:13::i;:::-;822:15:6::1;796:14;:23;811:7;796:23;;;;;;;;;;;:41;;;;;;;;;;;;:::i;:::-;;691:153:::0;;:::o;603:82::-;1334:13:0;:11;:13::i;:::-;672:6:6::1;664:5;;:14;;;;;;;;;;;;;;;;;;603:82:::0;:::o;391:206::-;468:19;519:5;;;;;;;;;;;513:30;;;544:14;:23;559:7;544:23;;;;;;;;;;;569:7;578:11;513:77;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;499:91;;391:206;;;;:::o;2071:101:0:-;1334:13;:11;:13::i;:::-;2135:30:::1;2162:1;2135:18;:30::i;:::-;2071:101::o:0;1441:85::-;1487:7;1513:6;;;;;;;;;;;1506:13;;1441:85;:::o;243:51:6:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;217:20::-;;;;;;;;;;;;;:::o;2321:198:0:-;1334:13;:11;:13::i;:::-;2429:1:::1;2409:22;;:8;:22;;::::0;2401:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2484:28;2503:8;2484:18;:28::i;:::-;2321:198:::0;:::o;1599:130::-;1673:12;:10;:12::i;:::-;1662:23;;:7;:5;:7::i;:::-;:23;;;1654:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1599:130::o;2673:187::-;2746:16;2765:6;;;;;;;;;;;2746:25;;2790:8;2781:6;;:17;;;;;;;;;;;;;;;;;;2844:8;2813:40;;2834:8;2813:40;;;;;;;;;;;;2736:124;2673:187;:::o;850:96:3:-;903:7;929:10;922:17;;850:96;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:75:7:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:117::-;799:1;796;789:12;813:102;854:6;905:2;901:7;896:2;889:5;885:14;881:28;871:38;;813:102;;;:::o;921:180::-;969:77;966:1;959:88;1066:4;1063:1;1056:15;1090:4;1087:1;1080:15;1107:281;1190:27;1212:4;1190:27;:::i;:::-;1182:6;1178:40;1320:6;1308:10;1305:22;1284:18;1272:10;1269:34;1266:62;1263:88;;;1331:18;;:::i;:::-;1263:88;1371:10;1367:2;1360:22;1150:238;1107:281;;:::o;1394:129::-;1428:6;1455:20;;:::i;:::-;1445:30;;1484:33;1512:4;1504:6;1484:33;:::i;:::-;1394:129;;;:::o;1529:311::-;1606:4;1696:18;1688:6;1685:30;1682:56;;;1718:18;;:::i;:::-;1682:56;1768:4;1760:6;1756:17;1748:25;;1828:4;1822;1818:15;1810:23;;1529:311;;;:::o;1846:117::-;1955:1;1952;1945:12;1969:126;2006:7;2046:42;2039:5;2035:54;2024:65;;1969:126;;;:::o;2101:96::-;2138:7;2167:24;2185:5;2167:24;:::i;:::-;2156:35;;2101:96;;;:::o;2203:122::-;2276:24;2294:5;2276:24;:::i;:::-;2269:5;2266:35;2256:63;;2315:1;2312;2305:12;2256:63;2203:122;:::o;2331:139::-;2377:5;2415:6;2402:20;2393:29;;2431:33;2458:5;2431:33;:::i;:::-;2331:139;;;;:::o;2493:710::-;2589:5;2614:81;2630:64;2687:6;2630:64;:::i;:::-;2614:81;:::i;:::-;2605:90;;2715:5;2744:6;2737:5;2730:21;2778:4;2771:5;2767:16;2760:23;;2831:4;2823:6;2819:17;2811:6;2807:30;2860:3;2852:6;2849:15;2846:122;;;2879:79;;:::i;:::-;2846:122;2994:6;2977:220;3011:6;3006:3;3003:15;2977:220;;;3086:3;3115:37;3148:3;3136:10;3115:37;:::i;:::-;3110:3;3103:50;3182:4;3177:3;3173:14;3166:21;;3053:144;3037:4;3032:3;3028:14;3021:21;;2977:220;;;2981:21;2595:608;;2493:710;;;;;:::o;3226:370::-;3297:5;3346:3;3339:4;3331:6;3327:17;3323:27;3313:122;;3354:79;;:::i;:::-;3313:122;3471:6;3458:20;3496:94;3586:3;3578:6;3571:4;3563:6;3559:17;3496:94;:::i;:::-;3487:103;;3303:293;3226:370;;;;:::o;3602:684::-;3695:6;3703;3752:2;3740:9;3731:7;3727:23;3723:32;3720:119;;;3758:79;;:::i;:::-;3720:119;3878:1;3903:53;3948:7;3939:6;3928:9;3924:22;3903:53;:::i;:::-;3893:63;;3849:117;4033:2;4022:9;4018:18;4005:32;4064:18;4056:6;4053:30;4050:117;;;4086:79;;:::i;:::-;4050:117;4191:78;4261:7;4252:6;4241:9;4237:22;4191:78;:::i;:::-;4181:88;;3976:303;3602:684;;;;;:::o;4292:329::-;4351:6;4400:2;4388:9;4379:7;4375:23;4371:32;4368:119;;;4406:79;;:::i;:::-;4368:119;4526:1;4551:53;4596:7;4587:6;4576:9;4572:22;4551:53;:::i;:::-;4541:63;;4497:117;4292:329;;;;:::o;4627:474::-;4695:6;4703;4752:2;4740:9;4731:7;4727:23;4723:32;4720:119;;;4758:79;;:::i;:::-;4720:119;4878:1;4903:53;4948:7;4939:6;4928:9;4924:22;4903:53;:::i;:::-;4893:63;;4849:117;5005:2;5031:53;5076:7;5067:6;5056:9;5052:22;5031:53;:::i;:::-;5021:63;;4976:118;4627:474;;;;;:::o;5107:77::-;5144:7;5173:5;5162:16;;5107:77;;;:::o;5190:118::-;5277:24;5295:5;5277:24;:::i;:::-;5272:3;5265:37;5190:118;;:::o;5314:222::-;5407:4;5445:2;5434:9;5430:18;5422:26;;5458:71;5526:1;5515:9;5511:17;5502:6;5458:71;:::i;:::-;5314:222;;;;:::o;5542:118::-;5629:24;5647:5;5629:24;:::i;:::-;5624:3;5617:37;5542:118;;:::o;5666:222::-;5759:4;5797:2;5786:9;5782:18;5774:26;;5810:71;5878:1;5867:9;5863:17;5854:6;5810:71;:::i;:::-;5666:222;;;;:::o;5894:111::-;5958:6;5992:5;5986:12;5976:22;;5894:111;;;:::o;6011:184::-;6110:11;6144:6;6139:3;6132:19;6184:4;6179:3;6175:14;6160:29;;6011:184;;;;:::o;6201:156::-;6265:4;6288:3;6280:11;;6311:3;6308:1;6301:14;6345:4;6342:1;6332:18;6324:26;;6201:156;;;:::o;6363:108::-;6440:24;6458:5;6440:24;:::i;:::-;6435:3;6428:37;6363:108;;:::o;6477:179::-;6546:10;6567:46;6609:3;6601:6;6567:46;:::i;:::-;6645:4;6640:3;6636:14;6622:28;;6477:179;;;;:::o;6662:102::-;6704:8;6751:5;6748:1;6744:13;6723:34;;6662:102;;;:::o;6770:139::-;6820:7;6860:42;6853:5;6849:54;6838:65;;6770:139;;;:::o;6915:166::-;6984:5;7009:66;7040:34;7063:10;7040:34;:::i;:::-;7009:66;:::i;:::-;7000:75;;6915:166;;;:::o;7087:144::-;7142:5;7167:57;7218:4;7212:11;7167:57;:::i;:::-;7158:66;;7087:144;;;:::o;7237:110::-;7304:4;7336;7331:3;7327:14;7319:22;;7237:110;;;:::o;7383:751::-;7499:3;7528:51;7573:5;7528:51;:::i;:::-;7595:86;7674:6;7669:3;7595:86;:::i;:::-;7588:93;;7705:53;7752:5;7705:53;:::i;:::-;7781:7;7812:1;7797:312;7822:6;7819:1;7816:13;7797:312;;;7892:44;7929:6;7892:44;:::i;:::-;7956:63;8015:3;8000:13;7956:63;:::i;:::-;7949:70;;8042:57;8092:6;8042:57;:::i;:::-;8032:67;;7857:252;7844:1;7841;7837:9;7832:14;;7797:312;;;7801:14;8125:3;8118:10;;7504:630;;;7383:751;;;;:::o;8140:118::-;8227:24;8245:5;8227:24;:::i;:::-;8222:3;8215:37;8140:118;;:::o;8264:587::-;8460:4;8498:2;8487:9;8483:18;8475:26;;8547:9;8541:4;8537:20;8533:1;8522:9;8518:17;8511:47;8575:105;8675:4;8666:6;8575:105;:::i;:::-;8567:113;;8690:72;8758:2;8747:9;8743:18;8734:6;8690:72;:::i;:::-;8772;8840:2;8829:9;8825:18;8816:6;8772:72;:::i;:::-;8264:587;;;;;;:::o;8857:122::-;8930:24;8948:5;8930:24;:::i;:::-;8923:5;8920:35;8910:63;;8969:1;8966;8959:12;8910:63;8857:122;:::o;8985:143::-;9042:5;9073:6;9067:13;9058:22;;9089:33;9116:5;9089:33;:::i;:::-;8985:143;;;;:::o;9134:351::-;9204:6;9253:2;9241:9;9232:7;9228:23;9224:32;9221:119;;;9259:79;;:::i;:::-;9221:119;9379:1;9404:64;9460:7;9451:6;9440:9;9436:22;9404:64;:::i;:::-;9394:74;;9350:128;9134:351;;;;:::o;9491:169::-;9575:11;9609:6;9604:3;9597:19;9649:4;9644:3;9640:14;9625:29;;9491:169;;;;:::o;9666:225::-;9806:34;9802:1;9794:6;9790:14;9783:58;9875:8;9870:2;9862:6;9858:15;9851:33;9666:225;:::o;9897:366::-;10039:3;10060:67;10124:2;10119:3;10060:67;:::i;:::-;10053:74;;10136:93;10225:3;10136:93;:::i;:::-;10254:2;10249:3;10245:12;10238:19;;9897:366;;;:::o;10269:419::-;10435:4;10473:2;10462:9;10458:18;10450:26;;10522:9;10516:4;10512:20;10508:1;10497:9;10493:17;10486:47;10550:131;10676:4;10550:131;:::i;:::-;10542:139;;10269:419;;;:::o;10694:182::-;10834:34;10830:1;10822:6;10818:14;10811:58;10694:182;:::o;10882:366::-;11024:3;11045:67;11109:2;11104:3;11045:67;:::i;:::-;11038:74;;11121:93;11210:3;11121:93;:::i;:::-;11239:2;11234:3;11230:12;11223:19;;10882:366;;;:::o;11254:419::-;11420:4;11458:2;11447:9;11443:18;11435:26;;11507:9;11501:4;11497:20;11493:1;11482:9;11478:17;11471:47;11535:131;11661:4;11535:131;:::i;:::-;11527:139;;11254:419;;;:::o"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "621200",
"executionCost": "infinite",
"totalCost": "infinite"
},
"external": {
"getHeader(uint256,uint256)": "infinite",
"hashi()": "2558",
"oracleAdapters(uint256,uint256)": "infinite",
"owner()": "2522",
"renounceOwnership()": "30465",
"setHashi(address)": "27009",
"setOracleAdapters(uint256,address[])": "infinite",
"transferOwnership(address)": "30810"
}
},
"methodIdentifiers": {
"getHeader(uint256,uint256)": "6e53670a",
"hashi()": "ec2cf2d5",
"oracleAdapters(uint256,uint256)": "a045a015",
"owner()": "8da5cb5b",
"renounceOwnership()": "715018a6",
"setHashi(address)": "67e2120e",
"setOracleAdapters(uint256,address[])": "0fc9c33b",
"transferOwnership(address)": "f2fde38b"
}
},
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "_hashi",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint8",
"name": "version",
"type": "uint8"
}
],
"name": "Initialized",
"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"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "chainId",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "blockNumber",
"type": "uint256"
}
],
"name": "getHeader",
"outputs": [
{
"internalType": "bytes32",
"name": "blockHeader",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "hashi",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "oracleAdapters",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "renounceOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_hashi",
"type": "address"
}
],
"name": "setHashi",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "chainId",
"type": "uint256"
},
{
"internalType": "address[]",
"name": "_oracleAdapters",
"type": "address[]"
}
],
"name": "setOracleAdapters",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "transferOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
]
}
{
"compiler": {
"version": "0.8.17+commit.8df45f5f"
},
"language": "Solidity",
"output": {
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "_hashi",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint8",
"name": "version",
"type": "uint8"
}
],
"name": "Initialized",
"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"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "chainId",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "blockNumber",
"type": "uint256"
}
],
"name": "getHeader",
"outputs": [
{
"internalType": "bytes32",
"name": "blockHeader",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "hashi",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "oracleAdapters",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "renounceOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_hashi",
"type": "address"
}
],
"name": "setHashi",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "chainId",
"type": "uint256"
},
{
"internalType": "address[]",
"name": "_oracleAdapters",
"type": "address[]"
}
],
"name": "setOracleAdapters",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "transferOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
],
"devdoc": {
"kind": "dev",
"methods": {
"owner()": {
"details": "Returns the address of the current owner."
},
"renounceOwnership()": {
"details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."
},
"transferOwnership(address)": {
"details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
}
},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
},
"settings": {
"compilationTarget": {
"OwnableHashi.sol": "OwnableHashi"
},
"evmVersion": "london",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": false,
"runs": 200
},
"remappings": []
},
"sources": {
"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol": {
"keccak256": "0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888",
"license": "MIT",
"urls": [
"bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a",
"dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb"
]
},
"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol": {
"keccak256": "0x037c334add4b033ad3493038c25be1682d78c00992e1acb0e2795caff3925271",
"license": "MIT",
"urls": [
"bzz-raw://8a313cf42389440e2706837c91370323b85971c06afd6d056d21e2bc86459618",
"dweb:/ipfs/QmT8XUrUvQ9aZaPKrqgRU2JVGWnaxBcUYJA7Q7K5KcLBSZ"
]
},
"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol": {
"keccak256": "0x2edcb41c121abc510932e8d83ff8b82cf9cdde35e7c297622f5c29ef0af25183",
"license": "MIT",
"urls": [
"bzz-raw://72460c66cd1c3b1c11b863e0d8df0a1c56f37743019e468dc312c754f43e3b06",
"dweb:/ipfs/QmPExYKiNb9PUsgktQBupPaM33kzDHxaYoVeJdLhv8s879"
]
},
"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol": {
"keccak256": "0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149",
"license": "MIT",
"urls": [
"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c",
"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a"
]
},
"Hashi.sol": {
"keccak256": "0x7906df2584c501c352c567b25476ba47fb6d8e43f2d5047881fbe6e808ff84ed",
"license": "LGPL-3.0-only",
"urls": [
"bzz-raw://6ae2ea5783e2b11ec98532a5d0ae8459d9f928d11982d3840c58807bd5a13915",
"dweb:/ipfs/QmWyAngNP9xGmoFrFmz24zU6DxRyMZBxLJC2wPkDpX5MA6"
]
},
"IOracleAdapter.sol": {
"keccak256": "0x7bea3758157ec2715a450dec19e29bb183da43c23113b5f34e87335dadfb5a81",
"license": "LGPL-3.0-only",
"urls": [
"bzz-raw://f650ff1d5348117edab7bf2724f1886ee4fbefa0250ba18b975168e23d626f62",
"dweb:/ipfs/QmZNtD7WVBEYUbKWD7DQ4SaqdwwjwczYC7mFpehmMPSRzg"
]
},
"OwnableHashi.sol": {
"keccak256": "0x8b58ef4103a798d3d76bc504690041c57da7e3ca3ef0cacff70cc9e24fcb6b47",
"license": "LGPL-3.0-only",
"urls": [
"bzz-raw://ff166cedd4c7b10419f29deae9de36fe7627766182b5f9c89e6f891ac647ec32",
"dweb:/ipfs/QmXp6NKvQg97DdXi9RnDKDCehDmHJyFda5YmDYyTzYbmVc"
]
}
},
"version": 1
}
// SPDX-License-Identifier: LGPL-3.0-only
/*
`;, `'';; `;,
;; ;; ;;
;; `;;;;;;;;;;; ;;
;; ;; ;;
;; ;; ;;
;; ;; ;;
;; , ;; ';, ,;'
'; ;' ,;''';;';, ';, ,;'
';' ';,,;' '',, ';;;;;;'
*/
pragma solidity ^0.8.17;
import "./IOracleAdapter.sol";
contract Hashi {
mapping(bytes32 => uint256) counts;
/// TODO: add events
error OracleDidNotReport(address emitter, address oracleAdapter);
error OraclesDisagree(address emitter, address oracleOne, address oracleTwo);
error ThresholdNotMet(address, uint256 highestCount, bytes32 blockHeader);
/// @dev Returns the block header reported by a given oracle for a given block.
/// @param oracleAdapter Address of the oracle adapter to query.
/// @param chainId Id of the chain to query.
/// @param blockNumber Block number for which to return a header.
/// @return blockHeader Block header reported by the given oracle adapter for the given block number.
function getHeaderFromOracle(
address oracleAdapter,
uint256 chainId,
uint256 blockNumber)
public view returns(bytes32 blockHeader) {
blockHeader = IOracleAdapter(oracleAdapter).getHeaderFromOracle(oracleAdapter, chainId, blockNumber);
}
/// @dev Returns the block headers for a given block reported by a given set of oracles.
/// @param oracleAdapters Array of address for the oracle adapters to query, MUST be provided in numerical order from smallest to largest.
/// @param chainId Id of the chain to query.
/// @param blockNumber Block number for which to return headers.
/// @return blockHeaders Array of block header reported by the given oracle adapters for the given block number.
/// @notice This method MUST revert if the oracleAdapters array contains duplicates.
function getHeadersFromOracles(
address[] memory oracleAdapters,
uint256 chainId,
uint256 blockNumber)
public view returns(bytes32[] memory blockHeaders) {
for (uint256 i = 0; i < oracleAdapters.length; i++) {
blockHeaders[i] = getHeaderFromOracle(oracleAdapters[i], chainId, blockNumber);
}
}
/// @dev Returns the blockheader universally agreed upon by a given set of oracles.
/// @param oracleAdapters Array of address for the oracle adapters to query.
/// @param chainId Id of the chain to query.
/// @param blockNumber Block number for which to return headers.
/// @return blockHeader Block header agreed on by the given set of oracle adapters.
/// @notice MUST revert if oracles disagree on the header or if an oracle does not report.
function getAgreedOnHeader(
address[] memory oracleAdapters,
uint256 chainId,
uint256 blockNumber)
public view returns(bytes32 blockHeader) {
bytes32[] memory blockHeaders = getHeadersFromOracles(oracleAdapters, chainId, blockNumber);
bytes32 previousHeader = blockHeaders[0];
if (previousHeader == bytes32(0)) revert OracleDidNotReport(address(this), oracleAdapters[0]);
bytes32 currentHeader;
for (uint256 i = 1; i < blockHeaders.length; i++) {
currentHeader = blockHeaders[i];
if (currentHeader == bytes32(0)) revert OracleDidNotReport(address(this), oracleAdapters[i]);
if (currentHeader != previousHeader) revert OraclesDisagree(address(this), oracleAdapters[i-1], oracleAdapters[i]);
previousHeader = currentHeader;
}
blockHeader = currentHeader;
}
/// @dev Returns the blockheader agreed upon by a threshold of given header oracles.
/// @param oracleAdapters Array of address for the oracle adapters to query.
/// @param chainId Id of the chain to query.
/// @param blockNumber Block number for which to return headers.
/// @param threshold Threshold of oracles that must report the same header for the given block. `threshold` MUST be `<= oracleAdapters.length && > oracleAdapters.length / 2`.
/// @return blockHeader Block header reported by the required threshold of given oracle adapters for the given block number.
/// @notice This method MUST revert if the oracleAdapters array contains duplicates.
function getHeaderFromThreshold(
address[] memory oracleAdapters,
uint256 chainId,
uint256 blockNumber,
uint256 threshold)
public returns(bytes32 blockHeader) {
bytes32[] memory blockHeaders = getHeadersFromOracles(oracleAdapters, chainId, blockNumber);
for (uint256 i = 0; i < blockHeaders.length; i++) {
counts[blockHeaders[i]] += 1;
}
uint256 highestCount;
for (uint256 i = 0; i < blockHeaders.length; i++) {
bytes32 currentHeader = blockHeaders[i];
uint256 currentCount = counts[currentHeader];
if (currentCount > highestCount) {
highestCount = currentCount;
blockHeader = currentHeader;
}
}
for (uint256 i = 0; i < blockHeaders.length; i++) {
delete counts[blockHeader[i]];
}
if (highestCount < threshold) revert ThresholdNotMet(address(this), highestCount, blockHeader);
}
}
// SPDX-License-Identifier: LGPL-3.0-only
pragma solidity ^0.8.17;
interface IOracleAdapter {
function getHeaderFromOracle(
address oracleAdapter,
uint256 chainId,
uint256 blockNumber)
external view returns(bytes32 blockHeader);
}
// SPDX-License-Identifier: LGPL-3.0-only
pragma solidity ^0.8.17;
import "./Hashi.sol";
import "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol";
contract OwnableHashi is OwnableUpgradeable {
address public hashi;
mapping(uint256 => address[]) public oracleAdapters;
// TODO: add events
constructor(address _hashi) {
hashi = _hashi;
}
function getHeader(uint256 chainId, uint256 blockNumber) public view returns(bytes32 blockHeader) {
blockHeader = Hashi(hashi).getAgreedOnHeader(oracleAdapters[chainId], chainId, blockNumber);
}
function setHashi(address _hashi) public onlyOwner {
hashi = _hashi;
}
function setOracleAdapters(uint256 chainId, address[] memory _oracleAdapters) public onlyOwner {
oracleAdapters[chainId] = _oracleAdapters;
}
/// how to handle timeouts for oracles that are not reporting?
/// when should governance be able to remove an oracle?
}
This file has been truncated, but you can view the full file.
{
"id": "1036312696e6d5fdcf40bdf90269d81b",
"_format": "hh-sol-build-info-1",
"solcVersion": "0.8.17",
"solcLongVersion": "0.8.17+commit.8df45f5f",
"input": {
"language": "Solidity",
"sources": {
"Hashi.sol": {
"content": "// SPDX-License-Identifier: LGPL-3.0-only\n\n/*\n `;, `'';; `;,\n ;; ;; ;;\n ;; `;;;;;;;;;;; ;;\n ;; ;; ;;\n ;; ;; ;;\n ;; ;; ;;\n ;; , ;; ';, ,;'\n '; ;' ,;''';;';, ';, ,;'\n ';' ';,,;' '',, ';;;;;;'\n*/\n\npragma solidity ^0.8.17;\n\nimport \"./IOracleAdapter.sol\";\n\ncontract Hashi {\n mapping(bytes32 => uint256) counts;\n\n /// TODO: add events\n\n error OracleDidNotReport(address emitter, address oracleAdapter);\n error OraclesDisagree(address emitter, address oracleOne, address oracleTwo);\n error ThresholdNotMet(address, uint256 highestCount, bytes32 blockHeader);\n\n\n /// @dev Returns the block header reported by a given oracle for a given block.\n /// @param oracleAdapter Address of the oracle adapter to query.\n /// @param chainId Id of the chain to query.\n /// @param blockNumber Block number for which to return a header.\n /// @return blockHeader Block header reported by the given oracle adapter for the given block number.\n function getHeaderFromOracle(\n address oracleAdapter,\n uint256 chainId,\n uint256 blockNumber)\n public view returns(bytes32 blockHeader) {\n blockHeader = IOracleAdapter(oracleAdapter).getHeaderFromOracle(oracleAdapter, chainId, blockNumber);\n }\n \n /// @dev Returns the block headers for a given block reported by a given set of oracles.\n /// @param oracleAdapters Array of address for the oracle adapters to query, MUST be provided in numerical order from smallest to largest.\n /// @param chainId Id of the chain to query.\n /// @param blockNumber Block number for which to return headers.\n /// @return blockHeaders Array of block header reported by the given oracle adapters for the given block number.\n /// @notice This method MUST revert if the oracleAdapters array contains duplicates.\n function getHeadersFromOracles(\n address[] memory oracleAdapters,\n uint256 chainId,\n uint256 blockNumber)\n public view returns(bytes32[] memory blockHeaders) {\n for (uint256 i = 0; i < oracleAdapters.length; i++) {\n blockHeaders[i] = getHeaderFromOracle(oracleAdapters[i], chainId, blockNumber);\n }\n }\n\n\n /// @dev Returns the blockheader universally agreed upon by a given set of oracles.\n /// @param oracleAdapters Array of address for the oracle adapters to query.\n /// @param chainId Id of the chain to query.\n /// @param blockNumber Block number for which to return headers.\n /// @return blockHeader Block header agreed on by the given set of oracle adapters.\n /// @notice MUST revert if oracles disagree on the header or if an oracle does not report.\n function getAgreedOnHeader(\n address[] memory oracleAdapters,\n uint256 chainId,\n uint256 blockNumber)\n public view returns(bytes32 blockHeader) {\n bytes32[] memory blockHeaders = getHeadersFromOracles(oracleAdapters, chainId, blockNumber);\n bytes32 previousHeader = blockHeaders[0];\n if (previousHeader == bytes32(0)) revert OracleDidNotReport(address(this), oracleAdapters[0]);\n bytes32 currentHeader;\n for (uint256 i = 1; i < blockHeaders.length; i++) {\n currentHeader = blockHeaders[i];\n if (currentHeader == bytes32(0)) revert OracleDidNotReport(address(this), oracleAdapters[i]);\n if (currentHeader != previousHeader) revert OraclesDisagree(address(this), oracleAdapters[i-1], oracleAdapters[i]);\n previousHeader = currentHeader;\n }\n blockHeader = currentHeader;\n }\n \n /// @dev Returns the blockheader agreed upon by a threshold of given header oracles.\n /// @param oracleAdapters Array of address for the oracle adapters to query.\n /// @param chainId Id of the chain to query.\n /// @param blockNumber Block number for which to return headers.\n /// @param threshold Threshold of oracles that must report the same header for the given block. `threshold` MUST be `<= oracleAdapters.length && > oracleAdapters.length / 2`.\n /// @return blockHeader Block header reported by the required threshold of given oracle adapters for the given block number.\n /// @notice This method MUST revert if the oracleAdapters array contains duplicates.\n function getHeaderFromThreshold(\n address[] memory oracleAdapters,\n uint256 chainId,\n uint256 blockNumber,\n uint256 threshold)\n public returns(bytes32 blockHeader) {\n bytes32[] memory blockHeaders = getHeadersFromOracles(oracleAdapters, chainId, blockNumber);\n for (uint256 i = 0; i < blockHeaders.length; i++) {\n counts[blockHeaders[i]] += 1;\n }\n uint256 highestCount;\n for (uint256 i = 0; i < blockHeaders.length; i++) {\n bytes32 currentHeader = blockHeaders[i];\n uint256 currentCount = counts[currentHeader];\n if (currentCount > highestCount) {\n highestCount = currentCount;\n blockHeader = currentHeader;\n }\n }\n for (uint256 i = 0; i < blockHeaders.length; i++) {\n delete counts[blockHeader[i]];\n }\n if (highestCount < threshold) revert ThresholdNotMet(address(this), highestCount, blockHeader);\n }\n}"
},
"IOracleAdapter.sol": {
"content": "// SPDX-License-Identifier: LGPL-3.0-only\npragma solidity ^0.8.17;\n\ninterface IOracleAdapter {\n function getHeaderFromOracle(\n address oracleAdapter,\n uint256 chainId,\n uint256 blockNumber)\n external view returns(bytes32 blockHeader);\n}"
}
},
"settings": {
"optimizer": {
"enabled": false,
"runs": 200
},
"outputSelection": {
"*": {
"": [
"ast"
],
"*": [
"abi",
"metadata",
"devdoc",
"userdoc",
"storageLayout",
"evm.legacyAssembly",
"evm.bytecode",
"evm.deployedBytecode",
"evm.methodIdentifiers",
"evm.gasEstimates",
"evm.assembly"
]
}
}
}
},
"output": {
"contracts": {
"Hashi.sol": {
"Hashi": {
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "emitter",
"type": "address"
},
{
"internalType": "address",
"name": "oracleAdapter",
"type": "address"
}
],
"name": "OracleDidNotReport",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "emitter",
"type": "address"
},
{
"internalType": "address",
"name": "oracleOne",
"type": "address"
},
{
"internalType": "address",
"name": "oracleTwo",
"type": "address"
}
],
"name": "OraclesDisagree",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "uint256",
"name": "highestCount",
"type": "uint256"
},
{
"internalType": "bytes32",
"name": "blockHeader",
"type": "bytes32"
}
],
"name": "ThresholdNotMet",
"type": "error"
},
{
"inputs": [
{
"internalType": "address[]",
"name": "oracleAdapters",
"type": "address[]"
},
{
"internalType": "uint256",
"name": "chainId",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "blockNumber",
"type": "uint256"
}
],
"name": "getAgreedOnHeader",
"outputs": [
{
"internalType": "bytes32",
"name": "blockHeader",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "oracleAdapter",
"type": "address"
},
{
"internalType": "uint256",
"name": "chainId",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "blockNumber",
"type": "uint256"
}
],
"name": "getHeaderFromOracle",
"outputs": [
{
"internalType": "bytes32",
"name": "blockHeader",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address[]",
"name": "oracleAdapters",
"type": "address[]"
},
{
"internalType": "uint256",
"name": "chainId",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "blockNumber",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "threshold",
"type": "uint256"
}
],
"name": "getHeaderFromThreshold",
"outputs": [
{
"internalType": "bytes32",
"name": "blockHeader",
"type": "bytes32"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address[]",
"name": "oracleAdapters",
"type": "address[]"
},
{
"internalType": "uint256",
"name": "chainId",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "blockNumber",
"type": "uint256"
}
],
"name": "getHeadersFromOracles",
"outputs": [
{
"internalType": "bytes32[]",
"name": "blockHeaders",
"type": "bytes32[]"
}
],
"stateMutability": "view",
"type": "function"
}
],
"devdoc": {
"kind": "dev",
"methods": {
"getAgreedOnHeader(address[],uint256,uint256)": {
"details": "Returns the blockheader universally agreed upon by a given set of oracles.",
"params": {
"blockNumber": "Block number for which to return headers.",
"chainId": "Id of the chain to query.",
"oracleAdapters": "Array of address for the oracle adapters to query."
},
"returns": {
"blockHeader": "Block header agreed on by the given set of oracle adapters."
}
},
"getHeaderFromOracle(address,uint256,uint256)": {
"details": "Returns the block header reported by a given oracle for a given block.",
"params": {
"blockNumber": "Block number for which to return a header.",
"chainId": "Id of the chain to query.",
"oracleAdapter": "Address of the oracle adapter to query."
},
"returns": {
"blockHeader": "Block header reported by the given oracle adapter for the given block number."
}
},
"getHeaderFromThreshold(address[],uint256,uint256,uint256)": {
"details": "Returns the blockheader agreed upon by a threshold of given header oracles.",
"params": {
"blockNumber": "Block number for which to return headers.",
"chainId": "Id of the chain to query.",
"oracleAdapters": "Array of address for the oracle adapters to query.",
"threshold": "Threshold of oracles that must report the same header for the given block. `threshold` MUST be `<= oracleAdapters.length && > oracleAdapters.length / 2`."
},
"returns": {
"blockHeader": "Block header reported by the required threshold of given oracle adapters for the given block number."
}
},
"getHeadersFromOracles(address[],uint256,uint256)": {
"details": "Returns the block headers for a given block reported by a given set of oracles.",
"params": {
"blockNumber": "Block number for which to return headers.",
"chainId": "Id of the chain to query.",
"oracleAdapters": "Array of address for the oracle adapters to query, MUST be provided in numerical order from smallest to largest."
},
"returns": {
"blockHeaders": "Array of block header reported by the given oracle adapters for the given block number."
}
}
},
"version": 1
},
"evm": {
"assembly": " /* \"Hashi.sol\":403:5364 contract Hashi {... */\n mstore(0x40, 0x80)\n callvalue\n dup1\n iszero\n tag_1\n jumpi\n 0x00\n dup1\n revert\ntag_1:\n pop\n dataSize(sub_0)\n dup1\n dataOffset(sub_0)\n 0x00\n codecopy\n 0x00\n return\nstop\n\nsub_0: assembly {\n /* \"Hashi.sol\":403:5364 contract Hashi {... */\n mstore(0x40, 0x80)\n callvalue\n dup1\n iszero\n tag_1\n jumpi\n 0x00\n dup1\n revert\n tag_1:\n pop\n jumpi(tag_2, lt(calldatasize, 0x04))\n shr(0xe0, calldataload(0x00))\n dup1\n 0x7ef79f8c\n eq\n tag_3\n jumpi\n dup1\n 0x84dd0d12\n eq\n tag_4\n jumpi\n dup1\n 0xb31825bf\n eq\n tag_5\n jumpi\n dup1\n 0xd56154ab\n eq\n tag_6\n jumpi\n tag_2:\n 0x00\n dup1\n revert\n /* \"Hashi.sol\":4368:5362 function getHeaderFromThreshold(... */\n tag_3:\n tag_7\n 0x04\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n tag_8\n swap2\n swap1\n tag_9\n jump\t// in\n tag_8:\n tag_10\n jump\t// in\n tag_7:\n mload(0x40)\n tag_11\n swap2\n swap1\n tag_12\n jump\t// in\n tag_11:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"Hashi.sol\":2783:3673 function getAgreedOnHeader(... */\n tag_4:\n tag_13\n 0x04\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n tag_14\n swap2\n swap1\n tag_15\n jump\t// in\n tag_14:\n tag_16\n jump\t// in\n tag_13:\n mload(0x40)\n tag_17\n swap2\n swap1\n tag_12\n jump\t// in\n tag_17:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"Hashi.sol\":1102:1379 function getHeaderFromOracle(... */\n tag_5:\n tag_18\n 0x04\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n tag_19\n swap2\n swap1\n tag_20\n jump\t// in\n tag_19:\n tag_21\n jump\t// in\n tag_18:\n mload(0x40)\n tag_22\n swap2\n swap1\n tag_12\n jump\t// in\n tag_22:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"Hashi.sol\":1953:2306 function getHeadersFromOracles(... */\n tag_6:\n tag_23\n 0x04\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n tag_24\n swap2\n swap1\n tag_15\n jump\t// in\n tag_24:\n tag_25\n jump\t// in\n tag_23:\n mload(0x40)\n tag_26\n swap2\n swap1\n tag_27\n jump\t// in\n tag_26:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"Hashi.sol\":4368:5362 function getHeaderFromThreshold(... */\n tag_10:\n /* \"Hashi.sol\":4542:4561 bytes32 blockHeader */\n 0x00\n /* \"Hashi.sol\":4573:4602 bytes32[] memory blockHeaders */\n dup1\n /* \"Hashi.sol\":4605:4664 getHeadersFromOracles(oracleAdapters, chainId, blockNumber) */\n tag_29\n /* \"Hashi.sol\":4627:4641 oracleAdapters */\n dup7\n /* \"Hashi.sol\":4643:4650 chainId */\n dup7\n /* \"Hashi.sol\":4652:4663 blockNumber */\n dup7\n /* \"Hashi.sol\":4605:4626 getHeadersFromOracles */\n tag_25\n /* \"Hashi.sol\":4605:4664 getHeadersFromOracles(oracleAdapters, chainId, blockNumber) */\n jump\t// in\n tag_29:\n /* \"Hashi.sol\":4573:4664 bytes32[] memory blockHeaders = getHeadersFromOracles(oracleAdapters, chainId, blockNumber) */\n swap1\n pop\n /* \"Hashi.sol\":4679:4688 uint256 i */\n 0x00\n /* \"Hashi.sol\":4674:4777 for (uint256 i = 0; i < blockHeaders.length; i++) {... */\n tag_30:\n /* \"Hashi.sol\":4698:4710 blockHeaders */\n dup2\n /* \"Hashi.sol\":4698:4717 blockHeaders.length */\n mload\n /* \"Hashi.sol\":4694:4695 i */\n dup2\n /* \"Hashi.sol\":4694:4717 i < blockHeaders.length */\n lt\n /* \"Hashi.sol\":4674:4777 for (uint256 i = 0; i < blockHeaders.length; i++) {... */\n iszero\n tag_31\n jumpi\n /* \"Hashi.sol\":4765:4766 1 */\n 0x01\n /* \"Hashi.sol\":4738:4744 counts */\n 0x00\n /* \"Hashi.sol\":4738:4761 counts[blockHeaders[i]] */\n dup1\n /* \"Hashi.sol\":4745:4757 blockHeaders */\n dup5\n /* \"Hashi.sol\":4758:4759 i */\n dup5\n /* \"Hashi.sol\":4745:4760 blockHeaders[i] */\n dup2\n mload\n dup2\n lt\n tag_33\n jumpi\n tag_34\n tag_35\n jump\t// in\n tag_34:\n tag_33:\n 0x20\n mul\n 0x20\n add\n add\n mload\n /* \"Hashi.sol\":4738:4761 counts[blockHeaders[i]] */\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x00\n keccak256\n 0x00\n /* \"Hashi.sol\":4738:4766 counts[blockHeaders[i]] += 1 */\n dup3\n dup3\n sload\n tag_36\n swap2\n swap1\n tag_37\n jump\t// in\n tag_36:\n swap3\n pop\n pop\n dup2\n swap1\n sstore\n pop\n /* \"Hashi.sol\":4719:4722 i++ */\n dup1\n dup1\n tag_38\n swap1\n tag_39\n jump\t// in\n tag_38:\n swap2\n pop\n pop\n /* \"Hashi.sol\":4674:4777 for (uint256 i = 0; i < blockHeaders.length; i++) {... */\n jump(tag_30)\n tag_31:\n pop\n /* \"Hashi.sol\":4786:4806 uint256 highestCount */\n 0x00\n /* \"Hashi.sol\":4821:4830 uint256 i */\n dup1\n /* \"Hashi.sol\":4833:4834 0 */\n 0x00\n /* \"Hashi.sol\":4821:4834 uint256 i = 0 */\n swap1\n pop\n /* \"Hashi.sol\":4816:5139 for (uint256 i = 0; i < blockHeaders.length; i++) {... */\n tag_40:\n /* \"Hashi.sol\":4840:4852 blockHeaders */\n dup3\n /* \"Hashi.sol\":4840:4859 blockHeaders.length */\n mload\n /* \"Hashi.sol\":4836:4837 i */\n dup2\n /* \"Hashi.sol\":4836:4859 i < blockHeaders.length */\n lt\n /* \"Hashi.sol\":4816:5139 for (uint256 i = 0; i < blockHeaders.length; i++) {... */\n iszero\n tag_41\n jumpi\n /* \"Hashi.sol\":4880:4901 bytes32 currentHeader */\n 0x00\n /* \"Hashi.sol\":4904:4916 blockHeaders */\n dup4\n /* \"Hashi.sol\":4917:4918 i */\n dup3\n /* \"Hashi.sol\":4904:4919 blockHeaders[i] */\n dup2\n mload\n dup2\n lt\n tag_43\n jumpi\n tag_44\n tag_35\n jump\t// in\n tag_44:\n tag_43:\n 0x20\n mul\n 0x20\n add\n add\n mload\n /* \"Hashi.sol\":4880:4919 bytes32 currentHeader = blockHeaders[i] */\n swap1\n pop\n /* \"Hashi.sol\":4933:4953 uint256 currentCount */\n 0x00\n /* \"Hashi.sol\":4956:4962 counts */\n dup1\n /* \"Hashi.sol\":4956:4977 counts[currentHeader] */\n 0x00\n /* \"Hashi.sol\":4963:4976 currentHeader */\n dup4\n /* \"Hashi.sol\":4956:4977 counts[currentHeader] */\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x00\n keccak256\n sload\n /* \"Hashi.sol\":4933:4977 uint256 currentCount = counts[currentHeader] */\n swap1\n pop\n /* \"Hashi.sol\":5010:5022 highestCount */\n dup4\n /* \"Hashi.sol\":4995:5007 currentCount */\n dup2\n /* \"Hashi.sol\":4995:5022 currentCount > highestCount */\n gt\n /* \"Hashi.sol\":4991:5129 if (currentCount > highestCount) {... */\n iszero\n tag_45\n jumpi\n /* \"Hashi.sol\":5057:5069 currentCount */\n dup1\n /* \"Hashi.sol\":5042:5069 highestCount = currentCount */\n swap4\n pop\n /* \"Hashi.sol\":5101:5114 currentHeader */\n dup2\n /* \"Hashi.sol\":5087:5114 blockHeader = currentHeader */\n swap6\n pop\n /* \"Hashi.sol\":4991:5129 if (currentCount > highestCount) {... */\n tag_45:\n /* \"Hashi.sol\":4866:5139 {... */\n pop\n pop\n /* \"Hashi.sol\":4861:4864 i++ */\n dup1\n dup1\n tag_46\n swap1\n tag_39\n jump\t// in\n tag_46:\n swap2\n pop\n pop\n /* \"Hashi.sol\":4816:5139 for (uint256 i = 0; i < blockHeaders.length; i++) {... */\n jump(tag_40)\n tag_41:\n pop\n /* \"Hashi.sol\":5153:5162 uint256 i */\n 0x00\n /* \"Hashi.sol\":5148:5252 for (uint256 i = 0; i < blockHeaders.length; i++) {... */\n tag_47:\n /* \"Hashi.sol\":5172:5184 blockHeaders */\n dup3\n /* \"Hashi.sol\":5172:5191 blockHeaders.length */\n mload\n /* \"Hashi.sol\":5168:5169 i */\n dup2\n /* \"Hashi.sol\":5168:5191 i < blockHeaders.length */\n lt\n /* \"Hashi.sol\":5148:5252 for (uint256 i = 0; i < blockHeaders.length; i++) {... */\n iszero\n tag_48\n jumpi\n /* \"Hashi.sol\":5219:5225 counts */\n 0x00\n /* \"Hashi.sol\":5219:5241 counts[blockHeader[i]] */\n dup1\n /* \"Hashi.sol\":5226:5237 blockHeader */\n dup6\n /* \"Hashi.sol\":5238:5239 i */\n dup4\n /* \"Hashi.sol\":5226:5240 blockHeader[i] */\n 0x20\n dup2\n lt\n tag_50\n jumpi\n tag_51\n tag_35\n jump\t// in\n tag_51:\n tag_50:\n byte\n 0xf8\n shl\n /* \"Hashi.sol\":5219:5241 counts[blockHeader[i]] */\n not(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)\n and\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x00\n keccak256\n /* \"Hashi.sol\":5212:5241 delete counts[blockHeader[i]] */\n 0x00\n swap1\n sstore\n /* \"Hashi.sol\":5193:5196 i++ */\n dup1\n dup1\n tag_52\n swap1\n tag_39\n jump\t// in\n tag_52:\n swap2\n pop\n pop\n /* \"Hashi.sol\":5148:5252 for (uint256 i = 0; i < blockHeaders.length; i++) {... */\n jump(tag_47)\n tag_48:\n pop\n /* \"Hashi.sol\":5280:5289 threshold */\n dup4\n /* \"Hashi.sol\":5265:5277 highestCount */\n dup2\n /* \"Hashi.sol\":5265:5289 highestCount < threshold */\n lt\n /* \"Hashi.sol\":5261:5355 if (highestCount < threshold) revert ThresholdNotMet(address(this), highestCount, blockHeader) */\n iszero\n tag_53\n jumpi\n /* \"Hashi.sol\":5322:5326 this */\n address\n /* \"Hashi.sol\":5329:5341 highestCount */\n dup2\n /* \"Hashi.sol\":5343:5354 blockHeader */\n dup5\n /* \"Hashi.sol\":5298:5355 ThresholdNotMet(address(this), highestCount, blockHeader) */\n mload(0x40)\n 0x22bcb23b00000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_54\n swap4\n swap3\n swap2\n swap1\n tag_55\n jump\t// in\n tag_54:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"Hashi.sol\":5261:5355 if (highestCount < threshold) revert ThresholdNotMet(address(this), highestCount, blockHeader) */\n tag_53:\n /* \"Hashi.sol\":4563:5362 {... */\n pop\n pop\n /* \"Hashi.sol\":4368:5362 function getHeaderFromThreshold(... */\n swap5\n swap4\n pop\n pop\n pop\n pop\n jump\t// out\n /* \"Hashi.sol\":2783:3673 function getAgreedOnHeader(... */\n tag_16:\n /* \"Hashi.sol\":2930:2949 bytes32 blockHeader */\n 0x00\n /* \"Hashi.sol\":2961:2990 bytes32[] memory blockHeaders */\n dup1\n /* \"Hashi.sol\":2993:3052 getHeadersFromOracles(oracleAdapters, chainId, blockNumber) */\n tag_57\n /* \"Hashi.sol\":3015:3029 oracleAdapters */\n dup6\n /* \"Hashi.sol\":3031:3038 chainId */\n dup6\n /* \"Hashi.sol\":3040:3051 blockNumber */\n dup6\n /* \"Hashi.sol\":2993:3014 getHeadersFromOracles */\n tag_25\n /* \"Hashi.sol\":2993:3052 getHeadersFromOracles(oracleAdapters, chainId, blockNumber) */\n jump\t// in\n tag_57:\n /* \"Hashi.sol\":2961:3052 bytes32[] memory blockHeaders = getHeadersFromOracles(oracleAdapters, chainId, blockNumber) */\n swap1\n pop\n /* \"Hashi.sol\":3062:3084 bytes32 previousHeader */\n 0x00\n /* \"Hashi.sol\":3087:3099 blockHeaders */\n dup2\n /* \"Hashi.sol\":3100:3101 0 */\n 0x00\n /* \"Hashi.sol\":3087:3102 blockHeaders[0] */\n dup2\n mload\n dup2\n lt\n tag_58\n jumpi\n tag_59\n tag_35\n jump\t// in\n tag_59:\n tag_58:\n 0x20\n mul\n 0x20\n add\n add\n mload\n /* \"Hashi.sol\":3062:3102 bytes32 previousHeader = blockHeaders[0] */\n swap1\n pop\n /* \"Hashi.sol\":3142:3143 0 */\n 0x00\n /* \"Hashi.sol\":3134:3144 bytes32(0) */\n dup1\n shl\n /* \"Hashi.sol\":3116:3130 previousHeader */\n dup2\n /* \"Hashi.sol\":3116:3144 previousHeader == bytes32(0) */\n sub\n /* \"Hashi.sol\":3112:3205 if (previousHeader == bytes32(0)) revert OracleDidNotReport(address(this), oracleAdapters[0]) */\n tag_60\n jumpi\n /* \"Hashi.sol\":3180:3184 this */\n address\n /* \"Hashi.sol\":3187:3201 oracleAdapters */\n dup7\n /* \"Hashi.sol\":3202:3203 0 */\n 0x00\n /* \"Hashi.sol\":3187:3204 oracleAdapters[0] */\n dup2\n mload\n dup2\n lt\n tag_61\n jumpi\n tag_62\n tag_35\n jump\t// in\n tag_62:\n tag_61:\n 0x20\n mul\n 0x20\n add\n add\n mload\n /* \"Hashi.sol\":3153:3205 OracleDidNotReport(address(this), oracleAdapters[0]) */\n mload(0x40)\n 0x2a0c203900000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_63\n swap3\n swap2\n swap1\n tag_64\n jump\t// in\n tag_63:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"Hashi.sol\":3112:3205 if (previousHeader == bytes32(0)) revert OracleDidNotReport(address(this), oracleAdapters[0]) */\n tag_60:\n /* \"Hashi.sol\":3215:3236 bytes32 currentHeader */\n 0x00\n /* \"Hashi.sol\":3251:3260 uint256 i */\n dup1\n /* \"Hashi.sol\":3263:3264 1 */\n 0x01\n /* \"Hashi.sol\":3251:3264 uint256 i = 1 */\n swap1\n pop\n /* \"Hashi.sol\":3246:3630 for (uint256 i = 1; i < blockHeaders.length; i++) {... */\n tag_65:\n /* \"Hashi.sol\":3270:3282 blockHeaders */\n dup4\n /* \"Hashi.sol\":3270:3289 blockHeaders.length */\n mload\n /* \"Hashi.sol\":3266:3267 i */\n dup2\n /* \"Hashi.sol\":3266:3289 i < blockHeaders.length */\n lt\n /* \"Hashi.sol\":3246:3630 for (uint256 i = 1; i < blockHeaders.length; i++) {... */\n iszero\n tag_66\n jumpi\n /* \"Hashi.sol\":3326:3338 blockHeaders */\n dup4\n /* \"Hashi.sol\":3339:3340 i */\n dup2\n /* \"Hashi.sol\":3326:3341 blockHeaders[i] */\n dup2\n mload\n dup2\n lt\n tag_68\n jumpi\n tag_69\n tag_35\n jump\t// in\n tag_69:\n tag_68:\n 0x20\n mul\n 0x20\n add\n add\n mload\n /* \"Hashi.sol\":3310:3341 currentHeader = blockHeaders[i] */\n swap2\n pop\n /* \"Hashi.sol\":3384:3385 0 */\n 0x00\n /* \"Hashi.sol\":3376:3386 bytes32(0) */\n dup1\n shl\n /* \"Hashi.sol\":3359:3372 currentHeader */\n dup3\n /* \"Hashi.sol\":3359:3386 currentHeader == bytes32(0) */\n sub\n /* \"Hashi.sol\":3355:3447 if (currentHeader == bytes32(0)) revert OracleDidNotReport(address(this), oracleAdapters[i]) */\n tag_70\n jumpi\n /* \"Hashi.sol\":3422:3426 this */\n address\n /* \"Hashi.sol\":3429:3443 oracleAdapters */\n dup9\n /* \"Hashi.sol\":3444:3445 i */\n dup3\n /* \"Hashi.sol\":3429:3446 oracleAdapters[i] */\n dup2\n mload\n dup2\n lt\n tag_71\n jumpi\n tag_72\n tag_35\n jump\t// in\n tag_72:\n tag_71:\n 0x20\n mul\n 0x20\n add\n add\n mload\n /* \"Hashi.sol\":3395:3447 OracleDidNotReport(address(this), oracleAdapters[i]) */\n mload(0x40)\n 0x2a0c203900000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_73\n swap3\n swap2\n swap1\n tag_64\n jump\t// in\n tag_73:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"Hashi.sol\":3355:3447 if (currentHeader == bytes32(0)) revert OracleDidNotReport(address(this), oracleAdapters[i]) */\n tag_70:\n /* \"Hashi.sol\":3482:3496 previousHeader */\n dup3\n /* \"Hashi.sol\":3465:3478 currentHeader */\n dup3\n /* \"Hashi.sol\":3465:3496 currentHeader != previousHeader */\n eq\n /* \"Hashi.sol\":3461:3575 if (currentHeader != previousHeader) revert OraclesDisagree(address(this), oracleAdapters[i-1], oracleAdapters[i]) */\n tag_74\n jumpi\n /* \"Hashi.sol\":3529:3533 this */\n address\n /* \"Hashi.sol\":3536:3550 oracleAdapters */\n dup9\n /* \"Hashi.sol\":3553:3554 1 */\n 0x01\n /* \"Hashi.sol\":3551:3552 i */\n dup4\n /* \"Hashi.sol\":3551:3554 i-1 */\n tag_75\n swap2\n swap1\n tag_76\n jump\t// in\n tag_75:\n /* \"Hashi.sol\":3536:3555 oracleAdapters[i-1] */\n dup2\n mload\n dup2\n lt\n tag_77\n jumpi\n tag_78\n tag_35\n jump\t// in\n tag_78:\n tag_77:\n 0x20\n mul\n 0x20\n add\n add\n mload\n /* \"Hashi.sol\":3557:3571 oracleAdapters */\n dup10\n /* \"Hashi.sol\":3572:3573 i */\n dup4\n /* \"Hashi.sol\":3557:3574 oracleAdapters[i] */\n dup2\n mload\n dup2\n lt\n tag_79\n jumpi\n tag_80\n tag_35\n jump\t// in\n tag_80:\n tag_79:\n 0x20\n mul\n 0x20\n add\n add\n mload\n /* \"Hashi.sol\":3505:3575 OraclesDisagree(address(this), oracleAdapters[i-1], oracleAdapters[i]) */\n mload(0x40)\n 0xdbed4b2700000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_81\n swap4\n swap3\n swap2\n swap1\n tag_82\n jump\t// in\n tag_81:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"Hashi.sol\":3461:3575 if (currentHeader != previousHeader) revert OraclesDisagree(address(this), oracleAdapters[i-1], oracleAdapters[i]) */\n tag_74:\n /* \"Hashi.sol\":3606:3619 currentHeader */\n dup2\n /* \"Hashi.sol\":3589:3619 previousHeader = currentHeader */\n swap3\n pop\n /* \"Hashi.sol\":3291:3294 i++ */\n dup1\n dup1\n tag_83\n swap1\n tag_39\n jump\t// in\n tag_83:\n swap2\n pop\n pop\n /* \"Hashi.sol\":3246:3630 for (uint256 i = 1; i < blockHeaders.length; i++) {... */\n jump(tag_65)\n tag_66:\n pop\n /* \"Hashi.sol\":3653:3666 currentHeader */\n dup1\n /* \"Hashi.sol\":3639:3666 blockHeader = currentHeader */\n swap4\n pop\n /* \"Hashi.sol\":2951:3673 {... */\n pop\n pop\n pop\n /* \"Hashi.sol\":2783:3673 function getAgreedOnHeader(... */\n swap4\n swap3\n pop\n pop\n pop\n jump\t// out\n /* \"Hashi.sol\":1102:1379 function getHeaderFromOracle(... */\n tag_21:\n /* \"Hashi.sol\":1241:1260 bytes32 blockHeader */\n 0x00\n /* \"Hashi.sol\":1301:1314 oracleAdapter */\n dup4\n /* \"Hashi.sol\":1286:1335 IOracleAdapter(oracleAdapter).getHeaderFromOracle */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xb31825bf\n /* \"Hashi.sol\":1336:1349 oracleAdapter */\n dup6\n /* \"Hashi.sol\":1351:1358 chainId */\n dup6\n /* \"Hashi.sol\":1360:1371 blockNumber */\n dup6\n /* \"Hashi.sol\":1286:1372 IOracleAdapter(oracleAdapter).getHeaderFromOracle(oracleAdapter, chainId, blockNumber) */\n mload(0x40)\n dup5\n 0xffffffff\n and\n 0xe0\n shl\n dup2\n mstore\n 0x04\n add\n tag_85\n swap4\n swap3\n swap2\n swap1\n tag_86\n jump\t// in\n tag_85:\n 0x20\n mload(0x40)\n dup1\n dup4\n sub\n dup2\n dup7\n gas\n staticcall\n iszero\n dup1\n iszero\n tag_88\n jumpi\n returndatasize\n 0x00\n dup1\n returndatacopy\n revert(0x00, returndatasize)\n tag_88:\n pop\n pop\n pop\n pop\n mload(0x40)\n returndatasize\n not(0x1f)\n 0x1f\n dup3\n add\n and\n dup3\n add\n dup1\n 0x40\n mstore\n pop\n dup2\n add\n swap1\n tag_89\n swap2\n swap1\n tag_90\n jump\t// in\n tag_89:\n /* \"Hashi.sol\":1272:1372 blockHeader = IOracleAdapter(oracleAdapter).getHeaderFromOracle(oracleAdapter, chainId, blockNumber) */\n swap1\n pop\n /* \"Hashi.sol\":1102:1379 function getHeaderFromOracle(... */\n swap4\n swap3\n pop\n pop\n pop\n jump\t// out\n /* \"Hashi.sol\":1953:2306 function getHeadersFromOracles(... */\n tag_25:\n /* \"Hashi.sol\":2104:2133 bytes32[] memory blockHeaders */\n 0x60\n /* \"Hashi.sol\":2150:2159 uint256 i */\n 0x00\n /* \"Hashi.sol\":2145:2300 for (uint256 i = 0; i < oracleAdapters.length; i++) {... */\n tag_92:\n /* \"Hashi.sol\":2169:2183 oracleAdapters */\n dup5\n /* \"Hashi.sol\":2169:2190 oracleAdapters.length */\n mload\n /* \"Hashi.sol\":2165:2166 i */\n dup2\n /* \"Hashi.sol\":2165:2190 i < oracleAdapters.length */\n lt\n /* \"Hashi.sol\":2145:2300 for (uint256 i = 0; i < oracleAdapters.length; i++) {... */\n iszero\n tag_93\n jumpi\n /* \"Hashi.sol\":2229:2289 getHeaderFromOracle(oracleAdapters[i], chainId, blockNumber) */\n tag_95\n /* \"Hashi.sol\":2249:2263 oracleAdapters */\n dup6\n /* \"Hashi.sol\":2264:2265 i */\n dup3\n /* \"Hashi.sol\":2249:2266 oracleAdapters[i] */\n dup2\n mload\n dup2\n lt\n tag_96\n jumpi\n tag_97\n tag_35\n jump\t// in\n tag_97:\n tag_96:\n 0x20\n mul\n 0x20\n add\n add\n mload\n /* \"Hashi.sol\":2268:2275 chainId */\n dup6\n /* \"Hashi.sol\":2277:2288 blockNumber */\n dup6\n /* \"Hashi.sol\":2229:2248 getHeaderFromOracle */\n tag_21\n /* \"Hashi.sol\":2229:2289 getHeaderFromOracle(oracleAdapters[i], chainId, blockNumber) */\n jump\t// in\n tag_95:\n /* \"Hashi.sol\":2211:2223 blockHeaders */\n dup3\n /* \"Hashi.sol\":2224:2225 i */\n dup3\n /* \"Hashi.sol\":2211:2226 blockHeaders[i] */\n dup2\n mload\n dup2\n lt\n tag_98\n jumpi\n tag_99\n tag_35\n jump\t// in\n tag_99:\n tag_98:\n 0x20\n mul\n 0x20\n add\n add\n /* \"Hashi.sol\":2211:2289 blockHeaders[i] = getHeaderFromOracle(oracleAdapters[i], chainId, blockNumber) */\n dup2\n dup2\n mstore\n pop\n pop\n /* \"Hashi.sol\":2192:2195 i++ */\n dup1\n dup1\n tag_100\n swap1\n tag_39\n jump\t// in\n tag_100:\n swap2\n pop\n pop\n /* \"Hashi.sol\":2145:2300 for (uint256 i = 0; i < oracleAdapters.length; i++) {... */\n jump(tag_92)\n tag_93:\n pop\n /* \"Hashi.sol\":1953:2306 function getHeadersFromOracles(... */\n swap4\n swap3\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":7:82 */\n tag_101:\n /* \"#utility.yul\":40:46 */\n 0x00\n /* \"#utility.yul\":73:75 */\n 0x40\n /* \"#utility.yul\":67:76 */\n mload\n /* \"#utility.yul\":57:76 */\n swap1\n pop\n /* \"#utility.yul\":7:82 */\n swap1\n jump\t// out\n /* \"#utility.yul\":88:205 */\n tag_102:\n /* \"#utility.yul\":197:198 */\n 0x00\n /* \"#utility.yul\":194:195 */\n dup1\n /* \"#utility.yul\":187:199 */\n revert\n /* \"#utility.yul\":211:328 */\n tag_103:\n /* \"#utility.yul\":320:321 */\n 0x00\n /* \"#utility.yul\":317:318 */\n dup1\n /* \"#utility.yul\":310:322 */\n revert\n /* \"#utility.yul\":334:451 */\n tag_104:\n /* \"#utility.yul\":443:444 */\n 0x00\n /* \"#utility.yul\":440:441 */\n dup1\n /* \"#utility.yul\":433:445 */\n revert\n /* \"#utility.yul\":457:559 */\n tag_105:\n /* \"#utility.yul\":498:504 */\n 0x00\n /* \"#utility.yul\":549:551 */\n 0x1f\n /* \"#utility.yul\":545:552 */\n not\n /* \"#utility.yul\":540:542 */\n 0x1f\n /* \"#utility.yul\":533:538 */\n dup4\n /* \"#utility.yul\":529:543 */\n add\n /* \"#utility.yul\":525:553 */\n and\n /* \"#utility.yul\":515:553 */\n swap1\n pop\n /* \"#utility.yul\":457:559 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":565:745 */\n tag_106:\n /* \"#utility.yul\":613:690 */\n 0x4e487b7100000000000000000000000000000000000000000000000000000000\n /* \"#utility.yul\":610:611 */\n 0x00\n /* \"#utility.yul\":603:691 */\n mstore\n /* \"#utility.yul\":710:714 */\n 0x41\n /* \"#utility.yul\":707:708 */\n 0x04\n /* \"#utility.yul\":700:715 */\n mstore\n /* \"#utility.yul\":734:738 */\n 0x24\n /* \"#utility.yul\":731:732 */\n 0x00\n /* \"#utility.yul\":724:739 */\n revert\n /* \"#utility.yul\":751:1032 */\n tag_107:\n /* \"#utility.yul\":834:861 */\n tag_142\n /* \"#utility.yul\":856:860 */\n dup3\n /* \"#utility.yul\":834:861 */\n tag_105\n jump\t// in\n tag_142:\n /* \"#utility.yul\":826:832 */\n dup2\n /* \"#utility.yul\":822:862 */\n add\n /* \"#utility.yul\":964:970 */\n dup2\n /* \"#utility.yul\":952:962 */\n dup2\n /* \"#utility.yul\":949:971 */\n lt\n /* \"#utility.yul\":928:946 */\n 0xffffffffffffffff\n /* \"#utility.yul\":916:926 */\n dup3\n /* \"#utility.yul\":913:947 */\n gt\n /* \"#utility.yul\":910:972 */\n or\n /* \"#utility.yul\":907:995 */\n iszero\n tag_143\n jumpi\n /* \"#utility.yul\":975:993 */\n tag_144\n tag_106\n jump\t// in\n tag_144:\n /* \"#utility.yul\":907:995 */\n tag_143:\n /* \"#utility.yul\":1015:1025 */\n dup1\n /* \"#utility.yul\":1011:1013 */\n 0x40\n /* \"#utility.yul\":1004:1026 */\n mstore\n /* \"#utility.yul\":794:1032 */\n pop\n /* \"#utility.yul\":751:1032 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":1038:1167 */\n tag_108:\n /* \"#utility.yul\":1072:1078 */\n 0x00\n /* \"#utility.yul\":1099:1119 */\n tag_146\n tag_101\n jump\t// in\n tag_146:\n /* \"#utility.yul\":1089:1119 */\n swap1\n pop\n /* \"#utility.yul\":1128:1161 */\n tag_147\n /* \"#utility.yul\":1156:1160 */\n dup3\n /* \"#utility.yul\":1148:1154 */\n dup3\n /* \"#utility.yul\":1128:1161 */\n tag_107\n jump\t// in\n tag_147:\n /* \"#utility.yul\":1038:1167 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":1173:1484 */\n tag_109:\n /* \"#utility.yul\":1250:1254 */\n 0x00\n /* \"#utility.yul\":1340:1358 */\n 0xffffffffffffffff\n /* \"#utility.yul\":1332:1338 */\n dup3\n /* \"#utility.yul\":1329:1359 */\n gt\n /* \"#utility.yul\":1326:1382 */\n iszero\n tag_149\n jumpi\n /* \"#utility.yul\":1362:1380 */\n tag_150\n tag_106\n jump\t// in\n tag_150:\n /* \"#utility.yul\":1326:1382 */\n tag_149:\n /* \"#utility.yul\":1412:1416 */\n 0x20\n /* \"#utility.yul\":1404:1410 */\n dup3\n /* \"#utility.yul\":1400:1417 */\n mul\n /* \"#utility.yul\":1392:1417 */\n swap1\n pop\n /* \"#utility.yul\":1472:1476 */\n 0x20\n /* \"#utility.yul\":1466:1470 */\n dup2\n /* \"#utility.yul\":1462:1477 */\n add\n /* \"#utility.yul\":1454:1477 */\n swap1\n pop\n /* \"#utility.yul\":1173:1484 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":1490:1607 */\n tag_110:\n /* \"#utility.yul\":1599:1600 */\n 0x00\n /* \"#utility.yul\":1596:1597 */\n dup1\n /* \"#utility.yul\":1589:1601 */\n revert\n /* \"#utility.yul\":1613:1739 */\n tag_111:\n /* \"#utility.yul\":1650:1657 */\n 0x00\n /* \"#utility.yul\":1690:1732 */\n 0xffffffffffffffffffffffffffffffffffffffff\n /* \"#utility.yul\":1683:1688 */\n dup3\n /* \"#utility.yul\":1679:1733 */\n and\n /* \"#utility.yul\":1668:1733 */\n swap1\n pop\n /* \"#utility.yul\":1613:1739 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":1745:1841 */\n tag_112:\n /* \"#utility.yul\":1782:1789 */\n 0x00\n /* \"#utility.yul\":1811:1835 */\n tag_154\n /* \"#utility.yul\":1829:1834 */\n dup3\n /* \"#utility.yul\":1811:1835 */\n tag_111\n jump\t// in\n tag_154:\n /* \"#utility.yul\":1800:1835 */\n swap1\n pop\n /* \"#utility.yul\":1745:1841 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":1847:1969 */\n tag_113:\n /* \"#utility.yul\":1920:1944 */\n tag_156\n /* \"#utility.yul\":1938:1943 */\n dup2\n /* \"#utility.yul\":1920:1944 */\n tag_112\n jump\t// in\n tag_156:\n /* \"#utility.yul\":1913:1918 */\n dup2\n /* \"#utility.yul\":1910:1945 */\n eq\n /* \"#utility.yul\":1900:1963 */\n tag_157\n jumpi\n /* \"#utility.yul\":1959:1960 */\n 0x00\n /* \"#utility.yul\":1956:1957 */\n dup1\n /* \"#utility.yul\":1949:1961 */\n revert\n /* \"#utility.yul\":1900:1963 */\n tag_157:\n /* \"#utility.yul\":1847:1969 */\n pop\n jump\t// out\n /* \"#utility.yul\":1975:2114 */\n tag_114:\n /* \"#utility.yul\":2021:2026 */\n 0x00\n /* \"#utility.yul\":2059:2065 */\n dup2\n /* \"#utility.yul\":2046:2066 */\n calldataload\n /* \"#utility.yul\":2037:2066 */\n swap1\n pop\n /* \"#utility.yul\":2075:2108 */\n tag_159\n /* \"#utility.yul\":2102:2107 */\n dup2\n /* \"#utility.yul\":2075:2108 */\n tag_113\n jump\t// in\n tag_159:\n /* \"#utility.yul\":1975:2114 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":2137:2847 */\n tag_115:\n /* \"#utility.yul\":2233:2238 */\n 0x00\n /* \"#utility.yul\":2258:2339 */\n tag_161\n /* \"#utility.yul\":2274:2338 */\n tag_162\n /* \"#utility.yul\":2331:2337 */\n dup5\n /* \"#utility.yul\":2274:2338 */\n tag_109\n jump\t// in\n tag_162:\n /* \"#utility.yul\":2258:2339 */\n tag_108\n jump\t// in\n tag_161:\n /* \"#utility.yul\":2249:2339 */\n swap1\n pop\n /* \"#utility.yul\":2359:2364 */\n dup1\n /* \"#utility.yul\":2388:2394 */\n dup4\n /* \"#utility.yul\":2381:2386 */\n dup3\n /* \"#utility.yul\":2374:2395 */\n mstore\n /* \"#utility.yul\":2422:2426 */\n 0x20\n /* \"#utility.yul\":2415:2420 */\n dup3\n /* \"#utility.yul\":2411:2427 */\n add\n /* \"#utility.yul\":2404:2427 */\n swap1\n pop\n /* \"#utility.yul\":2475:2479 */\n 0x20\n /* \"#utility.yul\":2467:2473 */\n dup5\n /* \"#utility.yul\":2463:2480 */\n mul\n /* \"#utility.yul\":2455:2461 */\n dup4\n /* \"#utility.yul\":2451:2481 */\n add\n /* \"#utility.yul\":2504:2507 */\n dup6\n /* \"#utility.yul\":2496:2502 */\n dup2\n /* \"#utility.yul\":2493:2508 */\n gt\n /* \"#utility.yul\":2490:2612 */\n iszero\n tag_163\n jumpi\n /* \"#utility.yul\":2523:2602 */\n tag_164\n tag_110\n jump\t// in\n tag_164:\n /* \"#utility.yul\":2490:2612 */\n tag_163:\n /* \"#utility.yul\":2638:2644 */\n dup4\n /* \"#utility.yul\":2621:2841 */\n tag_165:\n /* \"#utility.yul\":2655:2661 */\n dup2\n /* \"#utility.yul\":2650:2653 */\n dup2\n /* \"#utility.yul\":2647:2662 */\n lt\n /* \"#utility.yul\":2621:2841 */\n iszero\n tag_167\n jumpi\n /* \"#utility.yul\":2730:2733 */\n dup1\n /* \"#utility.yul\":2759:2796 */\n tag_168\n /* \"#utility.yul\":2792:2795 */\n dup9\n /* \"#utility.yul\":2780:2790 */\n dup3\n /* \"#utility.yul\":2759:2796 */\n tag_114\n jump\t// in\n tag_168:\n /* \"#utility.yul\":2754:2757 */\n dup5\n /* \"#utility.yul\":2747:2797 */\n mstore\n /* \"#utility.yul\":2826:2830 */\n 0x20\n /* \"#utility.yul\":2821:2824 */\n dup5\n /* \"#utility.yul\":2817:2831 */\n add\n /* \"#utility.yul\":2810:2831 */\n swap4\n pop\n /* \"#utility.yul\":2697:2841 */\n pop\n /* \"#utility.yul\":2681:2685 */\n 0x20\n /* \"#utility.yul\":2676:2679 */\n dup2\n /* \"#utility.yul\":2672:2686 */\n add\n /* \"#utility.yul\":2665:2686 */\n swap1\n pop\n /* \"#utility.yul\":2621:2841 */\n jump(tag_165)\n tag_167:\n /* \"#utility.yul\":2625:2646 */\n pop\n /* \"#utility.yul\":2239:2847 */\n pop\n pop\n /* \"#utility.yul\":2137:2847 */\n swap4\n swap3\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":2870:3240 */\n tag_116:\n /* \"#utility.yul\":2941:2946 */\n 0x00\n /* \"#utility.yul\":2990:2993 */\n dup3\n /* \"#utility.yul\":2983:2987 */\n 0x1f\n /* \"#utility.yul\":2975:2981 */\n dup4\n /* \"#utility.yul\":2971:2988 */\n add\n /* \"#utility.yul\":2967:2994 */\n slt\n /* \"#utility.yul\":2957:3079 */\n tag_170\n jumpi\n /* \"#utility.yul\":2998:3077 */\n tag_171\n tag_104\n jump\t// in\n tag_171:\n /* \"#utility.yul\":2957:3079 */\n tag_170:\n /* \"#utility.yul\":3115:3121 */\n dup2\n /* \"#utility.yul\":3102:3122 */\n calldataload\n /* \"#utility.yul\":3140:3234 */\n tag_172\n /* \"#utility.yul\":3230:3233 */\n dup5\n /* \"#utility.yul\":3222:3228 */\n dup3\n /* \"#utility.yul\":3215:3219 */\n 0x20\n /* \"#utility.yul\":3207:3213 */\n dup7\n /* \"#utility.yul\":3203:3220 */\n add\n /* \"#utility.yul\":3140:3234 */\n tag_115\n jump\t// in\n tag_172:\n /* \"#utility.yul\":3131:3234 */\n swap2\n pop\n /* \"#utility.yul\":2947:3240 */\n pop\n /* \"#utility.yul\":2870:3240 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":3246:3323 */\n tag_117:\n /* \"#utility.yul\":3283:3290 */\n 0x00\n /* \"#utility.yul\":3312:3317 */\n dup2\n /* \"#utility.yul\":3301:3317 */\n swap1\n pop\n /* \"#utility.yul\":3246:3323 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":3329:3451 */\n tag_118:\n /* \"#utility.yul\":3402:3426 */\n tag_175\n /* \"#utility.yul\":3420:3425 */\n dup2\n /* \"#utility.yul\":3402:3426 */\n tag_117\n jump\t// in\n tag_175:\n /* \"#utility.yul\":3395:3400 */\n dup2\n /* \"#utility.yul\":3392:3427 */\n eq\n /* \"#utility.yul\":3382:3445 */\n tag_176\n jumpi\n /* \"#utility.yul\":3441:3442 */\n 0x00\n /* \"#utility.yul\":3438:3439 */\n dup1\n /* \"#utility.yul\":3431:3443 */\n revert\n /* \"#utility.yul\":3382:3445 */\n tag_176:\n /* \"#utility.yul\":3329:3451 */\n pop\n jump\t// out\n /* \"#utility.yul\":3457:3596 */\n tag_119:\n /* \"#utility.yul\":3503:3508 */\n 0x00\n /* \"#utility.yul\":3541:3547 */\n dup2\n /* \"#utility.yul\":3528:3548 */\n calldataload\n /* \"#utility.yul\":3519:3548 */\n swap1\n pop\n /* \"#utility.yul\":3557:3590 */\n tag_178\n /* \"#utility.yul\":3584:3589 */\n dup2\n /* \"#utility.yul\":3557:3590 */\n tag_118\n jump\t// in\n tag_178:\n /* \"#utility.yul\":3457:3596 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":3602:4577 */\n tag_9:\n /* \"#utility.yul\":3713:3719 */\n 0x00\n /* \"#utility.yul\":3721:3727 */\n dup1\n /* \"#utility.yul\":3729:3735 */\n 0x00\n /* \"#utility.yul\":3737:3743 */\n dup1\n /* \"#utility.yul\":3786:3789 */\n 0x80\n /* \"#utility.yul\":3774:3783 */\n dup6\n /* \"#utility.yul\":3765:3772 */\n dup8\n /* \"#utility.yul\":3761:3784 */\n sub\n /* \"#utility.yul\":3757:3790 */\n slt\n /* \"#utility.yul\":3754:3874 */\n iszero\n tag_180\n jumpi\n /* \"#utility.yul\":3793:3872 */\n tag_181\n tag_102\n jump\t// in\n tag_181:\n /* \"#utility.yul\":3754:3874 */\n tag_180:\n /* \"#utility.yul\":3941:3942 */\n 0x00\n /* \"#utility.yul\":3930:3939 */\n dup6\n /* \"#utility.yul\":3926:3943 */\n add\n /* \"#utility.yul\":3913:3944 */\n calldataload\n /* \"#utility.yul\":3971:3989 */\n 0xffffffffffffffff\n /* \"#utility.yul\":3963:3969 */\n dup2\n /* \"#utility.yul\":3960:3990 */\n gt\n /* \"#utility.yul\":3957:4074 */\n iszero\n tag_182\n jumpi\n /* \"#utility.yul\":3993:4072 */\n tag_183\n tag_103\n jump\t// in\n tag_183:\n /* \"#utility.yul\":3957:4074 */\n tag_182:\n /* \"#utility.yul\":4098:4176 */\n tag_184\n /* \"#utility.yul\":4168:4175 */\n dup8\n /* \"#utility.yul\":4159:4165 */\n dup3\n /* \"#utility.yul\":4148:4157 */\n dup9\n /* \"#utility.yul\":4144:4166 */\n add\n /* \"#utility.yul\":4098:4176 */\n tag_116\n jump\t// in\n tag_184:\n /* \"#utility.yul\":4088:4176 */\n swap5\n pop\n /* \"#utility.yul\":3884:4186 */\n pop\n /* \"#utility.yul\":4225:4227 */\n 0x20\n /* \"#utility.yul\":4251:4304 */\n tag_185\n /* \"#utility.yul\":4296:4303 */\n dup8\n /* \"#utility.yul\":4287:4293 */\n dup3\n /* \"#utility.yul\":4276:4285 */\n dup9\n /* \"#utility.yul\":4272:4294 */\n add\n /* \"#utility.yul\":4251:4304 */\n tag_119\n jump\t// in\n tag_185:\n /* \"#utility.yul\":4241:4304 */\n swap4\n pop\n /* \"#utility.yul\":4196:4314 */\n pop\n /* \"#utility.yul\":4353:4355 */\n 0x40\n /* \"#utility.yul\":4379:4432 */\n tag_186\n /* \"#utility.yul\":4424:4431 */\n dup8\n /* \"#utility.yul\":4415:4421 */\n dup3\n /* \"#utility.yul\":4404:4413 */\n dup9\n /* \"#utility.yul\":4400:4422 */\n add\n /* \"#utility.yul\":4379:4432 */\n tag_119\n jump\t// in\n tag_186:\n /* \"#utility.yul\":4369:4432 */\n swap3\n pop\n /* \"#utility.yul\":4324:4442 */\n pop\n /* \"#utility.yul\":4481:4483 */\n 0x60\n /* \"#utility.yul\":4507:4560 */\n tag_187\n /* \"#utility.yul\":4552:4559 */\n dup8\n /* \"#utility.yul\":4543:4549 */\n dup3\n /* \"#utility.yul\":4532:4541 */\n dup9\n /* \"#utility.yul\":4528:4550 */\n add\n /* \"#utility.yul\":4507:4560 */\n tag_119\n jump\t// in\n tag_187:\n /* \"#utility.yul\":4497:4560 */\n swap2\n pop\n /* \"#utility.yul\":4452:4570 */\n pop\n /* \"#utility.yul\":3602:4577 */\n swap3\n swap6\n swap2\n swap5\n pop\n swap3\n pop\n jump\t// out\n /* \"#utility.yul\":4583:4660 */\n tag_120:\n /* \"#utility.yul\":4620:4627 */\n 0x00\n /* \"#utility.yul\":4649:4654 */\n dup2\n /* \"#utility.yul\":4638:4654 */\n swap1\n pop\n /* \"#utility.yul\":4583:4660 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":4666:4784 */\n tag_121:\n /* \"#utility.yul\":4753:4777 */\n tag_190\n /* \"#utility.yul\":4771:4776 */\n dup2\n /* \"#utility.yul\":4753:4777 */\n tag_120\n jump\t// in\n tag_190:\n /* \"#utility.yul\":4748:4751 */\n dup3\n /* \"#utility.yul\":4741:4778 */\n mstore\n /* \"#utility.yul\":4666:4784 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":4790:5012 */\n tag_12:\n /* \"#utility.yul\":4883:4887 */\n 0x00\n /* \"#utility.yul\":4921:4923 */\n 0x20\n /* \"#utility.yul\":4910:4919 */\n dup3\n /* \"#utility.yul\":4906:4924 */\n add\n /* \"#utility.yul\":4898:4924 */\n swap1\n pop\n /* \"#utility.yul\":4934:5005 */\n tag_192\n /* \"#utility.yul\":5002:5003 */\n 0x00\n /* \"#utility.yul\":4991:5000 */\n dup4\n /* \"#utility.yul\":4987:5004 */\n add\n /* \"#utility.yul\":4978:4984 */\n dup5\n /* \"#utility.yul\":4934:5005 */\n tag_121\n jump\t// in\n tag_192:\n /* \"#utility.yul\":4790:5012 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":5018:5847 */\n tag_15:\n /* \"#utility.yul\":5120:5126 */\n 0x00\n /* \"#utility.yul\":5128:5134 */\n dup1\n /* \"#utility.yul\":5136:5142 */\n 0x00\n /* \"#utility.yul\":5185:5187 */\n 0x60\n /* \"#utility.yul\":5173:5182 */\n dup5\n /* \"#utility.yul\":5164:5171 */\n dup7\n /* \"#utility.yul\":5160:5183 */\n sub\n /* \"#utility.yul\":5156:5188 */\n slt\n /* \"#utility.yul\":5153:5272 */\n iszero\n tag_194\n jumpi\n /* \"#utility.yul\":5191:5270 */\n tag_195\n tag_102\n jump\t// in\n tag_195:\n /* \"#utility.yul\":5153:5272 */\n tag_194:\n /* \"#utility.yul\":5339:5340 */\n 0x00\n /* \"#utility.yul\":5328:5337 */\n dup5\n /* \"#utility.yul\":5324:5341 */\n add\n /* \"#utility.yul\":5311:5342 */\n calldataload\n /* \"#utility.yul\":5369:5387 */\n 0xffffffffffffffff\n /* \"#utility.yul\":5361:5367 */\n dup2\n /* \"#utility.yul\":5358:5388 */\n gt\n /* \"#utility.yul\":5355:5472 */\n iszero\n tag_196\n jumpi\n /* \"#utility.yul\":5391:5470 */\n tag_197\n tag_103\n jump\t// in\n tag_197:\n /* \"#utility.yul\":5355:5472 */\n tag_196:\n /* \"#utility.yul\":5496:5574 */\n tag_198\n /* \"#utility.yul\":5566:5573 */\n dup7\n /* \"#utility.yul\":5557:5563 */\n dup3\n /* \"#utility.yul\":5546:5555 */\n dup8\n /* \"#utility.yul\":5542:5564 */\n add\n /* \"#utility.yul\":5496:5574 */\n tag_116\n jump\t// in\n tag_198:\n /* \"#utility.yul\":5486:5574 */\n swap4\n pop\n /* \"#utility.yul\":5282:5584 */\n pop\n /* \"#utility.yul\":5623:5625 */\n 0x20\n /* \"#utility.yul\":5649:5702 */\n tag_199\n /* \"#utility.yul\":5694:5701 */\n dup7\n /* \"#utility.yul\":5685:5691 */\n dup3\n /* \"#utility.yul\":5674:5683 */\n dup8\n /* \"#utility.yul\":5670:5692 */\n add\n /* \"#utility.yul\":5649:5702 */\n tag_119\n jump\t// in\n tag_199:\n /* \"#utility.yul\":5639:5702 */\n swap3\n pop\n /* \"#utility.yul\":5594:5712 */\n pop\n /* \"#utility.yul\":5751:5753 */\n 0x40\n /* \"#utility.yul\":5777:5830 */\n tag_200\n /* \"#utility.yul\":5822:5829 */\n dup7\n /* \"#utility.yul\":5813:5819 */\n dup3\n /* \"#utility.yul\":5802:5811 */\n dup8\n /* \"#utility.yul\":5798:5820 */\n add\n /* \"#utility.yul\":5777:5830 */\n tag_119\n jump\t// in\n tag_200:\n /* \"#utility.yul\":5767:5830 */\n swap2\n pop\n /* \"#utility.yul\":5722:5840 */\n pop\n /* \"#utility.yul\":5018:5847 */\n swap3\n pop\n swap3\n pop\n swap3\n jump\t// out\n /* \"#utility.yul\":5853:6472 */\n tag_20:\n /* \"#utility.yul\":5930:5936 */\n 0x00\n /* \"#utility.yul\":5938:5944 */\n dup1\n /* \"#utility.yul\":5946:5952 */\n 0x00\n /* \"#utility.yul\":5995:5997 */\n 0x60\n /* \"#utility.yul\":5983:5992 */\n dup5\n /* \"#utility.yul\":5974:5981 */\n dup7\n /* \"#utility.yul\":5970:5993 */\n sub\n /* \"#utility.yul\":5966:5998 */\n slt\n /* \"#utility.yul\":5963:6082 */\n iszero\n tag_202\n jumpi\n /* \"#utility.yul\":6001:6080 */\n tag_203\n tag_102\n jump\t// in\n tag_203:\n /* \"#utility.yul\":5963:6082 */\n tag_202:\n /* \"#utility.yul\":6121:6122 */\n 0x00\n /* \"#utility.yul\":6146:6199 */\n tag_204\n /* \"#utility.yul\":6191:6198 */\n dup7\n /* \"#utility.yul\":6182:6188 */\n dup3\n /* \"#utility.yul\":6171:6180 */\n dup8\n /* \"#utility.yul\":6167:6189 */\n add\n /* \"#utility.yul\":6146:6199 */\n tag_114\n jump\t// in\n tag_204:\n /* \"#utility.yul\":6136:6199 */\n swap4\n pop\n /* \"#utility.yul\":6092:6209 */\n pop\n /* \"#utility.yul\":6248:6250 */\n 0x20\n /* \"#utility.yul\":6274:6327 */\n tag_205\n /* \"#utility.yul\":6319:6326 */\n dup7\n /* \"#utility.yul\":6310:6316 */\n dup3\n /* \"#utility.yul\":6299:6308 */\n dup8\n /* \"#utility.yul\":6295:6317 */\n add\n /* \"#utility.yul\":6274:6327 */\n tag_119\n jump\t// in\n tag_205:\n /* \"#utility.yul\":6264:6327 */\n swap3\n pop\n /* \"#utility.yul\":6219:6337 */\n pop\n /* \"#utility.yul\":6376:6378 */\n 0x40\n /* \"#utility.yul\":6402:6455 */\n tag_206\n /* \"#utility.yul\":6447:6454 */\n dup7\n /* \"#utility.yul\":6438:6444 */\n dup3\n /* \"#utility.yul\":6427:6436 */\n dup8\n /* \"#utility.yul\":6423:6445 */\n add\n /* \"#utility.yul\":6402:6455 */\n tag_119\n jump\t// in\n tag_206:\n /* \"#utility.yul\":6392:6455 */\n swap2\n pop\n /* \"#utility.yul\":6347:6465 */\n pop\n /* \"#utility.yul\":5853:6472 */\n swap3\n pop\n swap3\n pop\n swap3\n jump\t// out\n /* \"#utility.yul\":6478:6592 */\n tag_122:\n /* \"#utility.yul\":6545:6551 */\n 0x00\n /* \"#utility.yul\":6579:6584 */\n dup2\n /* \"#utility.yul\":6573:6585 */\n mload\n /* \"#utility.yul\":6563:6585 */\n swap1\n pop\n /* \"#utility.yul\":6478:6592 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":6598:6782 */\n tag_123:\n /* \"#utility.yul\":6697:6708 */\n 0x00\n /* \"#utility.yul\":6731:6737 */\n dup3\n /* \"#utility.yul\":6726:6729 */\n dup3\n /* \"#utility.yul\":6719:6738 */\n mstore\n /* \"#utility.yul\":6771:6775 */\n 0x20\n /* \"#utility.yul\":6766:6769 */\n dup3\n /* \"#utility.yul\":6762:6776 */\n add\n /* \"#utility.yul\":6747:6776 */\n swap1\n pop\n /* \"#utility.yul\":6598:6782 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":6788:6920 */\n tag_124:\n /* \"#utility.yul\":6855:6859 */\n 0x00\n /* \"#utility.yul\":6878:6881 */\n dup2\n /* \"#utility.yul\":6870:6881 */\n swap1\n pop\n /* \"#utility.yul\":6908:6912 */\n 0x20\n /* \"#utility.yul\":6903:6906 */\n dup3\n /* \"#utility.yul\":6899:6913 */\n add\n /* \"#utility.yul\":6891:6913 */\n swap1\n pop\n /* \"#utility.yul\":6788:6920 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":6926:7034 */\n tag_125:\n /* \"#utility.yul\":7003:7027 */\n tag_211\n /* \"#utility.yul\":7021:7026 */\n dup2\n /* \"#utility.yul\":7003:7027 */\n tag_120\n jump\t// in\n tag_211:\n /* \"#utility.yul\":6998:7001 */\n dup3\n /* \"#utility.yul\":6991:7028 */\n mstore\n /* \"#utility.yul\":6926:7034 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":7040:7219 */\n tag_126:\n /* \"#utility.yul\":7109:7119 */\n 0x00\n /* \"#utility.yul\":7130:7176 */\n tag_213\n /* \"#utility.yul\":7172:7175 */\n dup4\n /* \"#utility.yul\":7164:7170 */\n dup4\n /* \"#utility.yul\":7130:7176 */\n tag_125\n jump\t// in\n tag_213:\n /* \"#utility.yul\":7208:7212 */\n 0x20\n /* \"#utility.yul\":7203:7206 */\n dup4\n /* \"#utility.yul\":7199:7213 */\n add\n /* \"#utility.yul\":7185:7213 */\n swap1\n pop\n /* \"#utility.yul\":7040:7219 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":7225:7338 */\n tag_127:\n /* \"#utility.yul\":7295:7299 */\n 0x00\n /* \"#utility.yul\":7327:7331 */\n 0x20\n /* \"#utility.yul\":7322:7325 */\n dup3\n /* \"#utility.yul\":7318:7332 */\n add\n /* \"#utility.yul\":7310:7332 */\n swap1\n pop\n /* \"#utility.yul\":7225:7338 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":7374:8106 */\n tag_128:\n /* \"#utility.yul\":7493:7496 */\n 0x00\n /* \"#utility.yul\":7522:7576 */\n tag_216\n /* \"#utility.yul\":7570:7575 */\n dup3\n /* \"#utility.yul\":7522:7576 */\n tag_122\n jump\t// in\n tag_216:\n /* \"#utility.yul\":7592:7678 */\n tag_217\n /* \"#utility.yul\":7671:7677 */\n dup2\n /* \"#utility.yul\":7666:7669 */\n dup6\n /* \"#utility.yul\":7592:7678 */\n tag_123\n jump\t// in\n tag_217:\n /* \"#utility.yul\":7585:7678 */\n swap4\n pop\n /* \"#utility.yul\":7702:7758 */\n tag_218\n /* \"#utility.yul\":7752:7757 */\n dup4\n /* \"#utility.yul\":7702:7758 */\n tag_124\n jump\t// in\n tag_218:\n /* \"#utility.yul\":7781:7788 */\n dup1\n /* \"#utility.yul\":7812:7813 */\n 0x00\n /* \"#utility.yul\":7797:8081 */\n tag_219:\n /* \"#utility.yul\":7822:7828 */\n dup4\n /* \"#utility.yul\":7819:7820 */\n dup2\n /* \"#utility.yul\":7816:7829 */\n lt\n /* \"#utility.yul\":7797:8081 */\n iszero\n tag_221\n jumpi\n /* \"#utility.yul\":7898:7904 */\n dup2\n /* \"#utility.yul\":7892:7905 */\n mload\n /* \"#utility.yul\":7925:7988 */\n tag_222\n /* \"#utility.yul\":7984:7987 */\n dup9\n /* \"#utility.yul\":7969:7982 */\n dup3\n /* \"#utility.yul\":7925:7988 */\n tag_126\n jump\t// in\n tag_222:\n /* \"#utility.yul\":7918:7988 */\n swap8\n pop\n /* \"#utility.yul\":8011:8071 */\n tag_223\n /* \"#utility.yul\":8064:8070 */\n dup4\n /* \"#utility.yul\":8011:8071 */\n tag_127\n jump\t// in\n tag_223:\n /* \"#utility.yul\":8001:8071 */\n swap3\n pop\n /* \"#utility.yul\":7857:8081 */\n pop\n /* \"#utility.yul\":7844:7845 */\n 0x01\n /* \"#utility.yul\":7841:7842 */\n dup2\n /* \"#utility.yul\":7837:7846 */\n add\n /* \"#utility.yul\":7832:7846 */\n swap1\n pop\n /* \"#utility.yul\":7797:8081 */\n jump(tag_219)\n tag_221:\n /* \"#utility.yul\":7801:7815 */\n pop\n /* \"#utility.yul\":8097:8100 */\n dup6\n /* \"#utility.yul\":8090:8100 */\n swap4\n pop\n /* \"#utility.yul\":7498:8106 */\n pop\n pop\n pop\n /* \"#utility.yul\":7374:8106 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":8112:8485 */\n tag_27:\n /* \"#utility.yul\":8255:8259 */\n 0x00\n /* \"#utility.yul\":8293:8295 */\n 0x20\n /* \"#utility.yul\":8282:8291 */\n dup3\n /* \"#utility.yul\":8278:8296 */\n add\n /* \"#utility.yul\":8270:8296 */\n swap1\n pop\n /* \"#utility.yul\":8342:8351 */\n dup2\n /* \"#utility.yul\":8336:8340 */\n dup2\n /* \"#utility.yul\":8332:8352 */\n sub\n /* \"#utility.yul\":8328:8329 */\n 0x00\n /* \"#utility.yul\":8317:8326 */\n dup4\n /* \"#utility.yul\":8313:8330 */\n add\n /* \"#utility.yul\":8306:8353 */\n mstore\n /* \"#utility.yul\":8370:8478 */\n tag_225\n /* \"#utility.yul\":8473:8477 */\n dup2\n /* \"#utility.yul\":8464:8470 */\n dup5\n /* \"#utility.yul\":8370:8478 */\n tag_128\n jump\t// in\n tag_225:\n /* \"#utility.yul\":8362:8478 */\n swap1\n pop\n /* \"#utility.yul\":8112:8485 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":8491:8671 */\n tag_35:\n /* \"#utility.yul\":8539:8616 */\n 0x4e487b7100000000000000000000000000000000000000000000000000000000\n /* \"#utility.yul\":8536:8537 */\n 0x00\n /* \"#utility.yul\":8529:8617 */\n mstore\n /* \"#utility.yul\":8636:8640 */\n 0x32\n /* \"#utility.yul\":8633:8634 */\n 0x04\n /* \"#utility.yul\":8626:8641 */\n mstore\n /* \"#utility.yul\":8660:8664 */\n 0x24\n /* \"#utility.yul\":8657:8658 */\n 0x00\n /* \"#utility.yul\":8650:8665 */\n revert\n /* \"#utility.yul\":8677:8857 */\n tag_129:\n /* \"#utility.yul\":8725:8802 */\n 0x4e487b7100000000000000000000000000000000000000000000000000000000\n /* \"#utility.yul\":8722:8723 */\n 0x00\n /* \"#utility.yul\":8715:8803 */\n mstore\n /* \"#utility.yul\":8822:8826 */\n 0x11\n /* \"#utility.yul\":8819:8820 */\n 0x04\n /* \"#utility.yul\":8812:8827 */\n mstore\n /* \"#utility.yul\":8846:8850 */\n 0x24\n /* \"#utility.yul\":8843:8844 */\n 0x00\n /* \"#utility.yul\":8836:8851 */\n revert\n /* \"#utility.yul\":8863:9054 */\n tag_37:\n /* \"#utility.yul\":8903:8906 */\n 0x00\n /* \"#utility.yul\":8922:8942 */\n tag_229\n /* \"#utility.yul\":8940:8941 */\n dup3\n /* \"#utility.yul\":8922:8942 */\n tag_117\n jump\t// in\n tag_229:\n /* \"#utility.yul\":8917:8942 */\n swap2\n pop\n /* \"#utility.yul\":8956:8976 */\n tag_230\n /* \"#utility.yul\":8974:8975 */\n dup4\n /* \"#utility.yul\":8956:8976 */\n tag_117\n jump\t// in\n tag_230:\n /* \"#utility.yul\":8951:8976 */\n swap3\n pop\n /* \"#utility.yul\":8999:9000 */\n dup3\n /* \"#utility.yul\":8996:8997 */\n dup3\n /* \"#utility.yul\":8992:9001 */\n add\n /* \"#utility.yul\":8985:9001 */\n swap1\n pop\n /* \"#utility.yul\":9020:9023 */\n dup1\n /* \"#utility.yul\":9017:9018 */\n dup3\n /* \"#utility.yul\":9014:9024 */\n gt\n /* \"#utility.yul\":9011:9047 */\n iszero\n tag_231\n jumpi\n /* \"#utility.yul\":9027:9045 */\n tag_232\n tag_129\n jump\t// in\n tag_232:\n /* \"#utility.yul\":9011:9047 */\n tag_231:\n /* \"#utility.yul\":8863:9054 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":9060:9293 */\n tag_39:\n /* \"#utility.yul\":9099:9102 */\n 0x00\n /* \"#utility.yul\":9122:9146 */\n tag_234\n /* \"#utility.yul\":9140:9145 */\n dup3\n /* \"#utility.yul\":9122:9146 */\n tag_117\n jump\t// in\n tag_234:\n /* \"#utility.yul\":9113:9146 */\n swap2\n pop\n /* \"#utility.yul\":9168:9234 */\n 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n /* \"#utility.yul\":9161:9166 */\n dup3\n /* \"#utility.yul\":9158:9235 */\n sub\n /* \"#utility.yul\":9155:9258 */\n tag_235\n jumpi\n /* \"#utility.yul\":9238:9256 */\n tag_236\n tag_129\n jump\t// in\n tag_236:\n /* \"#utility.yul\":9155:9258 */\n tag_235:\n /* \"#utility.yul\":9285:9286 */\n 0x01\n /* \"#utility.yul\":9278:9283 */\n dup3\n /* \"#utility.yul\":9274:9287 */\n add\n /* \"#utility.yul\":9267:9287 */\n swap1\n pop\n /* \"#utility.yul\":9060:9293 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":9299:9417 */\n tag_130:\n /* \"#utility.yul\":9386:9410 */\n tag_238\n /* \"#utility.yul\":9404:9409 */\n dup2\n /* \"#utility.yul\":9386:9410 */\n tag_112\n jump\t// in\n tag_238:\n /* \"#utility.yul\":9381:9384 */\n dup3\n /* \"#utility.yul\":9374:9411 */\n mstore\n /* \"#utility.yul\":9299:9417 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":9423:9541 */\n tag_131:\n /* \"#utility.yul\":9510:9534 */\n tag_240\n /* \"#utility.yul\":9528:9533 */\n dup2\n /* \"#utility.yul\":9510:9534 */\n tag_117\n jump\t// in\n tag_240:\n /* \"#utility.yul\":9505:9508 */\n dup3\n /* \"#utility.yul\":9498:9535 */\n mstore\n /* \"#utility.yul\":9423:9541 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":9547:9989 */\n tag_55:\n /* \"#utility.yul\":9696:9700 */\n 0x00\n /* \"#utility.yul\":9734:9736 */\n 0x60\n /* \"#utility.yul\":9723:9732 */\n dup3\n /* \"#utility.yul\":9719:9737 */\n add\n /* \"#utility.yul\":9711:9737 */\n swap1\n pop\n /* \"#utility.yul\":9747:9818 */\n tag_242\n /* \"#utility.yul\":9815:9816 */\n 0x00\n /* \"#utility.yul\":9804:9813 */\n dup4\n /* \"#utility.yul\":9800:9817 */\n add\n /* \"#utility.yul\":9791:9797 */\n dup7\n /* \"#utility.yul\":9747:9818 */\n tag_130\n jump\t// in\n tag_242:\n /* \"#utility.yul\":9828:9900 */\n tag_243\n /* \"#utility.yul\":9896:9898 */\n 0x20\n /* \"#utility.yul\":9885:9894 */\n dup4\n /* \"#utility.yul\":9881:9899 */\n add\n /* \"#utility.yul\":9872:9878 */\n dup6\n /* \"#utility.yul\":9828:9900 */\n tag_131\n jump\t// in\n tag_243:\n /* \"#utility.yul\":9910:9982 */\n tag_244\n /* \"#utility.yul\":9978:9980 */\n 0x40\n /* \"#utility.yul\":9967:9976 */\n dup4\n /* \"#utility.yul\":9963:9981 */\n add\n /* \"#utility.yul\":9954:9960 */\n dup5\n /* \"#utility.yul\":9910:9982 */\n tag_121\n jump\t// in\n tag_244:\n /* \"#utility.yul\":9547:9989 */\n swap5\n swap4\n pop\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":9995:10327 */\n tag_64:\n /* \"#utility.yul\":10116:10120 */\n 0x00\n /* \"#utility.yul\":10154:10156 */\n 0x40\n /* \"#utility.yul\":10143:10152 */\n dup3\n /* \"#utility.yul\":10139:10157 */\n add\n /* \"#utility.yul\":10131:10157 */\n swap1\n pop\n /* \"#utility.yul\":10167:10238 */\n tag_246\n /* \"#utility.yul\":10235:10236 */\n 0x00\n /* \"#utility.yul\":10224:10233 */\n dup4\n /* \"#utility.yul\":10220:10237 */\n add\n /* \"#utility.yul\":10211:10217 */\n dup6\n /* \"#utility.yul\":10167:10238 */\n tag_130\n jump\t// in\n tag_246:\n /* \"#utility.yul\":10248:10320 */\n tag_247\n /* \"#utility.yul\":10316:10318 */\n 0x20\n /* \"#utility.yul\":10305:10314 */\n dup4\n /* \"#utility.yul\":10301:10319 */\n add\n /* \"#utility.yul\":10292:10298 */\n dup5\n /* \"#utility.yul\":10248:10320 */\n tag_130\n jump\t// in\n tag_247:\n /* \"#utility.yul\":9995:10327 */\n swap4\n swap3\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":10333:10527 */\n tag_76:\n /* \"#utility.yul\":10373:10377 */\n 0x00\n /* \"#utility.yul\":10393:10413 */\n tag_249\n /* \"#utility.yul\":10411:10412 */\n dup3\n /* \"#utility.yul\":10393:10413 */\n tag_117\n jump\t// in\n tag_249:\n /* \"#utility.yul\":10388:10413 */\n swap2\n pop\n /* \"#utility.yul\":10427:10447 */\n tag_250\n /* \"#utility.yul\":10445:10446 */\n dup4\n /* \"#utility.yul\":10427:10447 */\n tag_117\n jump\t// in\n tag_250:\n /* \"#utility.yul\":10422:10447 */\n swap3\n pop\n /* \"#utility.yul\":10471:10472 */\n dup3\n /* \"#utility.yul\":10468:10469 */\n dup3\n /* \"#utility.yul\":10464:10473 */\n sub\n /* \"#utility.yul\":10456:10473 */\n swap1\n pop\n /* \"#utility.yul\":10495:10496 */\n dup2\n /* \"#utility.yul\":10489:10493 */\n dup2\n /* \"#utility.yul\":10486:10497 */\n gt\n /* \"#utility.yul\":10483:10520 */\n iszero\n tag_251\n jumpi\n /* \"#utility.yul\":10500:10518 */\n tag_252\n tag_129\n jump\t// in\n tag_252:\n /* \"#utility.yul\":10483:10520 */\n tag_251:\n /* \"#utility.yul\":10333:10527 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":10533:10975 */\n tag_82:\n /* \"#utility.yul\":10682:10686 */\n 0x00\n /* \"#utility.yul\":10720:10722 */\n 0x60\n /* \"#utility.yul\":10709:10718 */\n dup3\n /* \"#utility.yul\":10705:10723 */\n add\n /* \"#utility.yul\":10697:10723 */\n swap1\n pop\n /* \"#utility.yul\":10733:10804 */\n tag_254\n /* \"#utility.yul\":10801:10802 */\n 0x00\n /* \"#utility.yul\":10790:10799 */\n dup4\n /* \"#utility.yul\":10786:10803 */\n add\n /* \"#utility.yul\":10777:10783 */\n dup7\n /* \"#utility.yul\":10733:10804 */\n tag_130\n jump\t// in\n tag_254:\n /* \"#utility.yul\":10814:10886 */\n tag_255\n /* \"#utility.yul\":10882:10884 */\n 0x20\n /* \"#utility.yul\":10871:10880 */\n dup4\n /* \"#utility.yul\":10867:10885 */\n add\n /* \"#utility.yul\":10858:10864 */\n dup6\n /* \"#utility.yul\":10814:10886 */\n tag_130\n jump\t// in\n tag_255:\n /* \"#utility.yul\":10896:10968 */\n tag_256\n /* \"#utility.yul\":10964:10966 */\n 0x40\n /* \"#utility.yul\":10953:10962 */\n dup4\n /* \"#utility.yul\":10949:10967 */\n add\n /* \"#utility.yul\":10940:10946 */\n dup5\n /* \"#utility.yul\":10896:10968 */\n tag_130\n jump\t// in\n tag_256:\n /* \"#utility.yul\":10533:10975 */\n swap5\n swap4\n pop\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":10981:11423 */\n tag_86:\n /* \"#utility.yul\":11130:11134 */\n 0x00\n /* \"#utility.yul\":11168:11170 */\n 0x60\n /* \"#utility.yul\":11157:11166 */\n dup3\n /* \"#utility.yul\":11153:11171 */\n add\n /* \"#utility.yul\":11145:11171 */\n swap1\n pop\n /* \"#utility.yul\":11181:11252 */\n tag_258\n /* \"#utility.yul\":11249:11250 */\n 0x00\n /* \"#utility.yul\":11238:11247 */\n dup4\n /* \"#utility.yul\":11234:11251 */\n add\n /* \"#utility.yul\":11225:11231 */\n dup7\n /* \"#utility.yul\":11181:11252 */\n tag_130\n jump\t// in\n tag_258:\n /* \"#utility.yul\":11262:11334 */\n tag_259\n /* \"#utility.yul\":11330:11332 */\n 0x20\n /* \"#utility.yul\":11319:11328 */\n dup4\n /* \"#utility.yul\":11315:11333 */\n add\n /* \"#utility.yul\":11306:11312 */\n dup6\n /* \"#utility.yul\":11262:11334 */\n tag_131\n jump\t// in\n tag_259:\n /* \"#utility.yul\":11344:11416 */\n tag_260\n /* \"#utility.yul\":11412:11414 */\n 0x40\n /* \"#utility.yul\":11401:11410 */\n dup4\n /* \"#utility.yul\":11397:11415 */\n add\n /* \"#utility.yul\":11388:11394 */\n dup5\n /* \"#utility.yul\":11344:11416 */\n tag_131\n jump\t// in\n tag_260:\n /* \"#utility.yul\":10981:11423 */\n swap5\n swap4\n pop\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":11429:11551 */\n tag_132:\n /* \"#utility.yul\":11502:11526 */\n tag_262\n /* \"#utility.yul\":11520:11525 */\n dup2\n /* \"#utility.yul\":11502:11526 */\n tag_120\n jump\t// in\n tag_262:\n /* \"#utility.yul\":11495:11500 */\n dup2\n /* \"#utility.yul\":11492:11527 */\n eq\n /* \"#utility.yul\":11482:11545 */\n tag_263\n jumpi\n /* \"#utility.yul\":11541:11542 */\n 0x00\n /* \"#utility.yul\":11538:11539 */\n dup1\n /* \"#utility.yul\":11531:11543 */\n revert\n /* \"#utility.yul\":11482:11545 */\n tag_263:\n /* \"#utility.yul\":11429:11551 */\n pop\n jump\t// out\n /* \"#utility.yul\":11557:11700 */\n tag_133:\n /* \"#utility.yul\":11614:11619 */\n 0x00\n /* \"#utility.yul\":11645:11651 */\n dup2\n /* \"#utility.yul\":11639:11652 */\n mload\n /* \"#utility.yul\":11630:11652 */\n swap1\n pop\n /* \"#utility.yul\":11661:11694 */\n tag_265\n /* \"#utility.yul\":11688:11693 */\n dup2\n /* \"#utility.yul\":11661:11694 */\n tag_132\n jump\t// in\n tag_265:\n /* \"#utility.yul\":11557:11700 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":11706:12057 */\n tag_90:\n /* \"#utility.yul\":11776:11782 */\n 0x00\n /* \"#utility.yul\":11825:11827 */\n 0x20\n /* \"#utility.yul\":11813:11822 */\n dup3\n /* \"#utility.yul\":11804:11811 */\n dup5\n /* \"#utility.yul\":11800:11823 */\n sub\n /* \"#utility.yul\":11796:11828 */\n slt\n /* \"#utility.yul\":11793:11912 */\n iszero\n tag_267\n jumpi\n /* \"#utility.yul\":11831:11910 */\n tag_268\n tag_102\n jump\t// in\n tag_268:\n /* \"#utility.yul\":11793:11912 */\n tag_267:\n /* \"#utility.yul\":11951:11952 */\n 0x00\n /* \"#utility.yul\":11976:12040 */\n tag_269\n /* \"#utility.yul\":12032:12039 */\n dup5\n /* \"#utility.yul\":12023:12029 */\n dup3\n /* \"#utility.yul\":12012:12021 */\n dup6\n /* \"#utility.yul\":12008:12030 */\n add\n /* \"#utility.yul\":11976:12040 */\n tag_133\n jump\t// in\n tag_269:\n /* \"#utility.yul\":11966:12040 */\n swap2\n pop\n /* \"#utility.yul\":11922:12050 */\n pop\n /* \"#utility.yul\":11706:12057 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n\n auxdata: 0xa26469706673582212207d832c09cf02fc4ffcfa4e28eed5e6ebf6b2feb51b095442303cc0545277b42c64736f6c63430008110033\n}\n",
"bytecode": {
"functionDebugData": {},
"generatedSources": [],
"linkReferences": {},
"object": "608060405234801561001057600080fd5b50610c5c806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80637ef79f8c1461005157806384dd0d1214610081578063b31825bf146100b1578063d56154ab146100e1575b600080fd5b61006b6004803603810190610066919061077a565b610111565b6040516100789190610816565b60405180910390f35b61009b60048036038101906100969190610831565b6102b2565b6040516100a89190610816565b60405180910390f35b6100cb60048036038101906100c691906108a0565b610483565b6040516100d89190610816565b60405180910390f35b6100fb60048036038101906100f69190610831565b61050c565b60405161010891906109b1565b60405180910390f35b60008061011f86868661050c565b905060005b8151811015610184576001600080848481518110610145576101446109d3565b5b60200260200101518152602001908152602001600020600082825461016a9190610a31565b92505081905550808061017c90610a65565b915050610124565b50600080600090505b82518110156101f05760008382815181106101ab576101aa6109d3565b5b602002602001015190506000806000838152602001908152602001600020549050838111156101db578093508195505b505080806101e890610a65565b91505061018d565b5060005b825181101561025e57600080858360208110610213576102126109d3565b5b1a60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009055808061025690610a65565b9150506101f4565b50838110156102a8573081846040517f22bcb23b00000000000000000000000000000000000000000000000000000000815260040161029f93929190610acb565b60405180910390fd5b5050949350505050565b6000806102c085858561050c565b90506000816000815181106102d8576102d76109d3565b5b602002602001015190506000801b8103610346573086600081518110610301576103006109d3565b5b60200260200101516040517f2a0c203900000000000000000000000000000000000000000000000000000000815260040161033d929190610b02565b60405180910390fd5b600080600190505b83518110156104755783818151811061036a576103696109d3565b5b602002602001015191506000801b82036103d75730888281518110610392576103916109d3565b5b60200260200101516040517f2a0c20390000000000000000000000000000000000000000000000000000000081526004016103ce929190610b02565b60405180910390fd5b82821461045f5730886001836103ed9190610b2b565b815181106103fe576103fd6109d3565b5b6020026020010151898381518110610419576104186109d3565b5b60200260200101516040517fdbed4b2700000000000000000000000000000000000000000000000000000000815260040161045693929190610b5f565b60405180910390fd5b819250808061046d90610a65565b91505061034e565b508093505050509392505050565b60008373ffffffffffffffffffffffffffffffffffffffff1663b31825bf8585856040518463ffffffff1660e01b81526004016104c293929190610b96565b602060405180830381865afa1580156104df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105039190610bf9565b90509392505050565b606060005b84518110156105715761053f8582815181106105305761052f6109d3565b5b60200260200101518585610483565b828281518110610552576105516109d3565b5b602002602001018181525050808061056990610a65565b915050610511565b509392505050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6105db82610592565b810181811067ffffffffffffffff821117156105fa576105f96105a3565b5b80604052505050565b600061060d610579565b905061061982826105d2565b919050565b600067ffffffffffffffff821115610639576106386105a3565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061067a8261064f565b9050919050565b61068a8161066f565b811461069557600080fd5b50565b6000813590506106a781610681565b92915050565b60006106c06106bb8461061e565b610603565b905080838252602082019050602084028301858111156106e3576106e261064a565b5b835b8181101561070c57806106f88882610698565b8452602084019350506020810190506106e5565b5050509392505050565b600082601f83011261072b5761072a61058d565b5b813561073b8482602086016106ad565b91505092915050565b6000819050919050565b61075781610744565b811461076257600080fd5b50565b6000813590506107748161074e565b92915050565b6000806000806080858703121561079457610793610583565b5b600085013567ffffffffffffffff8111156107b2576107b1610588565b5b6107be87828801610716565b94505060206107cf87828801610765565b93505060406107e087828801610765565b92505060606107f187828801610765565b91505092959194509250565b6000819050919050565b610810816107fd565b82525050565b600060208201905061082b6000830184610807565b92915050565b60008060006060848603121561084a57610849610583565b5b600084013567ffffffffffffffff81111561086857610867610588565b5b61087486828701610716565b935050602061088586828701610765565b925050604061089686828701610765565b9150509250925092565b6000806000606084860312156108b9576108b8610583565b5b60006108c786828701610698565b93505060206108d886828701610765565b92505060406108e986828701610765565b9150509250925092565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b610928816107fd565b82525050565b600061093a838361091f565b60208301905092915050565b6000602082019050919050565b600061095e826108f3565b61096881856108fe565b93506109738361090f565b8060005b838110156109a457815161098b888261092e565b975061099683610946565b925050600181019050610977565b5085935050505092915050565b600060208201905081810360008301526109cb8184610953565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610a3c82610744565b9150610a4783610744565b9250828201905080821115610a5f57610a5e610a02565b5b92915050565b6000610a7082610744565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610aa257610aa1610a02565b5b600182019050919050565b610ab68161066f565b82525050565b610ac581610744565b82525050565b6000606082019050610ae06000830186610aad565b610aed6020830185610abc565b610afa6040830184610807565b949350505050565b6000604082019050610b176000830185610aad565b610b246020830184610aad565b9392505050565b6000610b3682610744565b9150610b4183610744565b9250828203905081811115610b5957610b58610a02565b5b92915050565b6000606082019050610b746000830186610aad565b610b816020830185610aad565b610b8e6040830184610aad565b949350505050565b6000606082019050610bab6000830186610aad565b610bb86020830185610abc565b610bc56040830184610abc565b949350505050565b610bd6816107fd565b8114610be157600080fd5b50565b600081519050610bf381610bcd565b92915050565b600060208284031215610c0f57610c0e610583565b5b6000610c1d84828501610be4565b9150509291505056fea26469706673582212207d832c09cf02fc4ffcfa4e28eed5e6ebf6b2feb51b095442303cc0545277b42c64736f6c63430008110033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xC5C DUP1 PUSH2 0x20 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 0x4C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7EF79F8C EQ PUSH2 0x51 JUMPI DUP1 PUSH4 0x84DD0D12 EQ PUSH2 0x81 JUMPI DUP1 PUSH4 0xB31825BF EQ PUSH2 0xB1 JUMPI DUP1 PUSH4 0xD56154AB EQ PUSH2 0xE1 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x66 SWAP2 SWAP1 PUSH2 0x77A JUMP JUMPDEST PUSH2 0x111 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x78 SWAP2 SWAP1 PUSH2 0x816 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x9B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x96 SWAP2 SWAP1 PUSH2 0x831 JUMP JUMPDEST PUSH2 0x2B2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA8 SWAP2 SWAP1 PUSH2 0x816 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xCB PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xC6 SWAP2 SWAP1 PUSH2 0x8A0 JUMP JUMPDEST PUSH2 0x483 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xD8 SWAP2 SWAP1 PUSH2 0x816 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xFB PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xF6 SWAP2 SWAP1 PUSH2 0x831 JUMP JUMPDEST PUSH2 0x50C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x108 SWAP2 SWAP1 PUSH2 0x9B1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x11F DUP7 DUP7 DUP7 PUSH2 0x50C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x184 JUMPI PUSH1 0x1 PUSH1 0x0 DUP1 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x145 JUMPI PUSH2 0x144 PUSH2 0x9D3 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x16A SWAP2 SWAP1 PUSH2 0xA31 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP1 DUP1 PUSH2 0x17C SWAP1 PUSH2 0xA65 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x124 JUMP JUMPDEST POP PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 POP JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x1F0 JUMPI PUSH1 0x0 DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1AB JUMPI PUSH2 0x1AA PUSH2 0x9D3 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP DUP4 DUP2 GT ISZERO PUSH2 0x1DB JUMPI DUP1 SWAP4 POP DUP2 SWAP6 POP JUMPDEST POP POP DUP1 DUP1 PUSH2 0x1E8 SWAP1 PUSH2 0xA65 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x18D JUMP JUMPDEST POP PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x25E JUMPI PUSH1 0x0 DUP1 DUP6 DUP4 PUSH1 0x20 DUP2 LT PUSH2 0x213 JUMPI PUSH2 0x212 PUSH2 0x9D3 JUMP JUMPDEST JUMPDEST BYTE PUSH1 0xF8 SHL PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SSTORE DUP1 DUP1 PUSH2 0x256 SWAP1 PUSH2 0xA65 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x1F4 JUMP JUMPDEST POP DUP4 DUP2 LT ISZERO PUSH2 0x2A8 JUMPI ADDRESS DUP2 DUP5 PUSH1 0x40 MLOAD PUSH32 0x22BCB23B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x29F SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xACB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2C0 DUP6 DUP6 DUP6 PUSH2 0x50C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x2D8 JUMPI PUSH2 0x2D7 PUSH2 0x9D3 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP1 SHL DUP2 SUB PUSH2 0x346 JUMPI ADDRESS DUP7 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x301 JUMPI PUSH2 0x300 PUSH2 0x9D3 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH32 0x2A0C203900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x33D SWAP3 SWAP2 SWAP1 PUSH2 0xB02 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 SWAP1 POP JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x475 JUMPI DUP4 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x36A JUMPI PUSH2 0x369 PUSH2 0x9D3 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP2 POP PUSH1 0x0 DUP1 SHL DUP3 SUB PUSH2 0x3D7 JUMPI ADDRESS DUP9 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x392 JUMPI PUSH2 0x391 PUSH2 0x9D3 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH32 0x2A0C203900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3CE SWAP3 SWAP2 SWAP1 PUSH2 0xB02 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 DUP3 EQ PUSH2 0x45F JUMPI ADDRESS DUP9 PUSH1 0x1 DUP4 PUSH2 0x3ED SWAP2 SWAP1 PUSH2 0xB2B JUMP JUMPDEST DUP2 MLOAD DUP2 LT PUSH2 0x3FE JUMPI PUSH2 0x3FD PUSH2 0x9D3 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP10 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x419 JUMPI PUSH2 0x418 PUSH2 0x9D3 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH32 0xDBED4B2700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x456 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xB5F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 SWAP3 POP DUP1 DUP1 PUSH2 0x46D SWAP1 PUSH2 0xA65 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x34E JUMP JUMPDEST POP DUP1 SWAP4 POP POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xB31825BF DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C2 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xB96 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4DF 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 0x503 SWAP2 SWAP1 PUSH2 0xBF9 JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x571 JUMPI PUSH2 0x53F DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x530 JUMPI PUSH2 0x52F PUSH2 0x9D3 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP6 DUP6 PUSH2 0x483 JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x552 JUMPI PUSH2 0x551 PUSH2 0x9D3 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP DUP1 DUP1 PUSH2 0x569 SWAP1 PUSH2 0xA65 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x511 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0x5DB DUP3 PUSH2 0x592 JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x5FA JUMPI PUSH2 0x5F9 PUSH2 0x5A3 JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x60D PUSH2 0x579 JUMP JUMPDEST SWAP1 POP PUSH2 0x619 DUP3 DUP3 PUSH2 0x5D2 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x639 JUMPI PUSH2 0x638 PUSH2 0x5A3 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP3 MUL SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x67A DUP3 PUSH2 0x64F JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x68A DUP2 PUSH2 0x66F JUMP JUMPDEST DUP2 EQ PUSH2 0x695 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x6A7 DUP2 PUSH2 0x681 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6C0 PUSH2 0x6BB DUP5 PUSH2 0x61E JUMP JUMPDEST PUSH2 0x603 JUMP JUMPDEST SWAP1 POP DUP1 DUP4 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0x20 DUP5 MUL DUP4 ADD DUP6 DUP2 GT ISZERO PUSH2 0x6E3 JUMPI PUSH2 0x6E2 PUSH2 0x64A JUMP JUMPDEST JUMPDEST DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x70C JUMPI DUP1 PUSH2 0x6F8 DUP9 DUP3 PUSH2 0x698 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x6E5 JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x72B JUMPI PUSH2 0x72A PUSH2 0x58D JUMP JUMPDEST JUMPDEST DUP2 CALLDATALOAD PUSH2 0x73B DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x6AD JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x757 DUP2 PUSH2 0x744 JUMP JUMPDEST DUP2 EQ PUSH2 0x762 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x774 DUP2 PUSH2 0x74E JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x794 JUMPI PUSH2 0x793 PUSH2 0x583 JUMP JUMPDEST JUMPDEST PUSH1 0x0 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x7B2 JUMPI PUSH2 0x7B1 PUSH2 0x588 JUMP JUMPDEST JUMPDEST PUSH2 0x7BE DUP8 DUP3 DUP9 ADD PUSH2 0x716 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 PUSH2 0x7CF DUP8 DUP3 DUP9 ADD PUSH2 0x765 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 PUSH2 0x7E0 DUP8 DUP3 DUP9 ADD PUSH2 0x765 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 PUSH2 0x7F1 DUP8 DUP3 DUP9 ADD PUSH2 0x765 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x810 DUP2 PUSH2 0x7FD JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x82B PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x807 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x84A JUMPI PUSH2 0x849 PUSH2 0x583 JUMP JUMPDEST JUMPDEST PUSH1 0x0 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x868 JUMPI PUSH2 0x867 PUSH2 0x588 JUMP JUMPDEST JUMPDEST PUSH2 0x874 DUP7 DUP3 DUP8 ADD PUSH2 0x716 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x885 DUP7 DUP3 DUP8 ADD PUSH2 0x765 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x896 DUP7 DUP3 DUP8 ADD PUSH2 0x765 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x8B9 JUMPI PUSH2 0x8B8 PUSH2 0x583 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x8C7 DUP7 DUP3 DUP8 ADD PUSH2 0x698 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x8D8 DUP7 DUP3 DUP8 ADD PUSH2 0x765 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x8E9 DUP7 DUP3 DUP8 ADD PUSH2 0x765 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 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 DUP2 SWAP1 POP PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x928 DUP2 PUSH2 0x7FD JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x93A DUP4 DUP4 PUSH2 0x91F JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x95E DUP3 PUSH2 0x8F3 JUMP JUMPDEST PUSH2 0x968 DUP2 DUP6 PUSH2 0x8FE JUMP JUMPDEST SWAP4 POP PUSH2 0x973 DUP4 PUSH2 0x90F JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x9A4 JUMPI DUP2 MLOAD PUSH2 0x98B DUP9 DUP3 PUSH2 0x92E JUMP JUMPDEST SWAP8 POP PUSH2 0x996 DUP4 PUSH2 0x946 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x977 JUMP JUMPDEST POP DUP6 SWAP4 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x9CB DUP2 DUP5 PUSH2 0x953 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xA3C DUP3 PUSH2 0x744 JUMP JUMPDEST SWAP2 POP PUSH2 0xA47 DUP4 PUSH2 0x744 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 ADD SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0xA5F JUMPI PUSH2 0xA5E PUSH2 0xA02 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA70 DUP3 PUSH2 0x744 JUMP JUMPDEST SWAP2 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 SUB PUSH2 0xAA2 JUMPI PUSH2 0xAA1 PUSH2 0xA02 JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xAB6 DUP2 PUSH2 0x66F JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0xAC5 DUP2 PUSH2 0x744 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0xAE0 PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0xAAD JUMP JUMPDEST PUSH2 0xAED PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0xABC JUMP JUMPDEST PUSH2 0xAFA PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x807 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0xB17 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0xAAD JUMP JUMPDEST PUSH2 0xB24 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0xAAD JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB36 DUP3 PUSH2 0x744 JUMP JUMPDEST SWAP2 POP PUSH2 0xB41 DUP4 PUSH2 0x744 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 SUB SWAP1 POP DUP2 DUP2 GT ISZERO PUSH2 0xB59 JUMPI PUSH2 0xB58 PUSH2 0xA02 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0xB74 PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0xAAD JUMP JUMPDEST PUSH2 0xB81 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0xAAD JUMP JUMPDEST PUSH2 0xB8E PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0xAAD JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0xBAB PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0xAAD JUMP JUMPDEST PUSH2 0xBB8 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0xABC JUMP JUMPDEST PUSH2 0xBC5 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0xABC JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0xBD6 DUP2 PUSH2 0x7FD JUMP JUMPDEST DUP2 EQ PUSH2 0xBE1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0xBF3 DUP2 PUSH2 0xBCD JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xC0F JUMPI PUSH2 0xC0E PUSH2 0x583 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xC1D DUP5 DUP3 DUP6 ADD PUSH2 0xBE4 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH30 0x832C09CF02FC4FFCFA4E28EED5E6EBF6B2FEB51B095442303CC0545277B4 0x2C PUSH5 0x736F6C6343 STOP ADDMOD GT STOP CALLER ",
"sourceMap": "403:4961:0:-:0;;;;;;;;;;;;;;;;;;;"
},
"deployedBytecode": {
"functionDebugData": {
"@getAgreedOnHeader_207": {
"entryPoint": 690,
"id": 207,
"parameterSlots": 3,
"returnSlots": 1
},
"@getHeaderFromOracle_53": {
"entryPoint": 1155,
"id": 53,
"parameterSlots": 3,
"returnSlots": 1
},
"@getHeaderFromThreshold_329": {
"entryPoint": 273,
"id": 329,
"parameterSlots": 4,
"returnSlots": 1
},
"@getHeadersFromOracles_93": {
"entryPoint": 1292,
"id": 93,
"parameterSlots": 3,
"returnSlots": 1
},
"abi_decode_available_length_t_array$_t_address_$dyn_memory_ptr": {
"entryPoint": 1709,
"id": null,
"parameterSlots": 3,
"returnSlots": 1
},
"abi_decode_t_address": {
"entryPoint": 1688,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_t_array$_t_address_$dyn_memory_ptr": {
"entryPoint": 1814,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_t_bytes32_fromMemory": {
"entryPoint": 3044,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_t_uint256": {
"entryPoint": 1893,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_addresst_uint256t_uint256": {
"entryPoint": 2208,
"id": null,
"parameterSlots": 2,
"returnSlots": 3
},
"abi_decode_tuple_t_array$_t_address_$dyn_memory_ptrt_uint256t_uint256": {
"entryPoint": 2097,
"id": null,
"parameterSlots": 2,
"returnSlots": 3
},
"abi_decode_tuple_t_array$_t_address_$dyn_memory_ptrt_uint256t_uint256t_uint256": {
"entryPoint": 1914,
"id": null,
"parameterSlots": 2,
"returnSlots": 4
},
"abi_decode_tuple_t_bytes32_fromMemory": {
"entryPoint": 3065,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encodeUpdatedPos_t_bytes32_to_t_bytes32": {
"entryPoint": 2350,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_t_address_to_t_address_fromStack": {
"entryPoint": 2733,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_t_array$_t_bytes32_$dyn_memory_ptr_to_t_array$_t_bytes32_$dyn_memory_ptr_fromStack": {
"entryPoint": 2387,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_t_bytes32_to_t_bytes32": {
"entryPoint": 2335,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_t_bytes32_to_t_bytes32_fromStack": {
"entryPoint": 2055,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_t_uint256_to_t_uint256_fromStack": {
"entryPoint": 2748,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed": {
"entryPoint": 2818,
"id": null,
"parameterSlots": 3,
"returnSlots": 1
},
"abi_encode_tuple_t_address_t_address_t_address__to_t_address_t_address_t_address__fromStack_reversed": {
"entryPoint": 2911,
"id": null,
"parameterSlots": 4,
"returnSlots": 1
},
"abi_encode_tuple_t_address_t_uint256_t_bytes32__to_t_address_t_uint256_t_bytes32__fromStack_reversed": {
"entryPoint": 2763,
"id": null,
"parameterSlots": 4,
"returnSlots": 1
},
"abi_encode_tuple_t_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed": {
"entryPoint": 2966,
"id": null,
"parameterSlots": 4,
"returnSlots": 1
},
"abi_encode_tuple_t_array$_t_bytes32_$dyn_memory_ptr__to_t_array$_t_bytes32_$dyn_memory_ptr__fromStack_reversed": {
"entryPoint": 2481,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed": {
"entryPoint": 2070,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"allocate_memory": {
"entryPoint": 1539,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"allocate_unbounded": {
"entryPoint": 1401,
"id": null,
"parameterSlots": 0,
"returnSlots": 1
},
"array_allocation_size_t_array$_t_address_$dyn_memory_ptr": {
"entryPoint": 1566,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"array_dataslot_t_array$_t_bytes32_$dyn_memory_ptr": {
"entryPoint": 2319,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"array_length_t_array$_t_bytes32_$dyn_memory_ptr": {
"entryPoint": 2291,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"array_nextElement_t_array$_t_bytes32_$dyn_memory_ptr": {
"entryPoint": 2374,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"array_storeLengthForEncoding_t_array$_t_bytes32_$dyn_memory_ptr_fromStack": {
"entryPoint": 2302,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"checked_add_t_uint256": {
"entryPoint": 2609,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"checked_sub_t_uint256": {
"entryPoint": 2859,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"cleanup_t_address": {
"entryPoint": 1647,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_bytes32": {
"entryPoint": 2045,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_uint160": {
"entryPoint": 1615,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_uint256": {
"entryPoint": 1860,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"finalize_allocation": {
"entryPoint": 1490,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"increment_t_uint256": {
"entryPoint": 2661,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"panic_error_0x11": {
"entryPoint": 2562,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"panic_error_0x32": {
"entryPoint": 2515,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"panic_error_0x41": {
"entryPoint": 1443,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d": {
"entryPoint": 1421,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef": {
"entryPoint": 1610,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db": {
"entryPoint": 1416,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b": {
"entryPoint": 1411,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"round_up_to_mul_of_32": {
"entryPoint": 1426,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"validator_revert_t_address": {
"entryPoint": 1665,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"validator_revert_t_bytes32": {
"entryPoint": 3021,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"validator_revert_t_uint256": {
"entryPoint": 1870,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
}
},
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:12060:2",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "47:35:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "57:19:2",
"value": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "73:2:2",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "67:5:2"
},
"nodeType": "YulFunctionCall",
"src": "67:9:2"
},
"variableNames": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "57:6:2"
}
]
}
]
},
"name": "allocate_unbounded",
"nodeType": "YulFunctionDefinition",
"returnVariables": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "40:6:2",
"type": ""
}
],
"src": "7:75:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "177:28:2",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "194:1:2",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "197:1:2",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "187:6:2"
},
"nodeType": "YulFunctionCall",
"src": "187:12:2"
},
"nodeType": "YulExpressionStatement",
"src": "187:12:2"
}
]
},
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulFunctionDefinition",
"src": "88:117:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "300:28:2",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "317:1:2",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "320:1:2",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "310:6:2"
},
"nodeType": "YulFunctionCall",
"src": "310:12:2"
},
"nodeType": "YulExpressionStatement",
"src": "310:12:2"
}
]
},
"name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db",
"nodeType": "YulFunctionDefinition",
"src": "211:117:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "423:28:2",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "440:1:2",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "443:1:2",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "433:6:2"
},
"nodeType": "YulFunctionCall",
"src": "433:12:2"
},
"nodeType": "YulExpressionStatement",
"src": "433:12:2"
}
]
},
"name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d",
"nodeType": "YulFunctionDefinition",
"src": "334:117:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "505:54:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "515:38:2",
"value": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "533:5:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "540:2:2",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "529:3:2"
},
"nodeType": "YulFunctionCall",
"src": "529:14:2"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "549:2:2",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "545:3:2"
},
"nodeType": "YulFunctionCall",
"src": "545:7:2"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "525:3:2"
},
"nodeType": "YulFunctionCall",
"src": "525:28:2"
},
"variableNames": [
{
"name": "result",
"nodeType": "YulIdentifier",
"src": "515:6:2"
}
]
}
]
},
"name": "round_up_to_mul_of_32",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "488:5:2",
"type": ""
}
],
"returnVariables": [
{
"name": "result",
"nodeType": "YulTypedName",
"src": "498:6:2",
"type": ""
}
],
"src": "457:102:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "593:152:2",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "610:1:2",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "613:77:2",
"type": "",
"value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "603:6:2"
},
"nodeType": "YulFunctionCall",
"src": "603:88:2"
},
"nodeType": "YulExpressionStatement",
"src": "603:88:2"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "707:1:2",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "710:4:2",
"type": "",
"value": "0x41"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "700:6:2"
},
"nodeType": "YulFunctionCall",
"src": "700:15:2"
},
"nodeType": "YulExpressionStatement",
"src": "700:15:2"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "731:1:2",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "734:4:2",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "724:6:2"
},
"nodeType": "YulFunctionCall",
"src": "724:15:2"
},
"nodeType": "YulExpressionStatement",
"src": "724:15:2"
}
]
},
"name": "panic_error_0x41",
"nodeType": "YulFunctionDefinition",
"src": "565:180:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "794:238:2",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "804:58:2",
"value": {
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "826:6:2"
},
{
"arguments": [
{
"name": "size",
"nodeType": "YulIdentifier",
"src": "856:4:2"
}
],
"functionName": {
"name": "round_up_to_mul_of_32",
"nodeType": "YulIdentifier",
"src": "834:21:2"
},
"nodeType": "YulFunctionCall",
"src": "834:27:2"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "822:3:2"
},
"nodeType": "YulFunctionCall",
"src": "822:40:2"
},
"variables": [
{
"name": "newFreePtr",
"nodeType": "YulTypedName",
"src": "808:10:2",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "973:22:2",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x41",
"nodeType": "YulIdentifier",
"src": "975:16:2"
},
"nodeType": "YulFunctionCall",
"src": "975:18:2"
},
"nodeType": "YulExpressionStatement",
"src": "975:18:2"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "newFreePtr",
"nodeType": "YulIdentifier",
"src": "916:10:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "928:18:2",
"type": "",
"value": "0xffffffffffffffff"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "913:2:2"
},
"nodeType": "YulFunctionCall",
"src": "913:34:2"
},
{
"arguments": [
{
"name": "newFreePtr",
"nodeType": "YulIdentifier",
"src": "952:10:2"
},
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "964:6:2"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "949:2:2"
},
"nodeType": "YulFunctionCall",
"src": "949:22:2"
}
],
"functionName": {
"name": "or",
"nodeType": "YulIdentifier",
"src": "910:2:2"
},
"nodeType": "YulFunctionCall",
"src": "910:62:2"
},
"nodeType": "YulIf",
"src": "907:88:2"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1011:2:2",
"type": "",
"value": "64"
},
{
"name": "newFreePtr",
"nodeType": "YulIdentifier",
"src": "1015:10:2"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1004:6:2"
},
"nodeType": "YulFunctionCall",
"src": "1004:22:2"
},
"nodeType": "YulExpressionStatement",
"src": "1004:22:2"
}
]
},
"name": "finalize_allocation",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "780:6:2",
"type": ""
},
{
"name": "size",
"nodeType": "YulTypedName",
"src": "788:4:2",
"type": ""
}
],
"src": "751:281:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1079:88:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1089:30:2",
"value": {
"arguments": [],
"functionName": {
"name": "allocate_unbounded",
"nodeType": "YulIdentifier",
"src": "1099:18:2"
},
"nodeType": "YulFunctionCall",
"src": "1099:20:2"
},
"variableNames": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "1089:6:2"
}
]
},
{
"expression": {
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "1148:6:2"
},
{
"name": "size",
"nodeType": "YulIdentifier",
"src": "1156:4:2"
}
],
"functionName": {
"name": "finalize_allocation",
"nodeType": "YulIdentifier",
"src": "1128:19:2"
},
"nodeType": "YulFunctionCall",
"src": "1128:33:2"
},
"nodeType": "YulExpressionStatement",
"src": "1128:33:2"
}
]
},
"name": "allocate_memory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "size",
"nodeType": "YulTypedName",
"src": "1063:4:2",
"type": ""
}
],
"returnVariables": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "1072:6:2",
"type": ""
}
],
"src": "1038:129:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1255:229:2",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "1360:22:2",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x41",
"nodeType": "YulIdentifier",
"src": "1362:16:2"
},
"nodeType": "YulFunctionCall",
"src": "1362:18:2"
},
"nodeType": "YulExpressionStatement",
"src": "1362:18:2"
}
]
},
"condition": {
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "1332:6:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1340:18:2",
"type": "",
"value": "0xffffffffffffffff"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "1329:2:2"
},
"nodeType": "YulFunctionCall",
"src": "1329:30:2"
},
"nodeType": "YulIf",
"src": "1326:56:2"
},
{
"nodeType": "YulAssignment",
"src": "1392:25:2",
"value": {
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "1404:6:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1412:4:2",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "mul",
"nodeType": "YulIdentifier",
"src": "1400:3:2"
},
"nodeType": "YulFunctionCall",
"src": "1400:17:2"
},
"variableNames": [
{
"name": "size",
"nodeType": "YulIdentifier",
"src": "1392:4:2"
}
]
},
{
"nodeType": "YulAssignment",
"src": "1454:23:2",
"value": {
"arguments": [
{
"name": "size",
"nodeType": "YulIdentifier",
"src": "1466:4:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1472:4:2",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1462:3:2"
},
"nodeType": "YulFunctionCall",
"src": "1462:15:2"
},
"variableNames": [
{
"name": "size",
"nodeType": "YulIdentifier",
"src": "1454:4:2"
}
]
}
]
},
"name": "array_allocation_size_t_array$_t_address_$dyn_memory_ptr",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "1239:6:2",
"type": ""
}
],
"returnVariables": [
{
"name": "size",
"nodeType": "YulTypedName",
"src": "1250:4:2",
"type": ""
}
],
"src": "1173:311:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1579:28:2",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1596:1:2",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1599:1:2",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "1589:6:2"
},
"nodeType": "YulFunctionCall",
"src": "1589:12:2"
},
"nodeType": "YulExpressionStatement",
"src": "1589:12:2"
}
]
},
"name": "revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef",
"nodeType": "YulFunctionDefinition",
"src": "1490:117:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1658:81:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1668:65:2",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1683:5:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1690:42:2",
"type": "",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "1679:3:2"
},
"nodeType": "YulFunctionCall",
"src": "1679:54:2"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "1668:7:2"
}
]
}
]
},
"name": "cleanup_t_uint160",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1640:5:2",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "1650:7:2",
"type": ""
}
],
"src": "1613:126:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1790:51:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1800:35:2",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1829:5:2"
}
],
"functionName": {
"name": "cleanup_t_uint160",
"nodeType": "YulIdentifier",
"src": "1811:17:2"
},
"nodeType": "YulFunctionCall",
"src": "1811:24:2"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "1800:7:2"
}
]
}
]
},
"name": "cleanup_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1772:5:2",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "1782:7:2",
"type": ""
}
],
"src": "1745:96:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1890:79:2",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "1947:16:2",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1956:1:2",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1959:1:2",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "1949:6:2"
},
"nodeType": "YulFunctionCall",
"src": "1949:12:2"
},
"nodeType": "YulExpressionStatement",
"src": "1949:12:2"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1913:5:2"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1938:5:2"
}
],
"functionName": {
"name": "cleanup_t_address",
"nodeType": "YulIdentifier",
"src": "1920:17:2"
},
"nodeType": "YulFunctionCall",
"src": "1920:24:2"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "1910:2:2"
},
"nodeType": "YulFunctionCall",
"src": "1910:35:2"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "1903:6:2"
},
"nodeType": "YulFunctionCall",
"src": "1903:43:2"
},
"nodeType": "YulIf",
"src": "1900:63:2"
}
]
},
"name": "validator_revert_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1883:5:2",
"type": ""
}
],
"src": "1847:122:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2027:87:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2037:29:2",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "2059:6:2"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "2046:12:2"
},
"nodeType": "YulFunctionCall",
"src": "2046:20:2"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "2037:5:2"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "2102:5:2"
}
],
"functionName": {
"name": "validator_revert_t_address",
"nodeType": "YulIdentifier",
"src": "2075:26:2"
},
"nodeType": "YulFunctionCall",
"src": "2075:33:2"
},
"nodeType": "YulExpressionStatement",
"src": "2075:33:2"
}
]
},
"name": "abi_decode_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "2005:6:2",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "2013:3:2",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "2021:5:2",
"type": ""
}
],
"src": "1975:139:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2239:608:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2249:90:2",
"value": {
"arguments": [
{
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "2331:6:2"
}
],
"functionName": {
"name": "array_allocation_size_t_array$_t_address_$dyn_memory_ptr",
"nodeType": "YulIdentifier",
"src": "2274:56:2"
},
"nodeType": "YulFunctionCall",
"src": "2274:64:2"
}
],
"functionName": {
"name": "allocate_memory",
"nodeType": "YulIdentifier",
"src": "2258:15:2"
},
"nodeType": "YulFunctionCall",
"src": "2258:81:2"
},
"variableNames": [
{
"name": "array",
"nodeType": "YulIdentifier",
"src": "2249:5:2"
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "2348:16:2",
"value": {
"name": "array",
"nodeType": "YulIdentifier",
"src": "2359:5:2"
},
"variables": [
{
"name": "dst",
"nodeType": "YulTypedName",
"src": "2352:3:2",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "array",
"nodeType": "YulIdentifier",
"src": "2381:5:2"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "2388:6:2"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "2374:6:2"
},
"nodeType": "YulFunctionCall",
"src": "2374:21:2"
},
"nodeType": "YulExpressionStatement",
"src": "2374:21:2"
},
{
"nodeType": "YulAssignment",
"src": "2404:23:2",
"value": {
"arguments": [
{
"name": "array",
"nodeType": "YulIdentifier",
"src": "2415:5:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2422:4:2",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2411:3:2"
},
"nodeType": "YulFunctionCall",
"src": "2411:16:2"
},
"variableNames": [
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "2404:3:2"
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "2437:44:2",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "2455:6:2"
},
{
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "2467:6:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2475:4:2",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "mul",
"nodeType": "YulIdentifier",
"src": "2463:3:2"
},
"nodeType": "YulFunctionCall",
"src": "2463:17:2"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2451:3:2"
},
"nodeType": "YulFunctionCall",
"src": "2451:30:2"
},
"variables": [
{
"name": "srcEnd",
"nodeType": "YulTypedName",
"src": "2441:6:2",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "2509:103:2",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef",
"nodeType": "YulIdentifier",
"src": "2523:77:2"
},
"nodeType": "YulFunctionCall",
"src": "2523:79:2"
},
"nodeType": "YulExpressionStatement",
"src": "2523:79:2"
}
]
},
"condition": {
"arguments": [
{
"name": "srcEnd",
"nodeType": "YulIdentifier",
"src": "2496:6:2"
},
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "2504:3:2"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "2493:2:2"
},
"nodeType": "YulFunctionCall",
"src": "2493:15:2"
},
"nodeType": "YulIf",
"src": "2490:122:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2697:144:2",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "2712:21:2",
"value": {
"name": "src",
"nodeType": "YulIdentifier",
"src": "2730:3:2"
},
"variables": [
{
"name": "elementPos",
"nodeType": "YulTypedName",
"src": "2716:10:2",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "2754:3:2"
},
{
"arguments": [
{
"name": "elementPos",
"nodeType": "YulIdentifier",
"src": "2780:10:2"
},
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "2792:3:2"
}
],
"functionName": {
"name": "abi_decode_t_address",
"nodeType": "YulIdentifier",
"src": "2759:20:2"
},
"nodeType": "YulFunctionCall",
"src": "2759:37:2"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "2747:6:2"
},
"nodeType": "YulFunctionCall",
"src": "2747:50:2"
},
"nodeType": "YulExpressionStatement",
"src": "2747:50:2"
},
{
"nodeType": "YulAssignment",
"src": "2810:21:2",
"value": {
"arguments": [
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "2821:3:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2826:4:2",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2817:3:2"
},
"nodeType": "YulFunctionCall",
"src": "2817:14:2"
},
"variableNames": [
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "2810:3:2"
}
]
}
]
},
"condition": {
"arguments": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "2650:3:2"
},
{
"name": "srcEnd",
"nodeType": "YulIdentifier",
"src": "2655:6:2"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "2647:2:2"
},
"nodeType": "YulFunctionCall",
"src": "2647:15:2"
},
"nodeType": "YulForLoop",
"post": {
"nodeType": "YulBlock",
"src": "2663:25:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2665:21:2",
"value": {
"arguments": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "2676:3:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2681:4:2",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2672:3:2"
},
"nodeType": "YulFunctionCall",
"src": "2672:14:2"
},
"variableNames": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "2665:3:2"
}
]
}
]
},
"pre": {
"nodeType": "YulBlock",
"src": "2625:21:2",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "2627:17:2",
"value": {
"name": "offset",
"nodeType": "YulIdentifier",
"src": "2638:6:2"
},
"variables": [
{
"name": "src",
"nodeType": "YulTypedName",
"src": "2631:3:2",
"type": ""
}
]
}
]
},
"src": "2621:220:2"
}
]
},
"name": "abi_decode_available_length_t_array$_t_address_$dyn_memory_ptr",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "2209:6:2",
"type": ""
},
{
"name": "length",
"nodeType": "YulTypedName",
"src": "2217:6:2",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "2225:3:2",
"type": ""
}
],
"returnVariables": [
{
"name": "array",
"nodeType": "YulTypedName",
"src": "2233:5:2",
"type": ""
}
],
"src": "2137:710:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2947:293:2",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "2996:83:2",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d",
"nodeType": "YulIdentifier",
"src": "2998:77:2"
},
"nodeType": "YulFunctionCall",
"src": "2998:79:2"
},
"nodeType": "YulExpressionStatement",
"src": "2998:79:2"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "2975:6:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2983:4:2",
"type": "",
"value": "0x1f"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2971:3:2"
},
"nodeType": "YulFunctionCall",
"src": "2971:17:2"
},
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "2990:3:2"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "2967:3:2"
},
"nodeType": "YulFunctionCall",
"src": "2967:27:2"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "2960:6:2"
},
"nodeType": "YulFunctionCall",
"src": "2960:35:2"
},
"nodeType": "YulIf",
"src": "2957:122:2"
},
{
"nodeType": "YulVariableDeclaration",
"src": "3088:34:2",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "3115:6:2"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "3102:12:2"
},
"nodeType": "YulFunctionCall",
"src": "3102:20:2"
},
"variables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "3092:6:2",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "3131:103:2",
"value": {
"arguments": [
{
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "3207:6:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3215:4:2",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3203:3:2"
},
"nodeType": "YulFunctionCall",
"src": "3203:17:2"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "3222:6:2"
},
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "3230:3:2"
}
],
"functionName": {
"name": "abi_decode_available_length_t_array$_t_address_$dyn_memory_ptr",
"nodeType": "YulIdentifier",
"src": "3140:62:2"
},
"nodeType": "YulFunctionCall",
"src": "3140:94:2"
},
"variableNames": [
{
"name": "array",
"nodeType": "YulIdentifier",
"src": "3131:5:2"
}
]
}
]
},
"name": "abi_decode_t_array$_t_address_$dyn_memory_ptr",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "2925:6:2",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "2933:3:2",
"type": ""
}
],
"returnVariables": [
{
"name": "array",
"nodeType": "YulTypedName",
"src": "2941:5:2",
"type": ""
}
],
"src": "2870:370:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3291:32:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "3301:16:2",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "3312:5:2"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "3301:7:2"
}
]
}
]
},
"name": "cleanup_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "3273:5:2",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "3283:7:2",
"type": ""
}
],
"src": "3246:77:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3372:79:2",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "3429:16:2",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3438:1:2",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3441:1:2",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "3431:6:2"
},
"nodeType": "YulFunctionCall",
"src": "3431:12:2"
},
"nodeType": "YulExpressionStatement",
"src": "3431:12:2"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "3395:5:2"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "3420:5:2"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "3402:17:2"
},
"nodeType": "YulFunctionCall",
"src": "3402:24:2"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "3392:2:2"
},
"nodeType": "YulFunctionCall",
"src": "3392:35:2"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "3385:6:2"
},
"nodeType": "YulFunctionCall",
"src": "3385:43:2"
},
"nodeType": "YulIf",
"src": "3382:63:2"
}
]
},
"name": "validator_revert_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "3365:5:2",
"type": ""
}
],
"src": "3329:122:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3509:87:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "3519:29:2",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "3541:6:2"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "3528:12:2"
},
"nodeType": "YulFunctionCall",
"src": "3528:20:2"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "3519:5:2"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "3584:5:2"
}
],
"functionName": {
"name": "validator_revert_t_uint256",
"nodeType": "YulIdentifier",
"src": "3557:26:2"
},
"nodeType": "YulFunctionCall",
"src": "3557:33:2"
},
"nodeType": "YulExpressionStatement",
"src": "3557:33:2"
}
]
},
"name": "abi_decode_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "3487:6:2",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "3495:3:2",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "3503:5:2",
"type": ""
}
],
"src": "3457:139:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3744:833:2",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "3791:83:2",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulIdentifier",
"src": "3793:77:2"
},
"nodeType": "YulFunctionCall",
"src": "3793:79:2"
},
"nodeType": "YulExpressionStatement",
"src": "3793:79:2"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "3765:7:2"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3774:9:2"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "3761:3:2"
},
"nodeType": "YulFunctionCall",
"src": "3761:23:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3786:3:2",
"type": "",
"value": "128"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "3757:3:2"
},
"nodeType": "YulFunctionCall",
"src": "3757:33:2"
},
"nodeType": "YulIf",
"src": "3754:120:2"
},
{
"nodeType": "YulBlock",
"src": "3884:302:2",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "3899:45:2",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3930:9:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3941:1:2",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3926:3:2"
},
"nodeType": "YulFunctionCall",
"src": "3926:17:2"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "3913:12:2"
},
"nodeType": "YulFunctionCall",
"src": "3913:31:2"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "3903:6:2",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "3991:83:2",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db",
"nodeType": "YulIdentifier",
"src": "3993:77:2"
},
"nodeType": "YulFunctionCall",
"src": "3993:79:2"
},
"nodeType": "YulExpressionStatement",
"src": "3993:79:2"
}
]
},
"condition": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "3963:6:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3971:18:2",
"type": "",
"value": "0xffffffffffffffff"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "3960:2:2"
},
"nodeType": "YulFunctionCall",
"src": "3960:30:2"
},
"nodeType": "YulIf",
"src": "3957:117:2"
},
{
"nodeType": "YulAssignment",
"src": "4088:88:2",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4148:9:2"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "4159:6:2"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4144:3:2"
},
"nodeType": "YulFunctionCall",
"src": "4144:22:2"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "4168:7:2"
}
],
"functionName": {
"name": "abi_decode_t_array$_t_address_$dyn_memory_ptr",
"nodeType": "YulIdentifier",
"src": "4098:45:2"
},
"nodeType": "YulFunctionCall",
"src": "4098:78:2"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "4088:6:2"
}
]
}
]
},
{
"nodeType": "YulBlock",
"src": "4196:118:2",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "4211:16:2",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "4225:2:2",
"type": "",
"value": "32"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "4215:6:2",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "4241:63:2",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4276:9:2"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "4287:6:2"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4272:3:2"
},
"nodeType": "YulFunctionCall",
"src": "4272:22:2"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "4296:7:2"
}
],
"functionName": {
"name": "abi_decode_t_uint256",
"nodeType": "YulIdentifier",
"src": "4251:20:2"
},
"nodeType": "YulFunctionCall",
"src": "4251:53:2"
},
"variableNames": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "4241:6:2"
}
]
}
]
},
{
"nodeType": "YulBlock",
"src": "4324:118:2",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "4339:16:2",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "4353:2:2",
"type": "",
"value": "64"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "4343:6:2",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "4369:63:2",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4404:9:2"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "4415:6:2"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4400:3:2"
},
"nodeType": "YulFunctionCall",
"src": "4400:22:2"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "4424:7:2"
}
],
"functionName": {
"name": "abi_decode_t_uint256",
"nodeType": "YulIdentifier",
"src": "4379:20:2"
},
"nodeType": "YulFunctionCall",
"src": "4379:53:2"
},
"variableNames": [
{
"name": "value2",
"nodeType": "YulIdentifier",
"src": "4369:6:2"
}
]
}
]
},
{
"nodeType": "YulBlock",
"src": "4452:118:2",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "4467:16:2",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "4481:2:2",
"type": "",
"value": "96"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "4471:6:2",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "4497:63:2",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4532:9:2"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "4543:6:2"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4528:3:2"
},
"nodeType": "YulFunctionCall",
"src": "4528:22:2"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "4552:7:2"
}
],
"functionName": {
"name": "abi_decode_t_uint256",
"nodeType": "YulIdentifier",
"src": "4507:20:2"
},
"nodeType": "YulFunctionCall",
"src": "4507:53:2"
},
"variableNames": [
{
"name": "value3",
"nodeType": "YulIdentifier",
"src": "4497:6:2"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_array$_t_address_$dyn_memory_ptrt_uint256t_uint256t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "3690:9:2",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "3701:7:2",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "3713:6:2",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "3721:6:2",
"type": ""
},
{
"name": "value2",
"nodeType": "YulTypedName",
"src": "3729:6:2",
"type": ""
},
{
"name": "value3",
"nodeType": "YulTypedName",
"src": "3737:6:2",
"type": ""
}
],
"src": "3602:975:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4628:32:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "4638:16:2",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "4649:5:2"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "4638:7:2"
}
]
}
]
},
"name": "cleanup_t_bytes32",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "4610:5:2",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "4620:7:2",
"type": ""
}
],
"src": "4583:77:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4731:53:2",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "4748:3:2"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "4771:5:2"
}
],
"functionName": {
"name": "cleanup_t_bytes32",
"nodeType": "YulIdentifier",
"src": "4753:17:2"
},
"nodeType": "YulFunctionCall",
"src": "4753:24:2"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "4741:6:2"
},
"nodeType": "YulFunctionCall",
"src": "4741:37:2"
},
"nodeType": "YulExpressionStatement",
"src": "4741:37:2"
}
]
},
"name": "abi_encode_t_bytes32_to_t_bytes32_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "4719:5:2",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "4726:3:2",
"type": ""
}
],
"src": "4666:118:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4888:124:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "4898:26:2",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4910:9:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4921:2:2",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4906:3:2"
},
"nodeType": "YulFunctionCall",
"src": "4906:18:2"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "4898:4:2"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "4978:6:2"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4991:9:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5002:1:2",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4987:3:2"
},
"nodeType": "YulFunctionCall",
"src": "4987:17:2"
}
],
"functionName": {
"name": "abi_encode_t_bytes32_to_t_bytes32_fromStack",
"nodeType": "YulIdentifier",
"src": "4934:43:2"
},
"nodeType": "YulFunctionCall",
"src": "4934:71:2"
},
"nodeType": "YulExpressionStatement",
"src": "4934:71:2"
}
]
},
"name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "4860:9:2",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "4872:6:2",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "4883:4:2",
"type": ""
}
],
"src": "4790:222:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5143:704:2",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "5189:83:2",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulIdentifier",
"src": "5191:77:2"
},
"nodeType": "YulFunctionCall",
"src": "5191:79:2"
},
"nodeType": "YulExpressionStatement",
"src": "5191:79:2"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "5164:7:2"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5173:9:2"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "5160:3:2"
},
"nodeType": "YulFunctionCall",
"src": "5160:23:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5185:2:2",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "5156:3:2"
},
"nodeType": "YulFunctionCall",
"src": "5156:32:2"
},
"nodeType": "YulIf",
"src": "5153:119:2"
},
{
"nodeType": "YulBlock",
"src": "5282:302:2",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "5297:45:2",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5328:9:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5339:1:2",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5324:3:2"
},
"nodeType": "YulFunctionCall",
"src": "5324:17:2"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "5311:12:2"
},
"nodeType": "YulFunctionCall",
"src": "5311:31:2"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "5301:6:2",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "5389:83:2",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db",
"nodeType": "YulIdentifier",
"src": "5391:77:2"
},
"nodeType": "YulFunctionCall",
"src": "5391:79:2"
},
"nodeType": "YulExpressionStatement",
"src": "5391:79:2"
}
]
},
"condition": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "5361:6:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5369:18:2",
"type": "",
"value": "0xffffffffffffffff"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "5358:2:2"
},
"nodeType": "YulFunctionCall",
"src": "5358:30:2"
},
"nodeType": "YulIf",
"src": "5355:117:2"
},
{
"nodeType": "YulAssignment",
"src": "5486:88:2",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5546:9:2"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "5557:6:2"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5542:3:2"
},
"nodeType": "YulFunctionCall",
"src": "5542:22:2"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "5566:7:2"
}
],
"functionName": {
"name": "abi_decode_t_array$_t_address_$dyn_memory_ptr",
"nodeType": "YulIdentifier",
"src": "5496:45:2"
},
"nodeType": "YulFunctionCall",
"src": "5496:78:2"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "5486:6:2"
}
]
}
]
},
{
"nodeType": "YulBlock",
"src": "5594:118:2",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "5609:16:2",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "5623:2:2",
"type": "",
"value": "32"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "5613:6:2",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "5639:63:2",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5674:9:2"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "5685:6:2"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5670:3:2"
},
"nodeType": "YulFunctionCall",
"src": "5670:22:2"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "5694:7:2"
}
],
"functionName": {
"name": "abi_decode_t_uint256",
"nodeType": "YulIdentifier",
"src": "5649:20:2"
},
"nodeType": "YulFunctionCall",
"src": "5649:53:2"
},
"variableNames": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "5639:6:2"
}
]
}
]
},
{
"nodeType": "YulBlock",
"src": "5722:118:2",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "5737:16:2",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "5751:2:2",
"type": "",
"value": "64"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "5741:6:2",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "5767:63:2",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5802:9:2"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "5813:6:2"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5798:3:2"
},
"nodeType": "YulFunctionCall",
"src": "5798:22:2"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "5822:7:2"
}
],
"functionName": {
"name": "abi_decode_t_uint256",
"nodeType": "YulIdentifier",
"src": "5777:20:2"
},
"nodeType": "YulFunctionCall",
"src": "5777:53:2"
},
"variableNames": [
{
"name": "value2",
"nodeType": "YulIdentifier",
"src": "5767:6:2"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_array$_t_address_$dyn_memory_ptrt_uint256t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "5097:9:2",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "5108:7:2",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "5120:6:2",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "5128:6:2",
"type": ""
},
{
"name": "value2",
"nodeType": "YulTypedName",
"src": "5136:6:2",
"type": ""
}
],
"src": "5018:829:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5953:519:2",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "5999:83:2",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulIdentifier",
"src": "6001:77:2"
},
"nodeType": "YulFunctionCall",
"src": "6001:79:2"
},
"nodeType": "YulExpressionStatement",
"src": "6001:79:2"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "5974:7:2"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5983:9:2"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "5970:3:2"
},
"nodeType": "YulFunctionCall",
"src": "5970:23:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5995:2:2",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "5966:3:2"
},
"nodeType": "YulFunctionCall",
"src": "5966:32:2"
},
"nodeType": "YulIf",
"src": "5963:119:2"
},
{
"nodeType": "YulBlock",
"src": "6092:117:2",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "6107:15:2",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "6121:1:2",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "6111:6:2",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "6136:63:2",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "6171:9:2"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "6182:6:2"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6167:3:2"
},
"nodeType": "YulFunctionCall",
"src": "6167:22:2"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "6191:7:2"
}
],
"functionName": {
"name": "abi_decode_t_address",
"nodeType": "YulIdentifier",
"src": "6146:20:2"
},
"nodeType": "YulFunctionCall",
"src": "6146:53:2"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "6136:6:2"
}
]
}
]
},
{
"nodeType": "YulBlock",
"src": "6219:118:2",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "6234:16:2",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "6248:2:2",
"type": "",
"value": "32"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "6238:6:2",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "6264:63:2",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "6299:9:2"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "6310:6:2"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6295:3:2"
},
"nodeType": "YulFunctionCall",
"src": "6295:22:2"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "6319:7:2"
}
],
"functionName": {
"name": "abi_decode_t_uint256",
"nodeType": "YulIdentifier",
"src": "6274:20:2"
},
"nodeType": "YulFunctionCall",
"src": "6274:53:2"
},
"variableNames": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "6264:6:2"
}
]
}
]
},
{
"nodeType": "YulBlock",
"src": "6347:118:2",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "6362:16:2",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "6376:2:2",
"type": "",
"value": "64"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "6366:6:2",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "6392:63:2",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "6427:9:2"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "6438:6:2"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6423:3:2"
},
"nodeType": "YulFunctionCall",
"src": "6423:22:2"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "6447:7:2"
}
],
"functionName": {
"name": "abi_decode_t_uint256",
"nodeType": "YulIdentifier",
"src": "6402:20:2"
},
"nodeType": "YulFunctionCall",
"src": "6402:53:2"
},
"variableNames": [
{
"name": "value2",
"nodeType": "YulIdentifier",
"src": "6392:6:2"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_addresst_uint256t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "5907:9:2",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "5918:7:2",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "5930:6:2",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "5938:6:2",
"type": ""
},
{
"name": "value2",
"nodeType": "YulTypedName",
"src": "5946:6:2",
"type": ""
}
],
"src": "5853:619:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6552:40:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "6563:22:2",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "6579:5:2"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "6573:5:2"
},
"nodeType": "YulFunctionCall",
"src": "6573:12:2"
},
"variableNames": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "6563:6:2"
}
]
}
]
},
"name": "array_length_t_array$_t_bytes32_$dyn_memory_ptr",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "6535:5:2",
"type": ""
}
],
"returnVariables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "6545:6:2",
"type": ""
}
],
"src": "6478:114:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6709:73:2",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "6726:3:2"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "6731:6:2"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "6719:6:2"
},
"nodeType": "YulFunctionCall",
"src": "6719:19:2"
},
"nodeType": "YulExpressionStatement",
"src": "6719:19:2"
},
{
"nodeType": "YulAssignment",
"src": "6747:29:2",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "6766:3:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6771:4:2",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6762:3:2"
},
"nodeType": "YulFunctionCall",
"src": "6762:14:2"
},
"variableNames": [
{
"name": "updated_pos",
"nodeType": "YulIdentifier",
"src": "6747:11:2"
}
]
}
]
},
"name": "array_storeLengthForEncoding_t_array$_t_bytes32_$dyn_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "6681:3:2",
"type": ""
},
{
"name": "length",
"nodeType": "YulTypedName",
"src": "6686:6:2",
"type": ""
}
],
"returnVariables": [
{
"name": "updated_pos",
"nodeType": "YulTypedName",
"src": "6697:11:2",
"type": ""
}
],
"src": "6598:184:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6860:60:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "6870:11:2",
"value": {
"name": "ptr",
"nodeType": "YulIdentifier",
"src": "6878:3:2"
},
"variableNames": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "6870:4:2"
}
]
},
{
"nodeType": "YulAssignment",
"src": "6891:22:2",
"value": {
"arguments": [
{
"name": "ptr",
"nodeType": "YulIdentifier",
"src": "6903:3:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6908:4:2",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6899:3:2"
},
"nodeType": "YulFunctionCall",
"src": "6899:14:2"
},
"variableNames": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "6891:4:2"
}
]
}
]
},
"name": "array_dataslot_t_array$_t_bytes32_$dyn_memory_ptr",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "ptr",
"nodeType": "YulTypedName",
"src": "6847:3:2",
"type": ""
}
],
"returnVariables": [
{
"name": "data",
"nodeType": "YulTypedName",
"src": "6855:4:2",
"type": ""
}
],
"src": "6788:132:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6981:53:2",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "6998:3:2"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "7021:5:2"
}
],
"functionName": {
"name": "cleanup_t_bytes32",
"nodeType": "YulIdentifier",
"src": "7003:17:2"
},
"nodeType": "YulFunctionCall",
"src": "7003:24:2"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "6991:6:2"
},
"nodeType": "YulFunctionCall",
"src": "6991:37:2"
},
"nodeType": "YulExpressionStatement",
"src": "6991:37:2"
}
]
},
"name": "abi_encode_t_bytes32_to_t_bytes32",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "6969:5:2",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "6976:3:2",
"type": ""
}
],
"src": "6926:108:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "7120:99:2",
"statements": [
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "7164:6:2"
},
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "7172:3:2"
}
],
"functionName": {
"name": "abi_encode_t_bytes32_to_t_bytes32",
"nodeType": "YulIdentifier",
"src": "7130:33:2"
},
"nodeType": "YulFunctionCall",
"src": "7130:46:2"
},
"nodeType": "YulExpressionStatement",
"src": "7130:46:2"
},
{
"nodeType": "YulAssignment",
"src": "7185:28:2",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "7203:3:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7208:4:2",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7199:3:2"
},
"nodeType": "YulFunctionCall",
"src": "7199:14:2"
},
"variableNames": [
{
"name": "updatedPos",
"nodeType": "YulIdentifier",
"src": "7185:10:2"
}
]
}
]
},
"name": "abi_encodeUpdatedPos_t_bytes32_to_t_bytes32",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "7093:6:2",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "7101:3:2",
"type": ""
}
],
"returnVariables": [
{
"name": "updatedPos",
"nodeType": "YulTypedName",
"src": "7109:10:2",
"type": ""
}
],
"src": "7040:179:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "7300:38:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "7310:22:2",
"value": {
"arguments": [
{
"name": "ptr",
"nodeType": "YulIdentifier",
"src": "7322:3:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7327:4:2",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7318:3:2"
},
"nodeType": "YulFunctionCall",
"src": "7318:14:2"
},
"variableNames": [
{
"name": "next",
"nodeType": "YulIdentifier",
"src": "7310:4:2"
}
]
}
]
},
"name": "array_nextElement_t_array$_t_bytes32_$dyn_memory_ptr",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "ptr",
"nodeType": "YulTypedName",
"src": "7287:3:2",
"type": ""
}
],
"returnVariables": [
{
"name": "next",
"nodeType": "YulTypedName",
"src": "7295:4:2",
"type": ""
}
],
"src": "7225:113:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "7498:608:2",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "7508:68:2",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "7570:5:2"
}
],
"functionName": {
"name": "array_length_t_array$_t_bytes32_$dyn_memory_ptr",
"nodeType": "YulIdentifier",
"src": "7522:47:2"
},
"nodeType": "YulFunctionCall",
"src": "7522:54:2"
},
"variables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "7512:6:2",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "7585:93:2",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "7666:3:2"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "7671:6:2"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_array$_t_bytes32_$dyn_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "7592:73:2"
},
"nodeType": "YulFunctionCall",
"src": "7592:86:2"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "7585:3:2"
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "7687:71:2",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "7752:5:2"
}
],
"functionName": {
"name": "array_dataslot_t_array$_t_bytes32_$dyn_memory_ptr",
"nodeType": "YulIdentifier",
"src": "7702:49:2"
},
"nodeType": "YulFunctionCall",
"src": "7702:56:2"
},
"variables": [
{
"name": "baseRef",
"nodeType": "YulTypedName",
"src": "7691:7:2",
"type": ""
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "7767:21:2",
"value": {
"name": "baseRef",
"nodeType": "YulIdentifier",
"src": "7781:7:2"
},
"variables": [
{
"name": "srcPtr",
"nodeType": "YulTypedName",
"src": "7771:6:2",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "7857:224:2",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "7871:34:2",
"value": {
"arguments": [
{
"name": "srcPtr",
"nodeType": "YulIdentifier",
"src": "7898:6:2"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "7892:5:2"
},
"nodeType": "YulFunctionCall",
"src": "7892:13:2"
},
"variables": [
{
"name": "elementValue0",
"nodeType": "YulTypedName",
"src": "7875:13:2",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "7918:70:2",
"value": {
"arguments": [
{
"name": "elementValue0",
"nodeType": "YulIdentifier",
"src": "7969:13:2"
},
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "7984:3:2"
}
],
"functionName": {
"name": "abi_encodeUpdatedPos_t_bytes32_to_t_bytes32",
"nodeType": "YulIdentifier",
"src": "7925:43:2"
},
"nodeType": "YulFunctionCall",
"src": "7925:63:2"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "7918:3:2"
}
]
},
{
"nodeType": "YulAssignment",
"src": "8001:70:2",
"value": {
"arguments": [
{
"name": "srcPtr",
"nodeType": "YulIdentifier",
"src": "8064:6:2"
}
],
"functionName": {
"name": "array_nextElement_t_array$_t_bytes32_$dyn_memory_ptr",
"nodeType": "YulIdentifier",
"src": "8011:52:2"
},
"nodeType": "YulFunctionCall",
"src": "8011:60:2"
},
"variableNames": [
{
"name": "srcPtr",
"nodeType": "YulIdentifier",
"src": "8001:6:2"
}
]
}
]
},
"condition": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "7819:1:2"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "7822:6:2"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "7816:2:2"
},
"nodeType": "YulFunctionCall",
"src": "7816:13:2"
},
"nodeType": "YulForLoop",
"post": {
"nodeType": "YulBlock",
"src": "7830:18:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "7832:14:2",
"value": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "7841:1:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7844:1:2",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7837:3:2"
},
"nodeType": "YulFunctionCall",
"src": "7837:9:2"
},
"variableNames": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "7832:1:2"
}
]
}
]
},
"pre": {
"nodeType": "YulBlock",
"src": "7801:14:2",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "7803:10:2",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "7812:1:2",
"type": "",
"value": "0"
},
"variables": [
{
"name": "i",
"nodeType": "YulTypedName",
"src": "7807:1:2",
"type": ""
}
]
}
]
},
"src": "7797:284:2"
},
{
"nodeType": "YulAssignment",
"src": "8090:10:2",
"value": {
"name": "pos",
"nodeType": "YulIdentifier",
"src": "8097:3:2"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "8090:3:2"
}
]
}
]
},
"name": "abi_encode_t_array$_t_bytes32_$dyn_memory_ptr_to_t_array$_t_bytes32_$dyn_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "7477:5:2",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "7484:3:2",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "7493:3:2",
"type": ""
}
],
"src": "7374:732:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "8260:225:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "8270:26:2",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "8282:9:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8293:2:2",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8278:3:2"
},
"nodeType": "YulFunctionCall",
"src": "8278:18:2"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "8270:4:2"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "8317:9:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8328:1:2",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8313:3:2"
},
"nodeType": "YulFunctionCall",
"src": "8313:17:2"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "8336:4:2"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "8342:9:2"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "8332:3:2"
},
"nodeType": "YulFunctionCall",
"src": "8332:20:2"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "8306:6:2"
},
"nodeType": "YulFunctionCall",
"src": "8306:47:2"
},
"nodeType": "YulExpressionStatement",
"src": "8306:47:2"
},
{
"nodeType": "YulAssignment",
"src": "8362:116:2",
"value": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "8464:6:2"
},
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "8473:4:2"
}
],
"functionName": {
"name": "abi_encode_t_array$_t_bytes32_$dyn_memory_ptr_to_t_array$_t_bytes32_$dyn_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "8370:93:2"
},
"nodeType": "YulFunctionCall",
"src": "8370:108:2"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "8362:4:2"
}
]
}
]
},
"name": "abi_encode_tuple_t_array$_t_bytes32_$dyn_memory_ptr__to_t_array$_t_bytes32_$dyn_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "8232:9:2",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "8244:6:2",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "8255:4:2",
"type": ""
}
],
"src": "8112:373:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "8519:152:2",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8536:1:2",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8539:77:2",
"type": "",
"value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "8529:6:2"
},
"nodeType": "YulFunctionCall",
"src": "8529:88:2"
},
"nodeType": "YulExpressionStatement",
"src": "8529:88:2"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8633:1:2",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8636:4:2",
"type": "",
"value": "0x32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "8626:6:2"
},
"nodeType": "YulFunctionCall",
"src": "8626:15:2"
},
"nodeType": "YulExpressionStatement",
"src": "8626:15:2"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8657:1:2",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8660:4:2",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "8650:6:2"
},
"nodeType": "YulFunctionCall",
"src": "8650:15:2"
},
"nodeType": "YulExpressionStatement",
"src": "8650:15:2"
}
]
},
"name": "panic_error_0x32",
"nodeType": "YulFunctionDefinition",
"src": "8491:180:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "8705:152:2",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8722:1:2",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8725:77:2",
"type": "",
"value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "8715:6:2"
},
"nodeType": "YulFunctionCall",
"src": "8715:88:2"
},
"nodeType": "YulExpressionStatement",
"src": "8715:88:2"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8819:1:2",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8822:4:2",
"type": "",
"value": "0x11"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "8812:6:2"
},
"nodeType": "YulFunctionCall",
"src": "8812:15:2"
},
"nodeType": "YulExpressionStatement",
"src": "8812:15:2"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8843:1:2",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8846:4:2",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "8836:6:2"
},
"nodeType": "YulFunctionCall",
"src": "8836:15:2"
},
"nodeType": "YulExpressionStatement",
"src": "8836:15:2"
}
]
},
"name": "panic_error_0x11",
"nodeType": "YulFunctionDefinition",
"src": "8677:180:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "8907:147:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "8917:25:2",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "8940:1:2"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "8922:17:2"
},
"nodeType": "YulFunctionCall",
"src": "8922:20:2"
},
"variableNames": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "8917:1:2"
}
]
},
{
"nodeType": "YulAssignment",
"src": "8951:25:2",
"value": {
"arguments": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "8974:1:2"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "8956:17:2"
},
"nodeType": "YulFunctionCall",
"src": "8956:20:2"
},
"variableNames": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "8951:1:2"
}
]
},
{
"nodeType": "YulAssignment",
"src": "8985:16:2",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "8996:1:2"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "8999:1:2"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8992:3:2"
},
"nodeType": "YulFunctionCall",
"src": "8992:9:2"
},
"variableNames": [
{
"name": "sum",
"nodeType": "YulIdentifier",
"src": "8985:3:2"
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "9025:22:2",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x11",
"nodeType": "YulIdentifier",
"src": "9027:16:2"
},
"nodeType": "YulFunctionCall",
"src": "9027:18:2"
},
"nodeType": "YulExpressionStatement",
"src": "9027:18:2"
}
]
},
"condition": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "9017:1:2"
},
{
"name": "sum",
"nodeType": "YulIdentifier",
"src": "9020:3:2"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "9014:2:2"
},
"nodeType": "YulFunctionCall",
"src": "9014:10:2"
},
"nodeType": "YulIf",
"src": "9011:36:2"
}
]
},
"name": "checked_add_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "x",
"nodeType": "YulTypedName",
"src": "8894:1:2",
"type": ""
},
{
"name": "y",
"nodeType": "YulTypedName",
"src": "8897:1:2",
"type": ""
}
],
"returnVariables": [
{
"name": "sum",
"nodeType": "YulTypedName",
"src": "8903:3:2",
"type": ""
}
],
"src": "8863:191:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "9103:190:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "9113:33:2",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "9140:5:2"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "9122:17:2"
},
"nodeType": "YulFunctionCall",
"src": "9122:24:2"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "9113:5:2"
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "9236:22:2",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x11",
"nodeType": "YulIdentifier",
"src": "9238:16:2"
},
"nodeType": "YulFunctionCall",
"src": "9238:18:2"
},
"nodeType": "YulExpressionStatement",
"src": "9238:18:2"
}
]
},
"condition": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "9161:5:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9168:66:2",
"type": "",
"value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "9158:2:2"
},
"nodeType": "YulFunctionCall",
"src": "9158:77:2"
},
"nodeType": "YulIf",
"src": "9155:103:2"
},
{
"nodeType": "YulAssignment",
"src": "9267:20:2",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "9278:5:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9285:1:2",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "9274:3:2"
},
"nodeType": "YulFunctionCall",
"src": "9274:13:2"
},
"variableNames": [
{
"name": "ret",
"nodeType": "YulIdentifier",
"src": "9267:3:2"
}
]
}
]
},
"name": "increment_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "9089:5:2",
"type": ""
}
],
"returnVariables": [
{
"name": "ret",
"nodeType": "YulTypedName",
"src": "9099:3:2",
"type": ""
}
],
"src": "9060:233:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "9364:53:2",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "9381:3:2"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "9404:5:2"
}
],
"functionName": {
"name": "cleanup_t_address",
"nodeType": "YulIdentifier",
"src": "9386:17:2"
},
"nodeType": "YulFunctionCall",
"src": "9386:24:2"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "9374:6:2"
},
"nodeType": "YulFunctionCall",
"src": "9374:37:2"
},
"nodeType": "YulExpressionStatement",
"src": "9374:37:2"
}
]
},
"name": "abi_encode_t_address_to_t_address_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "9352:5:2",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "9359:3:2",
"type": ""
}
],
"src": "9299:118:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "9488:53:2",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "9505:3:2"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "9528:5:2"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "9510:17:2"
},
"nodeType": "YulFunctionCall",
"src": "9510:24:2"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "9498:6:2"
},
"nodeType": "YulFunctionCall",
"src": "9498:37:2"
},
"nodeType": "YulExpressionStatement",
"src": "9498:37:2"
}
]
},
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "9476:5:2",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "9483:3:2",
"type": ""
}
],
"src": "9423:118:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "9701:288:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "9711:26:2",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "9723:9:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9734:2:2",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "9719:3:2"
},
"nodeType": "YulFunctionCall",
"src": "9719:18:2"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "9711:4:2"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "9791:6:2"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "9804:9:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9815:1:2",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "9800:3:2"
},
"nodeType": "YulFunctionCall",
"src": "9800:17:2"
}
],
"functionName": {
"name": "abi_encode_t_address_to_t_address_fromStack",
"nodeType": "YulIdentifier",
"src": "9747:43:2"
},
"nodeType": "YulFunctionCall",
"src": "9747:71:2"
},
"nodeType": "YulExpressionStatement",
"src": "9747:71:2"
},
{
"expression": {
"arguments": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "9872:6:2"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "9885:9:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9896:2:2",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "9881:3:2"
},
"nodeType": "YulFunctionCall",
"src": "9881:18:2"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulIdentifier",
"src": "9828:43:2"
},
"nodeType": "YulFunctionCall",
"src": "9828:72:2"
},
"nodeType": "YulExpressionStatement",
"src": "9828:72:2"
},
{
"expression": {
"arguments": [
{
"name": "value2",
"nodeType": "YulIdentifier",
"src": "9954:6:2"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "9967:9:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9978:2:2",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "9963:3:2"
},
"nodeType": "YulFunctionCall",
"src": "9963:18:2"
}
],
"functionName": {
"name": "abi_encode_t_bytes32_to_t_bytes32_fromStack",
"nodeType": "YulIdentifier",
"src": "9910:43:2"
},
"nodeType": "YulFunctionCall",
"src": "9910:72:2"
},
"nodeType": "YulExpressionStatement",
"src": "9910:72:2"
}
]
},
"name": "abi_encode_tuple_t_address_t_uint256_t_bytes32__to_t_address_t_uint256_t_bytes32__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "9657:9:2",
"type": ""
},
{
"name": "value2",
"nodeType": "YulTypedName",
"src": "9669:6:2",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "9677:6:2",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "9685:6:2",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "9696:4:2",
"type": ""
}
],
"src": "9547:442:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "10121:206:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "10131:26:2",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "10143:9:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10154:2:2",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "10139:3:2"
},
"nodeType": "YulFunctionCall",
"src": "10139:18:2"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "10131:4:2"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "10211:6:2"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "10224:9:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10235:1:2",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "10220:3:2"
},
"nodeType": "YulFunctionCall",
"src": "10220:17:2"
}
],
"functionName": {
"name": "abi_encode_t_address_to_t_address_fromStack",
"nodeType": "YulIdentifier",
"src": "10167:43:2"
},
"nodeType": "YulFunctionCall",
"src": "10167:71:2"
},
"nodeType": "YulExpressionStatement",
"src": "10167:71:2"
},
{
"expression": {
"arguments": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "10292:6:2"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "10305:9:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10316:2:2",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "10301:3:2"
},
"nodeType": "YulFunctionCall",
"src": "10301:18:2"
}
],
"functionName": {
"name": "abi_encode_t_address_to_t_address_fromStack",
"nodeType": "YulIdentifier",
"src": "10248:43:2"
},
"nodeType": "YulFunctionCall",
"src": "10248:72:2"
},
"nodeType": "YulExpressionStatement",
"src": "10248:72:2"
}
]
},
"name": "abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "10085:9:2",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "10097:6:2",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "10105:6:2",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "10116:4:2",
"type": ""
}
],
"src": "9995:332:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "10378:149:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "10388:25:2",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "10411:1:2"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "10393:17:2"
},
"nodeType": "YulFunctionCall",
"src": "10393:20:2"
},
"variableNames": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "10388:1:2"
}
]
},
{
"nodeType": "YulAssignment",
"src": "10422:25:2",
"value": {
"arguments": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "10445:1:2"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "10427:17:2"
},
"nodeType": "YulFunctionCall",
"src": "10427:20:2"
},
"variableNames": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "10422:1:2"
}
]
},
{
"nodeType": "YulAssignment",
"src": "10456:17:2",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "10468:1:2"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "10471:1:2"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "10464:3:2"
},
"nodeType": "YulFunctionCall",
"src": "10464:9:2"
},
"variableNames": [
{
"name": "diff",
"nodeType": "YulIdentifier",
"src": "10456:4:2"
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "10498:22:2",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x11",
"nodeType": "YulIdentifier",
"src": "10500:16:2"
},
"nodeType": "YulFunctionCall",
"src": "10500:18:2"
},
"nodeType": "YulExpressionStatement",
"src": "10500:18:2"
}
]
},
"condition": {
"arguments": [
{
"name": "diff",
"nodeType": "YulIdentifier",
"src": "10489:4:2"
},
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "10495:1:2"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "10486:2:2"
},
"nodeType": "YulFunctionCall",
"src": "10486:11:2"
},
"nodeType": "YulIf",
"src": "10483:37:2"
}
]
},
"name": "checked_sub_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "x",
"nodeType": "YulTypedName",
"src": "10364:1:2",
"type": ""
},
{
"name": "y",
"nodeType": "YulTypedName",
"src": "10367:1:2",
"type": ""
}
],
"returnVariables": [
{
"name": "diff",
"nodeType": "YulTypedName",
"src": "10373:4:2",
"type": ""
}
],
"src": "10333:194:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "10687:288:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "10697:26:2",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "10709:9:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10720:2:2",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "10705:3:2"
},
"nodeType": "YulFunctionCall",
"src": "10705:18:2"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "10697:4:2"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "10777:6:2"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "10790:9:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10801:1:2",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "10786:3:2"
},
"nodeType": "YulFunctionCall",
"src": "10786:17:2"
}
],
"functionName": {
"name": "abi_encode_t_address_to_t_address_fromStack",
"nodeType": "YulIdentifier",
"src": "10733:43:2"
},
"nodeType": "YulFunctionCall",
"src": "10733:71:2"
},
"nodeType": "YulExpressionStatement",
"src": "10733:71:2"
},
{
"expression": {
"arguments": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "10858:6:2"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "10871:9:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10882:2:2",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "10867:3:2"
},
"nodeType": "YulFunctionCall",
"src": "10867:18:2"
}
],
"functionName": {
"name": "abi_encode_t_address_to_t_address_fromStack",
"nodeType": "YulIdentifier",
"src": "10814:43:2"
},
"nodeType": "YulFunctionCall",
"src": "10814:72:2"
},
"nodeType": "YulExpressionStatement",
"src": "10814:72:2"
},
{
"expression": {
"arguments": [
{
"name": "value2",
"nodeType": "YulIdentifier",
"src": "10940:6:2"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "10953:9:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10964:2:2",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "10949:3:2"
},
"nodeType": "YulFunctionCall",
"src": "10949:18:2"
}
],
"functionName": {
"name": "abi_encode_t_address_to_t_address_fromStack",
"nodeType": "YulIdentifier",
"src": "10896:43:2"
},
"nodeType": "YulFunctionCall",
"src": "10896:72:2"
},
"nodeType": "YulExpressionStatement",
"src": "10896:72:2"
}
]
},
"name": "abi_encode_tuple_t_address_t_address_t_address__to_t_address_t_address_t_address__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "10643:9:2",
"type": ""
},
{
"name": "value2",
"nodeType": "YulTypedName",
"src": "10655:6:2",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "10663:6:2",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "10671:6:2",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "10682:4:2",
"type": ""
}
],
"src": "10533:442:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "11135:288:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "11145:26:2",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "11157:9:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11168:2:2",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "11153:3:2"
},
"nodeType": "YulFunctionCall",
"src": "11153:18:2"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "11145:4:2"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "11225:6:2"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "11238:9:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11249:1:2",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "11234:3:2"
},
"nodeType": "YulFunctionCall",
"src": "11234:17:2"
}
],
"functionName": {
"name": "abi_encode_t_address_to_t_address_fromStack",
"nodeType": "YulIdentifier",
"src": "11181:43:2"
},
"nodeType": "YulFunctionCall",
"src": "11181:71:2"
},
"nodeType": "YulExpressionStatement",
"src": "11181:71:2"
},
{
"expression": {
"arguments": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "11306:6:2"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "11319:9:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11330:2:2",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "11315:3:2"
},
"nodeType": "YulFunctionCall",
"src": "11315:18:2"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulIdentifier",
"src": "11262:43:2"
},
"nodeType": "YulFunctionCall",
"src": "11262:72:2"
},
"nodeType": "YulExpressionStatement",
"src": "11262:72:2"
},
{
"expression": {
"arguments": [
{
"name": "value2",
"nodeType": "YulIdentifier",
"src": "11388:6:2"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "11401:9:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11412:2:2",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "11397:3:2"
},
"nodeType": "YulFunctionCall",
"src": "11397:18:2"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulIdentifier",
"src": "11344:43:2"
},
"nodeType": "YulFunctionCall",
"src": "11344:72:2"
},
"nodeType": "YulExpressionStatement",
"src": "11344:72:2"
}
]
},
"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": "11091:9:2",
"type": ""
},
{
"name": "value2",
"nodeType": "YulTypedName",
"src": "11103:6:2",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "11111:6:2",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "11119:6:2",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "11130:4:2",
"type": ""
}
],
"src": "10981:442:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "11472:79:2",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "11529:16:2",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11538:1:2",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11541:1:2",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "11531:6:2"
},
"nodeType": "YulFunctionCall",
"src": "11531:12:2"
},
"nodeType": "YulExpressionStatement",
"src": "11531:12:2"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "11495:5:2"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "11520:5:2"
}
],
"functionName": {
"name": "cleanup_t_bytes32",
"nodeType": "YulIdentifier",
"src": "11502:17:2"
},
"nodeType": "YulFunctionCall",
"src": "11502:24:2"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "11492:2:2"
},
"nodeType": "YulFunctionCall",
"src": "11492:35:2"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "11485:6:2"
},
"nodeType": "YulFunctionCall",
"src": "11485:43:2"
},
"nodeType": "YulIf",
"src": "11482:63:2"
}
]
},
"name": "validator_revert_t_bytes32",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "11465:5:2",
"type": ""
}
],
"src": "11429:122:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "11620:80:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "11630:22:2",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "11645:6:2"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "11639:5:2"
},
"nodeType": "YulFunctionCall",
"src": "11639:13:2"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "11630:5:2"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "11688:5:2"
}
],
"functionName": {
"name": "validator_revert_t_bytes32",
"nodeType": "YulIdentifier",
"src": "11661:26:2"
},
"nodeType": "YulFunctionCall",
"src": "11661:33:2"
},
"nodeType": "YulExpressionStatement",
"src": "11661:33:2"
}
]
},
"name": "abi_decode_t_bytes32_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "11598:6:2",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "11606:3:2",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "11614:5:2",
"type": ""
}
],
"src": "11557:143:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "11783:274:2",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "11829:83:2",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulIdentifier",
"src": "11831:77:2"
},
"nodeType": "YulFunctionCall",
"src": "11831:79:2"
},
"nodeType": "YulExpressionStatement",
"src": "11831:79:2"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "11804:7:2"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "11813:9:2"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "11800:3:2"
},
"nodeType": "YulFunctionCall",
"src": "11800:23:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11825:2:2",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "11796:3:2"
},
"nodeType": "YulFunctionCall",
"src": "11796:32:2"
},
"nodeType": "YulIf",
"src": "11793:119:2"
},
{
"nodeType": "YulBlock",
"src": "11922:128:2",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "11937:15:2",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "11951:1:2",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "11941:6:2",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "11966:74:2",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "12012:9:2"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "12023:6:2"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "12008:3:2"
},
"nodeType": "YulFunctionCall",
"src": "12008:22:2"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "12032:7:2"
}
],
"functionName": {
"name": "abi_decode_t_bytes32_fromMemory",
"nodeType": "YulIdentifier",
"src": "11976:31:2"
},
"nodeType": "YulFunctionCall",
"src": "11976:64:2"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "11966:6:2"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_bytes32_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "11753:9:2",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "11764:7:2",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "11776:6:2",
"type": ""
}
],
"src": "11706:351:2"
}
]
},
"contents": "{\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() {\n revert(0, 0)\n }\n\n function round_up_to_mul_of_32(value) -> result {\n result := and(add(value, 31), not(31))\n }\n\n function panic_error_0x41() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n\n function finalize_allocation(memPtr, size) {\n let newFreePtr := add(memPtr, round_up_to_mul_of_32(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 allocate_memory(size) -> memPtr {\n memPtr := allocate_unbounded()\n finalize_allocation(memPtr, size)\n }\n\n function array_allocation_size_t_array$_t_address_$dyn_memory_ptr(length) -> size {\n // Make sure we can allocate memory without overflow\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n\n size := mul(length, 0x20)\n\n // add length slot\n size := add(size, 0x20)\n\n }\n\n function revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef() {\n revert(0, 0)\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\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 abi_decode_t_address(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_address(value)\n }\n\n // address[]\n function abi_decode_available_length_t_array$_t_address_$dyn_memory_ptr(offset, length, end) -> array {\n array := allocate_memory(array_allocation_size_t_array$_t_address_$dyn_memory_ptr(length))\n let dst := array\n\n mstore(array, length)\n dst := add(array, 0x20)\n\n let srcEnd := add(offset, mul(length, 0x20))\n if gt(srcEnd, end) {\n revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef()\n }\n for { let src := offset } lt(src, srcEnd) { src := add(src, 0x20) }\n {\n\n let elementPos := src\n\n mstore(dst, abi_decode_t_address(elementPos, end))\n dst := add(dst, 0x20)\n }\n }\n\n // address[]\n function abi_decode_t_array$_t_address_$dyn_memory_ptr(offset, end) -> array {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n let length := calldataload(offset)\n array := abi_decode_available_length_t_array$_t_address_$dyn_memory_ptr(add(offset, 0x20), length, end)\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function validator_revert_t_uint256(value) {\n if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\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_array$_t_address_$dyn_memory_ptrt_uint256t_uint256t_uint256(headStart, dataEnd) -> value0, value1, value2, value3 {\n if slt(sub(dataEnd, headStart), 128) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := calldataload(add(headStart, 0))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value0 := abi_decode_t_array$_t_address_$dyn_memory_ptr(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 let offset := 64\n\n value2 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 96\n\n value3 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_bytes32(value) -> cleaned {\n cleaned := value\n }\n\n function abi_encode_t_bytes32_to_t_bytes32_fromStack(value, pos) {\n mstore(pos, cleanup_t_bytes32(value))\n }\n\n function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_bytes32_to_t_bytes32_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_decode_tuple_t_array$_t_address_$dyn_memory_ptrt_uint256t_uint256(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 96) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := calldataload(add(headStart, 0))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value0 := abi_decode_t_array$_t_address_$dyn_memory_ptr(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 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_uint256t_uint256(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 96) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\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 let offset := 64\n\n value2 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function array_length_t_array$_t_bytes32_$dyn_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_storeLengthForEncoding_t_array$_t_bytes32_$dyn_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function array_dataslot_t_array$_t_bytes32_$dyn_memory_ptr(ptr) -> data {\n data := ptr\n\n data := add(ptr, 0x20)\n\n }\n\n function abi_encode_t_bytes32_to_t_bytes32(value, pos) {\n mstore(pos, cleanup_t_bytes32(value))\n }\n\n function abi_encodeUpdatedPos_t_bytes32_to_t_bytes32(value0, pos) -> updatedPos {\n abi_encode_t_bytes32_to_t_bytes32(value0, pos)\n updatedPos := add(pos, 0x20)\n }\n\n function array_nextElement_t_array$_t_bytes32_$dyn_memory_ptr(ptr) -> next {\n next := add(ptr, 0x20)\n }\n\n // bytes32[] -> bytes32[]\n function abi_encode_t_array$_t_bytes32_$dyn_memory_ptr_to_t_array$_t_bytes32_$dyn_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_array$_t_bytes32_$dyn_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_array$_t_bytes32_$dyn_memory_ptr_fromStack(pos, length)\n let baseRef := array_dataslot_t_array$_t_bytes32_$dyn_memory_ptr(value)\n let srcPtr := baseRef\n for { let i := 0 } lt(i, length) { i := add(i, 1) }\n {\n let elementValue0 := mload(srcPtr)\n pos := abi_encodeUpdatedPos_t_bytes32_to_t_bytes32(elementValue0, pos)\n srcPtr := array_nextElement_t_array$_t_bytes32_$dyn_memory_ptr(srcPtr)\n }\n end := pos\n }\n\n function abi_encode_tuple_t_array$_t_bytes32_$dyn_memory_ptr__to_t_array$_t_bytes32_$dyn_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_array$_t_bytes32_$dyn_memory_ptr_to_t_array$_t_bytes32_$dyn_memory_ptr_fromStack(value0, tail)\n\n }\n\n function panic_error_0x32() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n\n function panic_error_0x11() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n\n function checked_add_t_uint256(x, y) -> sum {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n sum := add(x, y)\n\n if gt(x, sum) { panic_error_0x11() }\n\n }\n\n function increment_t_uint256(value) -> ret {\n value := cleanup_t_uint256(value)\n if eq(value, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) { panic_error_0x11() }\n ret := add(value, 1)\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_uint256_to_t_uint256_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\n }\n\n function abi_encode_tuple_t_address_t_uint256_t_bytes32__to_t_address_t_uint256_t_bytes32__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_bytes32_to_t_bytes32_fromStack(value2, add(headStart, 64))\n\n }\n\n function abi_encode_tuple_t_address_t_address__to_t_address_t_address__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_address_to_t_address_fromStack(value1, add(headStart, 32))\n\n }\n\n function checked_sub_t_uint256(x, y) -> diff {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n diff := sub(x, y)\n\n if gt(diff, x) { panic_error_0x11() }\n\n }\n\n function abi_encode_tuple_t_address_t_address_t_address__to_t_address_t_address_t_address__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_address_to_t_address_fromStack(value2, add(headStart, 64))\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 validator_revert_t_bytes32(value) {\n if iszero(eq(value, cleanup_t_bytes32(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_bytes32_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_bytes32(value)\n }\n\n function abi_decode_tuple_t_bytes32_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes32_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n}\n",
"id": 2,
"language": "Yul",
"name": "#utility.yul"
}
],
"immutableReferences": {},
"linkReferences": {},
"object": "608060405234801561001057600080fd5b506004361061004c5760003560e01c80637ef79f8c1461005157806384dd0d1214610081578063b31825bf146100b1578063d56154ab146100e1575b600080fd5b61006b6004803603810190610066919061077a565b610111565b6040516100789190610816565b60405180910390f35b61009b60048036038101906100969190610831565b6102b2565b6040516100a89190610816565b60405180910390f35b6100cb60048036038101906100c691906108a0565b610483565b6040516100d89190610816565b60405180910390f35b6100fb60048036038101906100f69190610831565b61050c565b60405161010891906109b1565b60405180910390f35b60008061011f86868661050c565b905060005b8151811015610184576001600080848481518110610145576101446109d3565b5b60200260200101518152602001908152602001600020600082825461016a9190610a31565b92505081905550808061017c90610a65565b915050610124565b50600080600090505b82518110156101f05760008382815181106101ab576101aa6109d3565b5b602002602001015190506000806000838152602001908152602001600020549050838111156101db578093508195505b505080806101e890610a65565b91505061018d565b5060005b825181101561025e57600080858360208110610213576102126109d3565b5b1a60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009055808061025690610a65565b9150506101f4565b50838110156102a8573081846040517f22bcb23b00000000000000000000000000000000000000000000000000000000815260040161029f93929190610acb565b60405180910390fd5b5050949350505050565b6000806102c085858561050c565b90506000816000815181106102d8576102d76109d3565b5b602002602001015190506000801b8103610346573086600081518110610301576103006109d3565b5b60200260200101516040517f2a0c203900000000000000000000000000000000000000000000000000000000815260040161033d929190610b02565b60405180910390fd5b600080600190505b83518110156104755783818151811061036a576103696109d3565b5b602002602001015191506000801b82036103d75730888281518110610392576103916109d3565b5b60200260200101516040517f2a0c20390000000000000000000000000000000000000000000000000000000081526004016103ce929190610b02565b60405180910390fd5b82821461045f5730886001836103ed9190610b2b565b815181106103fe576103fd6109d3565b5b6020026020010151898381518110610419576104186109d3565b5b60200260200101516040517fdbed4b2700000000000000000000000000000000000000000000000000000000815260040161045693929190610b5f565b60405180910390fd5b819250808061046d90610a65565b91505061034e565b508093505050509392505050565b60008373ffffffffffffffffffffffffffffffffffffffff1663b31825bf8585856040518463ffffffff1660e01b81526004016104c293929190610b96565b602060405180830381865afa1580156104df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105039190610bf9565b90509392505050565b606060005b84518110156105715761053f8582815181106105305761052f6109d3565b5b60200260200101518585610483565b828281518110610552576105516109d3565b5b602002602001018181525050808061056990610a65565b915050610511565b509392505050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6105db82610592565b810181811067ffffffffffffffff821117156105fa576105f96105a3565b5b80604052505050565b600061060d610579565b905061061982826105d2565b919050565b600067ffffffffffffffff821115610639576106386105a3565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061067a8261064f565b9050919050565b61068a8161066f565b811461069557600080fd5b50565b6000813590506106a781610681565b92915050565b60006106c06106bb8461061e565b610603565b905080838252602082019050602084028301858111156106e3576106e261064a565b5b835b8181101561070c57806106f88882610698565b8452602084019350506020810190506106e5565b5050509392505050565b600082601f83011261072b5761072a61058d565b5b813561073b8482602086016106ad565b91505092915050565b6000819050919050565b61075781610744565b811461076257600080fd5b50565b6000813590506107748161074e565b92915050565b6000806000806080858703121561079457610793610583565b5b600085013567ffffffffffffffff8111156107b2576107b1610588565b5b6107be87828801610716565b94505060206107cf87828801610765565b93505060406107e087828801610765565b92505060606107f187828801610765565b91505092959194509250565b6000819050919050565b610810816107fd565b82525050565b600060208201905061082b6000830184610807565b92915050565b60008060006060848603121561084a57610849610583565b5b600084013567ffffffffffffffff81111561086857610867610588565b5b61087486828701610716565b935050602061088586828701610765565b925050604061089686828701610765565b9150509250925092565b6000806000606084860312156108b9576108b8610583565b5b60006108c786828701610698565b93505060206108d886828701610765565b92505060406108e986828701610765565b9150509250925092565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b610928816107fd565b82525050565b600061093a838361091f565b60208301905092915050565b6000602082019050919050565b600061095e826108f3565b61096881856108fe565b93506109738361090f565b8060005b838110156109a457815161098b888261092e565b975061099683610946565b925050600181019050610977565b5085935050505092915050565b600060208201905081810360008301526109cb8184610953565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610a3c82610744565b9150610a4783610744565b9250828201905080821115610a5f57610a5e610a02565b5b92915050565b6000610a7082610744565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610aa257610aa1610a02565b5b600182019050919050565b610ab68161066f565b82525050565b610ac581610744565b82525050565b6000606082019050610ae06000830186610aad565b610aed6020830185610abc565b610afa6040830184610807565b949350505050565b6000604082019050610b176000830185610aad565b610b246020830184610aad565b9392505050565b6000610b3682610744565b9150610b4183610744565b9250828203905081811115610b5957610b58610a02565b5b92915050565b6000606082019050610b746000830186610aad565b610b816020830185610aad565b610b8e6040830184610aad565b949350505050565b6000606082019050610bab6000830186610aad565b610bb86020830185610abc565b610bc56040830184610abc565b949350505050565b610bd6816107fd565b8114610be157600080fd5b50565b600081519050610bf381610bcd565b92915050565b600060208284031215610c0f57610c0e610583565b5b6000610c1d84828501610be4565b9150509291505056fea26469706673582212207d832c09cf02fc4ffcfa4e28eed5e6ebf6b2feb51b095442303cc0545277b42c64736f6c63430008110033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7EF79F8C EQ PUSH2 0x51 JUMPI DUP1 PUSH4 0x84DD0D12 EQ PUSH2 0x81 JUMPI DUP1 PUSH4 0xB31825BF EQ PUSH2 0xB1 JUMPI DUP1 PUSH4 0xD56154AB EQ PUSH2 0xE1 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x66 SWAP2 SWAP1 PUSH2 0x77A JUMP JUMPDEST PUSH2 0x111 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x78 SWAP2 SWAP1 PUSH2 0x816 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x9B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x96 SWAP2 SWAP1 PUSH2 0x831 JUMP JUMPDEST PUSH2 0x2B2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA8 SWAP2 SWAP1 PUSH2 0x816 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xCB PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xC6 SWAP2 SWAP1 PUSH2 0x8A0 JUMP JUMPDEST PUSH2 0x483 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xD8 SWAP2 SWAP1 PUSH2 0x816 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xFB PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xF6 SWAP2 SWAP1 PUSH2 0x831 JUMP JUMPDEST PUSH2 0x50C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x108 SWAP2 SWAP1 PUSH2 0x9B1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x11F DUP7 DUP7 DUP7 PUSH2 0x50C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x184 JUMPI PUSH1 0x1 PUSH1 0x0 DUP1 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x145 JUMPI PUSH2 0x144 PUSH2 0x9D3 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x16A SWAP2 SWAP1 PUSH2 0xA31 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP1 DUP1 PUSH2 0x17C SWAP1 PUSH2 0xA65 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x124 JUMP JUMPDEST POP PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 POP JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x1F0 JUMPI PUSH1 0x0 DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1AB JUMPI PUSH2 0x1AA PUSH2 0x9D3 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP DUP4 DUP2 GT ISZERO PUSH2 0x1DB JUMPI DUP1 SWAP4 POP DUP2 SWAP6 POP JUMPDEST POP POP DUP1 DUP1 PUSH2 0x1E8 SWAP1 PUSH2 0xA65 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x18D JUMP JUMPDEST POP PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x25E JUMPI PUSH1 0x0 DUP1 DUP6 DUP4 PUSH1 0x20 DUP2 LT PUSH2 0x213 JUMPI PUSH2 0x212 PUSH2 0x9D3 JUMP JUMPDEST JUMPDEST BYTE PUSH1 0xF8 SHL PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SSTORE DUP1 DUP1 PUSH2 0x256 SWAP1 PUSH2 0xA65 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x1F4 JUMP JUMPDEST POP DUP4 DUP2 LT ISZERO PUSH2 0x2A8 JUMPI ADDRESS DUP2 DUP5 PUSH1 0x40 MLOAD PUSH32 0x22BCB23B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x29F SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xACB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2C0 DUP6 DUP6 DUP6 PUSH2 0x50C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x2D8 JUMPI PUSH2 0x2D7 PUSH2 0x9D3 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP1 SHL DUP2 SUB PUSH2 0x346 JUMPI ADDRESS DUP7 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x301 JUMPI PUSH2 0x300 PUSH2 0x9D3 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH32 0x2A0C203900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x33D SWAP3 SWAP2 SWAP1 PUSH2 0xB02 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 SWAP1 POP JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x475 JUMPI DUP4 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x36A JUMPI PUSH2 0x369 PUSH2 0x9D3 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP2 POP PUSH1 0x0 DUP1 SHL DUP3 SUB PUSH2 0x3D7 JUMPI ADDRESS DUP9 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x392 JUMPI PUSH2 0x391 PUSH2 0x9D3 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH32 0x2A0C203900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3CE SWAP3 SWAP2 SWAP1 PUSH2 0xB02 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 DUP3 EQ PUSH2 0x45F JUMPI ADDRESS DUP9 PUSH1 0x1 DUP4 PUSH2 0x3ED SWAP2 SWAP1 PUSH2 0xB2B JUMP JUMPDEST DUP2 MLOAD DUP2 LT PUSH2 0x3FE JUMPI PUSH2 0x3FD PUSH2 0x9D3 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP10 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x419 JUMPI PUSH2 0x418 PUSH2 0x9D3 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH32 0xDBED4B2700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x456 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xB5F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 SWAP3 POP DUP1 DUP1 PUSH2 0x46D SWAP1 PUSH2 0xA65 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x34E JUMP JUMPDEST POP DUP1 SWAP4 POP POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xB31825BF DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C2 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xB96 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4DF 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 0x503 SWAP2 SWAP1 PUSH2 0xBF9 JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x571 JUMPI PUSH2 0x53F DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x530 JUMPI PUSH2 0x52F PUSH2 0x9D3 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP6 DUP6 PUSH2 0x483 JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x552 JUMPI PUSH2 0x551 PUSH2 0x9D3 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP DUP1 DUP1 PUSH2 0x569 SWAP1 PUSH2 0xA65 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x511 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0x5DB DUP3 PUSH2 0x592 JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x5FA JUMPI PUSH2 0x5F9 PUSH2 0x5A3 JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x60D PUSH2 0x579 JUMP JUMPDEST SWAP1 POP PUSH2 0x619 DUP3 DUP3 PUSH2 0x5D2 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x639 JUMPI PUSH2 0x638 PUSH2 0x5A3 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP3 MUL SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x67A DUP3 PUSH2 0x64F JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x68A DUP2 PUSH2 0x66F JUMP JUMPDEST DUP2 EQ PUSH2 0x695 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x6A7 DUP2 PUSH2 0x681 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6C0 PUSH2 0x6BB DUP5 PUSH2 0x61E JUMP JUMPDEST PUSH2 0x603 JUMP JUMPDEST SWAP1 POP DUP1 DUP4 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0x20 DUP5 MUL DUP4 ADD DUP6 DUP2 GT ISZERO PUSH2 0x6E3 JUMPI PUSH2 0x6E2 PUSH2 0x64A JUMP JUMPDEST JUMPDEST DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x70C JUMPI DUP1 PUSH2 0x6F8 DUP9 DUP3 PUSH2 0x698 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x6E5 JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x72B JUMPI PUSH2 0x72A PUSH2 0x58D JUMP JUMPDEST JUMPDEST DUP2 CALLDATALOAD PUSH2 0x73B DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x6AD JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x757 DUP2 PUSH2 0x744 JUMP JUMPDEST DUP2 EQ PUSH2 0x762 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x774 DUP2 PUSH2 0x74E JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x794 JUMPI PUSH2 0x793 PUSH2 0x583 JUMP JUMPDEST JUMPDEST PUSH1 0x0 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x7B2 JUMPI PUSH2 0x7B1 PUSH2 0x588 JUMP JUMPDEST JUMPDEST PUSH2 0x7BE DUP8 DUP3 DUP9 ADD PUSH2 0x716 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 PUSH2 0x7CF DUP8 DUP3 DUP9 ADD PUSH2 0x765 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 PUSH2 0x7E0 DUP8 DUP3 DUP9 ADD PUSH2 0x765 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 PUSH2 0x7F1 DUP8 DUP3 DUP9 ADD PUSH2 0x765 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x810 DUP2 PUSH2 0x7FD JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x82B PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x807 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x84A JUMPI PUSH2 0x849 PUSH2 0x583 JUMP JUMPDEST JUMPDEST PUSH1 0x0 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x868 JUMPI PUSH2 0x867 PUSH2 0x588 JUMP JUMPDEST JUMPDEST PUSH2 0x874 DUP7 DUP3 DUP8 ADD PUSH2 0x716 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x885 DUP7 DUP3 DUP8 ADD PUSH2 0x765 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x896 DUP7 DUP3 DUP8 ADD PUSH2 0x765 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x8B9 JUMPI PUSH2 0x8B8 PUSH2 0x583 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x8C7 DUP7 DUP3 DUP8 ADD PUSH2 0x698 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x8D8 DUP7 DUP3 DUP8 ADD PUSH2 0x765 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x8E9 DUP7 DUP3 DUP8 ADD PUSH2 0x765 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 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 DUP2 SWAP1 POP PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x928 DUP2 PUSH2 0x7FD JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x93A DUP4 DUP4 PUSH2 0x91F JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x95E DUP3 PUSH2 0x8F3 JUMP JUMPDEST PUSH2 0x968 DUP2 DUP6 PUSH2 0x8FE JUMP JUMPDEST SWAP4 POP PUSH2 0x973 DUP4 PUSH2 0x90F JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x9A4 JUMPI DUP2 MLOAD PUSH2 0x98B DUP9 DUP3 PUSH2 0x92E JUMP JUMPDEST SWAP8 POP PUSH2 0x996 DUP4 PUSH2 0x946 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x977 JUMP JUMPDEST POP DUP6 SWAP4 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x9CB DUP2 DUP5 PUSH2 0x953 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xA3C DUP3 PUSH2 0x744 JUMP JUMPDEST SWAP2 POP PUSH2 0xA47 DUP4 PUSH2 0x744 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 ADD SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0xA5F JUMPI PUSH2 0xA5E PUSH2 0xA02 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA70 DUP3 PUSH2 0x744 JUMP JUMPDEST SWAP2 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 SUB PUSH2 0xAA2 JUMPI PUSH2 0xAA1 PUSH2 0xA02 JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xAB6 DUP2 PUSH2 0x66F JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0xAC5 DUP2 PUSH2 0x744 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0xAE0 PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0xAAD JUMP JUMPDEST PUSH2 0xAED PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0xABC JUMP JUMPDEST PUSH2 0xAFA PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x807 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0xB17 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0xAAD JUMP JUMPDEST PUSH2 0xB24 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0xAAD JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB36 DUP3 PUSH2 0x744 JUMP JUMPDEST SWAP2 POP PUSH2 0xB41 DUP4 PUSH2 0x744 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 SUB SWAP1 POP DUP2 DUP2 GT ISZERO PUSH2 0xB59 JUMPI PUSH2 0xB58 PUSH2 0xA02 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0xB74 PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0xAAD JUMP JUMPDEST PUSH2 0xB81 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0xAAD JUMP JUMPDEST PUSH2 0xB8E PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0xAAD JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0xBAB PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0xAAD JUMP JUMPDEST PUSH2 0xBB8 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0xABC JUMP JUMPDEST PUSH2 0xBC5 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0xABC JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0xBD6 DUP2 PUSH2 0x7FD JUMP JUMPDEST DUP2 EQ PUSH2 0xBE1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0xBF3 DUP2 PUSH2 0xBCD JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xC0F JUMPI PUSH2 0xC0E PUSH2 0x583 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xC1D DUP5 DUP3 DUP6 ADD PUSH2 0xBE4 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH30 0x832C09CF02FC4FFCFA4E28EED5E6EBF6B2FEB51B095442303CC0545277B4 0x2C PUSH5 0x736F6C6343 STOP ADDMOD GT STOP CALLER ",
"sourceMap": "403:4961:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4368:994;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2783:890;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1102:277;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1953:353;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4368:994;4542:19;4573:29;4605:59;4627:14;4643:7;4652:11;4605:21;:59::i;:::-;4573:91;;4679:9;4674:103;4698:12;:19;4694:1;:23;4674:103;;;4765:1;4738:6;:23;4745:12;4758:1;4745:15;;;;;;;;:::i;:::-;;;;;;;;4738:23;;;;;;;;;;;;:28;;;;;;;:::i;:::-;;;;;;;;4719:3;;;;;:::i;:::-;;;;4674:103;;;;4786:20;4821:9;4833:1;4821:13;;4816:323;4840:12;:19;4836:1;:23;4816:323;;;4880:21;4904:12;4917:1;4904:15;;;;;;;;:::i;:::-;;;;;;;;4880:39;;4933:20;4956:6;:21;4963:13;4956:21;;;;;;;;;;;;4933:44;;5010:12;4995;:27;4991:138;;;5057:12;5042:27;;5101:13;5087:27;;4991:138;4866:273;;4861:3;;;;;:::i;:::-;;;;4816:323;;;;5153:9;5148:104;5172:12;:19;5168:1;:23;5148:104;;;5219:6;:22;5226:11;5238:1;5226:14;;;;;;;:::i;:::-;;;;;5219:22;;;;;;;;;;;;;;5212:29;;;5193:3;;;;;:::i;:::-;;;;5148:104;;;;5280:9;5265:12;:24;5261:94;;;5322:4;5329:12;5343:11;5298:57;;;;;;;;;;;;;:::i;:::-;;;;;;;;5261:94;4563:799;;4368:994;;;;;;:::o;2783:890::-;2930:19;2961:29;2993:59;3015:14;3031:7;3040:11;2993:21;:59::i;:::-;2961:91;;3062:22;3087:12;3100:1;3087:15;;;;;;;;:::i;:::-;;;;;;;;3062:40;;3142:1;3134:10;;3116:14;:28;3112:93;;3180:4;3187:14;3202:1;3187:17;;;;;;;;:::i;:::-;;;;;;;;3153:52;;;;;;;;;;;;:::i;:::-;;;;;;;;3112:93;3215:21;3251:9;3263:1;3251:13;;3246:384;3270:12;:19;3266:1;:23;3246:384;;;3326:12;3339:1;3326:15;;;;;;;;:::i;:::-;;;;;;;;3310:31;;3384:1;3376:10;;3359:13;:27;3355:92;;3422:4;3429:14;3444:1;3429:17;;;;;;;;:::i;:::-;;;;;;;;3395:52;;;;;;;;;;;;:::i;:::-;;;;;;;;3355:92;3482:14;3465:13;:31;3461:114;;3529:4;3536:14;3553:1;3551;:3;;;;:::i;:::-;3536:19;;;;;;;;:::i;:::-;;;;;;;;3557:14;3572:1;3557:17;;;;;;;;:::i;:::-;;;;;;;;3505:70;;;;;;;;;;;;;:::i;:::-;;;;;;;;3461:114;3606:13;3589:30;;3291:3;;;;;:::i;:::-;;;;3246:384;;;;3653:13;3639:27;;2951:722;;;2783:890;;;;;:::o;1102:277::-;1241:19;1301:13;1286:49;;;1336:13;1351:7;1360:11;1286:86;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1272:100;;1102:277;;;;;:::o;1953:353::-;2104:29;2150:9;2145:155;2169:14;:21;2165:1;:25;2145:155;;;2229:60;2249:14;2264:1;2249:17;;;;;;;;:::i;:::-;;;;;;;;2268:7;2277:11;2229:19;:60::i;:::-;2211:12;2224:1;2211:15;;;;;;;;:::i;:::-;;;;;;;:78;;;;;2192:3;;;;;:::i;:::-;;;;2145:155;;;;1953:353;;;;;:::o;7:75:2:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:117;443:1;440;433:12;457:102;498:6;549:2;545:7;540:2;533:5;529:14;525:28;515:38;;457:102;;;:::o;565:180::-;613:77;610:1;603:88;710:4;707:1;700:15;734:4;731:1;724:15;751:281;834:27;856:4;834:27;:::i;:::-;826:6;822:40;964:6;952:10;949:22;928:18;916:10;913:34;910:62;907:88;;;975:18;;:::i;:::-;907:88;1015:10;1011:2;1004:22;794:238;751:281;;:::o;1038:129::-;1072:6;1099:20;;:::i;:::-;1089:30;;1128:33;1156:4;1148:6;1128:33;:::i;:::-;1038:129;;;:::o;1173:311::-;1250:4;1340:18;1332:6;1329:30;1326:56;;;1362:18;;:::i;:::-;1326:56;1412:4;1404:6;1400:17;1392:25;;1472:4;1466;1462:15;1454:23;;1173:311;;;:::o;1490:117::-;1599:1;1596;1589:12;1613:126;1650:7;1690:42;1683:5;1679:54;1668:65;;1613:126;;;:::o;1745:96::-;1782:7;1811:24;1829:5;1811:24;:::i;:::-;1800:35;;1745:96;;;:::o;1847:122::-;1920:24;1938:5;1920:24;:::i;:::-;1913:5;1910:35;1900:63;;1959:1;1956;1949:12;1900:63;1847:122;:::o;1975:139::-;2021:5;2059:6;2046:20;2037:29;;2075:33;2102:5;2075:33;:::i;:::-;1975:139;;;;:::o;2137:710::-;2233:5;2258:81;2274:64;2331:6;2274:64;:::i;:::-;2258:81;:::i;:::-;2249:90;;2359:5;2388:6;2381:5;2374:21;2422:4;2415:5;2411:16;2404:23;;2475:4;2467:6;2463:17;2455:6;2451:30;2504:3;2496:6;2493:15;2490:122;;;2523:79;;:::i;:::-;2490:122;2638:6;2621:220;2655:6;2650:3;2647:15;2621:220;;;2730:3;2759:37;2792:3;2780:10;2759:37;:::i;:::-;2754:3;2747:50;2826:4;2821:3;2817:14;2810:21;;2697:144;2681:4;2676:3;2672:14;2665:21;;2621:220;;;2625:21;2239:608;;2137:710;;;;;:::o;2870:370::-;2941:5;2990:3;2983:4;2975:6;2971:17;2967:27;2957:122;;2998:79;;:::i;:::-;2957:122;3115:6;3102:20;3140:94;3230:3;3222:6;3215:4;3207:6;3203:17;3140:94;:::i;:::-;3131:103;;2947:293;2870:370;;;;:::o;3246:77::-;3283:7;3312:5;3301:16;;3246:77;;;:::o;3329:122::-;3402:24;3420:5;3402:24;:::i;:::-;3395:5;3392:35;3382:63;;3441:1;3438;3431:12;3382:63;3329:122;:::o;3457:139::-;3503:5;3541:6;3528:20;3519:29;;3557:33;3584:5;3557:33;:::i;:::-;3457:139;;;;:::o;3602:975::-;3713:6;3721;3729;3737;3786:3;3774:9;3765:7;3761:23;3757:33;3754:120;;;3793:79;;:::i;:::-;3754:120;3941:1;3930:9;3926:17;3913:31;3971:18;3963:6;3960:30;3957:117;;;3993:79;;:::i;:::-;3957:117;4098:78;4168:7;4159:6;4148:9;4144:22;4098:78;:::i;:::-;4088:88;;3884:302;4225:2;4251:53;4296:7;4287:6;4276:9;4272:22;4251:53;:::i;:::-;4241:63;;4196:118;4353:2;4379:53;4424:7;4415:6;4404:9;4400:22;4379:53;:::i;:::-;4369:63;;4324:118;4481:2;4507:53;4552:7;4543:6;4532:9;4528:22;4507:53;:::i;:::-;4497:63;;4452:118;3602:975;;;;;;;:::o;4583:77::-;4620:7;4649:5;4638:16;;4583:77;;;:::o;4666:118::-;4753:24;4771:5;4753:24;:::i;:::-;4748:3;4741:37;4666:118;;:::o;4790:222::-;4883:4;4921:2;4910:9;4906:18;4898:26;;4934:71;5002:1;4991:9;4987:17;4978:6;4934:71;:::i;:::-;4790:222;;;;:::o;5018:829::-;5120:6;5128;5136;5185:2;5173:9;5164:7;5160:23;5156:32;5153:119;;;5191:79;;:::i;:::-;5153:119;5339:1;5328:9;5324:17;5311:31;5369:18;5361:6;5358:30;5355:117;;;5391:79;;:::i;:::-;5355:117;5496:78;5566:7;5557:6;5546:9;5542:22;5496:78;:::i;:::-;5486:88;;5282:302;5623:2;5649:53;5694:7;5685:6;5674:9;5670:22;5649:53;:::i;:::-;5639:63;;5594:118;5751:2;5777:53;5822:7;5813:6;5802:9;5798:22;5777:53;:::i;:::-;5767:63;;5722:118;5018:829;;;;;:::o;5853:619::-;5930:6;5938;5946;5995:2;5983:9;5974:7;5970:23;5966:32;5963:119;;;6001:79;;:::i;:::-;5963:119;6121:1;6146:53;6191:7;6182:6;6171:9;6167:22;6146:53;:::i;:::-;6136:63;;6092:117;6248:2;6274:53;6319:7;6310:6;6299:9;6295:22;6274:53;:::i;:::-;6264:63;;6219:118;6376:2;6402:53;6447:7;6438:6;6427:9;6423:22;6402:53;:::i;:::-;6392:63;;6347:118;5853:619;;;;;:::o;6478:114::-;6545:6;6579:5;6573:12;6563:22;;6478:114;;;:::o;6598:184::-;6697:11;6731:6;6726:3;6719:19;6771:4;6766:3;6762:14;6747:29;;6598:184;;;;:::o;6788:132::-;6855:4;6878:3;6870:11;;6908:4;6903:3;6899:14;6891:22;;6788:132;;;:::o;6926:108::-;7003:24;7021:5;7003:24;:::i;:::-;6998:3;6991:37;6926:108;;:::o;7040:179::-;7109:10;7130:46;7172:3;7164:6;7130:46;:::i;:::-;7208:4;7203:3;7199:14;7185:28;;7040:179;;;;:::o;7225:113::-;7295:4;7327;7322:3;7318:14;7310:22;;7225:113;;;:::o;7374:732::-;7493:3;7522:54;7570:5;7522:54;:::i;:::-;7592:86;7671:6;7666:3;7592:86;:::i;:::-;7585:93;;7702:56;7752:5;7702:56;:::i;:::-;7781:7;7812:1;7797:284;7822:6;7819:1;7816:13;7797:284;;;7898:6;7892:13;7925:63;7984:3;7969:13;7925:63;:::i;:::-;7918:70;;8011:60;8064:6;8011:60;:::i;:::-;8001:70;;7857:224;7844:1;7841;7837:9;7832:14;;7797:284;;;7801:14;8097:3;8090:10;;7498:608;;;7374:732;;;;:::o;8112:373::-;8255:4;8293:2;8282:9;8278:18;8270:26;;8342:9;8336:4;8332:20;8328:1;8317:9;8313:17;8306:47;8370:108;8473:4;8464:6;8370:108;:::i;:::-;8362:116;;8112:373;;;;:::o;8491:180::-;8539:77;8536:1;8529:88;8636:4;8633:1;8626:15;8660:4;8657:1;8650:15;8677:180;8725:77;8722:1;8715:88;8822:4;8819:1;8812:15;8846:4;8843:1;8836:15;8863:191;8903:3;8922:20;8940:1;8922:20;:::i;:::-;8917:25;;8956:20;8974:1;8956:20;:::i;:::-;8951:25;;8999:1;8996;8992:9;8985:16;;9020:3;9017:1;9014:10;9011:36;;;9027:18;;:::i;:::-;9011:36;8863:191;;;;:::o;9060:233::-;9099:3;9122:24;9140:5;9122:24;:::i;:::-;9113:33;;9168:66;9161:5;9158:77;9155:103;;9238:18;;:::i;:::-;9155:103;9285:1;9278:5;9274:13;9267:20;;9060:233;;;:::o;9299:118::-;9386:24;9404:5;9386:24;:::i;:::-;9381:3;9374:37;9299:118;;:::o;9423:::-;9510:24;9528:5;9510:24;:::i;:::-;9505:3;9498:37;9423:118;;:::o;9547:442::-;9696:4;9734:2;9723:9;9719:18;9711:26;;9747:71;9815:1;9804:9;9800:17;9791:6;9747:71;:::i;:::-;9828:72;9896:2;9885:9;9881:18;9872:6;9828:72;:::i;:::-;9910;9978:2;9967:9;9963:18;9954:6;9910:72;:::i;:::-;9547:442;;;;;;:::o;9995:332::-;10116:4;10154:2;10143:9;10139:18;10131:26;;10167:71;10235:1;10224:9;10220:17;10211:6;10167:71;:::i;:::-;10248:72;10316:2;10305:9;10301:18;10292:6;10248:72;:::i;:::-;9995:332;;;;;:::o;10333:194::-;10373:4;10393:20;10411:1;10393:20;:::i;:::-;10388:25;;10427:20;10445:1;10427:20;:::i;:::-;10422:25;;10471:1;10468;10464:9;10456:17;;10495:1;10489:4;10486:11;10483:37;;;10500:18;;:::i;:::-;10483:37;10333:194;;;;:::o;10533:442::-;10682:4;10720:2;10709:9;10705:18;10697:26;;10733:71;10801:1;10790:9;10786:17;10777:6;10733:71;:::i;:::-;10814:72;10882:2;10871:9;10867:18;10858:6;10814:72;:::i;:::-;10896;10964:2;10953:9;10949:18;10940:6;10896:72;:::i;:::-;10533:442;;;;;;:::o;10981:::-;11130:4;11168:2;11157:9;11153:18;11145:26;;11181:71;11249:1;11238:9;11234:17;11225:6;11181:71;:::i;:::-;11262:72;11330:2;11319:9;11315:18;11306:6;11262:72;:::i;:::-;11344;11412:2;11401:9;11397:18;11388:6;11344:72;:::i;:::-;10981:442;;;;;;:::o;11429:122::-;11502:24;11520:5;11502:24;:::i;:::-;11495:5;11492:35;11482:63;;11541:1;11538;11531:12;11482:63;11429:122;:::o;11557:143::-;11614:5;11645:6;11639:13;11630:22;;11661:33;11688:5;11661:33;:::i;:::-;11557:143;;;;:::o;11706:351::-;11776:6;11825:2;11813:9;11804:7;11800:23;11796:32;11793:119;;;11831:79;;:::i;:::-;11793:119;11951:1;11976:64;12032:7;12023:6;12012:9;12008:22;11976:64;:::i;:::-;11966:74;;11922:128;11706:351;;;;:::o"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "632800",
"executionCost": "664",
"totalCost": "633464"
},
"external": {
"getAgreedOnHeader(address[],uint256,uint256)": "infinite",
"getHeaderFromOracle(address,uint256,uint256)": "infinite",
"getHeaderFromThreshold(address[],uint256,uint256,uint256)": "infinite",
"getHeadersFromOracles(address[],uint256,uint256)": "infinite"
}
},
"legacyAssembly": {
".code": [
{
"begin": 403,
"end": 5364,
"name": "PUSH",
"source": 0,
"value": "80"
},
{
"begin": 403,
"end": 5364,
"name": "PUSH",
"source": 0,
"value": "40"
},
{
"begin": 403,
"end": 5364,
"name": "MSTORE",
"source": 0
},
{
"begin": 403,
"end": 5364,
"name": "CALLVALUE",
"source": 0
},
{
"begin": 403,
"end": 5364,
"name": "DUP1",
"source": 0
},
{
"begin": 403,
"end": 5364,
"name": "ISZERO",
"source": 0
},
{
"begin": 403,
"end": 5364,
"name": "PUSH [tag]",
"source": 0,
"value": "1"
},
{
"begin": 403,
"end": 5364,
"name": "JUMPI",
"source": 0
},
{
"begin": 403,
"end": 5364,
"name": "PUSH",
"source": 0,
"value": "0"
},
{
"begin": 403,
"end": 5364,
"name": "DUP1",
"source": 0
},
{
"begin": 403,
"end": 5364,
"name": "REVERT",
"source": 0
},
{
"begin": 403,
"end": 5364,
"name": "tag",
"source": 0,
"value": "1"
},
{
"begin": 403,
"end": 5364,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 403,
"end": 5364,
"name": "POP",
"source": 0
},
{
"begin": 403,
"end": 5364,
"name": "PUSH #[$]",
"source": 0,
"value": "0000000000000000000000000000000000000000000000000000000000000000"
},
{
"begin": 403,
"end": 5364,
"name": "DUP1",
"source": 0
},
{
"begin": 403,
"end": 5364,
"name": "PUSH [$]",
"source": 0,
"value": "0000000000000000000000000000000000000000000000000000000000000000"
},
{
"begin": 403,
"end": 5364,
"name": "PUSH",
"source": 0,
"value": "0"
},
{
"begin": 403,
"end": 5364,
"name": "CODECOPY",
"source": 0
},
{
"begin": 403,
"end": 5364,
"name": "PUSH",
"source": 0,
"value": "0"
},
{
"begin": 403,
"end": 5364,
"name": "RETURN",
"source": 0
}
],
".data": {
"0": {
".auxdata": "a26469706673582212207d832c09cf02fc4ffcfa4e28eed5e6ebf6b2feb51b095442303cc0545277b42c64736f6c63430008110033",
".code": [
{
"begin": 403,
"end": 5364,
"name": "PUSH",
"source": 0,
"value": "80"
},
{
"begin": 403,
"end": 5364,
"name": "PUSH",
"source": 0,
"value": "40"
},
{
"begin": 403,
"end": 5364,
"name": "MSTORE",
"source": 0
},
{
"begin": 403,
"end": 5364,
"name": "CALLVALUE",
"source": 0
},
{
"begin": 403,
"end": 5364,
"name": "DUP1",
"source": 0
},
{
"begin": 403,
"end": 5364,
"name": "ISZERO",
"source": 0
},
{
"begin": 403,
"end": 5364,
"name": "PUSH [tag]",
"source": 0,
"value": "1"
},
{
"begin": 403,
"end": 5364,
"name": "JUMPI",
"source": 0
},
{
"begin": 403,
"end": 5364,
"name": "PUSH",
"source": 0,
"value": "0"
},
{
"begin": 403,
"end": 5364,
"name": "DUP1",
"source": 0
},
{
"begin": 403,
"end": 5364,
"name": "REVERT",
"source": 0
},
{
"begin": 403,
"end": 5364,
"name": "tag",
"source": 0,
"value": "1"
},
{
"begin": 403,
"end": 5364,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 403,
"end": 5364,
"name": "POP",
"source": 0
},
{
"begin": 403,
"end": 5364,
"name": "PUSH",
"source": 0,
"value": "4"
},
{
"begin": 403,
"end": 5364,
"name": "CALLDATASIZE",
"source": 0
},
{
"begin": 403,
"end": 5364,
"name": "LT",
"source": 0
},
{
"begin": 403,
"end": 5364,
"name": "PUSH [tag]",
"source": 0,
"value": "2"
},
{
"begin": 403,
"end": 5364,
"name": "JUMPI",
"source": 0
},
{
"begin": 403,
"end": 5364,
"name": "PUSH",
"source": 0,
"value": "0"
},
{
"begin": 403,
"end": 5364,
"name": "CALLDATALOAD",
"source": 0
},
{
"begin": 403,
"end": 5364,
"name": "PUSH",
"source": 0,
"value": "E0"
},
{
"begin": 403,
"end": 5364,
"name": "SHR",
"source": 0
},
{
"begin": 403,
"end": 5364,
"name": "DUP1",
"source": 0
},
{
"begin": 403,
"end": 5364,
"name": "PUSH",
"source": 0,
"value": "7EF79F8C"
},
{
"begin": 403,
"end": 5364,
"name": "EQ",
"source": 0
},
{
"begin": 403,
"end": 5364,
"name": "PUSH [tag]",
"source": 0,
"value": "3"
},
{
"begin": 403,
"end": 5364,
"name": "JUMPI",
"source": 0
},
{
"begin": 403,
"end": 5364,
"name": "DUP1",
"source": 0
},
{
"begin": 403,
"end": 5364,
"name": "PUSH",
"source": 0,
"value": "84DD0D12"
},
{
"begin": 403,
"end": 5364,
"name": "EQ",
"source": 0
},
{
"begin": 403,
"end": 5364,
"name": "PUSH [tag]",
"source": 0,
"value": "4"
},
{
"begin": 403,
"end": 5364,
"name": "JUMPI",
"source": 0
},
{
"begin": 403,
"end": 5364,
"name": "DUP1",
"source": 0
},
{
"begin": 403,
"end": 5364,
"name": "PUSH",
"source": 0,
"value": "B31825BF"
},
{
"begin": 403,
"end": 5364,
"name": "EQ",
"source": 0
},
{
"begin": 403,
"end": 5364,
"name": "PUSH [tag]",
"source": 0,
"value": "5"
},
{
"begin": 403,
"end": 5364,
"name": "JUMPI",
"source": 0
},
{
"begin": 403,
"end": 5364,
"name": "DUP1",
"source": 0
},
{
"begin": 403,
"end": 5364,
"name": "PUSH",
"source": 0,
"value": "D56154AB"
},
{
"begin": 403,
"end": 5364,
"name": "EQ",
"source": 0
},
{
"begin": 403,
"end": 5364,
"name": "PUSH [tag]",
"source": 0,
"value": "6"
},
{
"begin": 403,
"end": 5364,
"name": "JUMPI",
"source": 0
},
{
"begin": 403,
"end": 5364,
"name": "tag",
"source": 0,
"value": "2"
},
{
"begin": 403,
"end": 5364,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 403,
"end": 5364,
"name": "PUSH",
"source": 0,
"value": "0"
},
{
"begin": 403,
"end": 5364,
"name": "DUP1",
"source": 0
},
{
"begin": 403,
"end": 5364,
"name": "REVERT",
"source": 0
},
{
"begin": 4368,
"end": 5362,
"name": "tag",
"source": 0,
"value": "3"
},
{
"begin": 4368,
"end": 5362,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 4368,
"end": 5362,
"name": "PUSH [tag]",
"source": 0,
"value": "7"
},
{
"begin": 4368,
"end": 5362,
"name": "PUSH",
"source": 0,
"value": "4"
},
{
"begin": 4368,
"end": 5362,
"name": "DUP1",
"source": 0
},
{
"begin": 4368,
"end": 5362,
"name": "CALLDATASIZE",
"source": 0
},
{
"begin": 4368,
"end": 5362,
"name": "SUB",
"source": 0
},
{
"begin": 4368,
"end": 5362,
"name": "DUP2",
"source": 0
},
{
"begin": 4368,
"end": 5362,
"name": "ADD",
"source": 0
},
{
"begin": 4368,
"end": 5362,
"name": "SWAP1",
"source": 0
},
{
"begin": 4368,
"end": 5362,
"name": "PUSH [tag]",
"source": 0,
"value": "8"
},
{
"begin": 4368,
"end": 5362,
"name": "SWAP2",
"source": 0
},
{
"begin": 4368,
"end": 5362,
"name": "SWAP1",
"source": 0
},
{
"begin": 4368,
"end": 5362,
"name": "PUSH [tag]",
"source": 0,
"value": "9"
},
{
"begin": 4368,
"end": 5362,
"jumpType": "[in]",
"name": "JUMP",
"source": 0
},
{
"begin": 4368,
"end": 5362,
"name": "tag",
"source": 0,
"value": "8"
},
{
"begin": 4368,
"end": 5362,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 4368,
"end": 5362,
"name": "PUSH [tag]",
"source": 0,
"value": "10"
},
{
"begin": 4368,
"end": 5362,
"jumpType": "[in]",
"name": "JUMP",
"source": 0
},
{
"begin": 4368,
"end": 5362,
"name": "tag",
"source": 0,
"value": "7"
},
{
"begin": 4368,
"end": 5362,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 4368,
"end": 5362,
"name": "PUSH",
"source": 0,
"value": "40"
},
{
"begin": 4368,
"end": 5362,
"name": "MLOAD",
"source": 0
},
{
"begin": 4368,
"end": 5362,
"name": "PUSH [tag]",
"source": 0,
"value": "11"
},
{
"begin": 4368,
"end": 5362,
"name": "SWAP2",
"source": 0
},
{
"begin": 4368,
"end": 5362,
"name": "SWAP1",
"source": 0
},
{
"begin": 4368,
"end": 5362,
"name": "PUSH [tag]",
"source": 0,
"value": "12"
},
{
"begin": 4368,
"end": 5362,
"jumpType": "[in]",
"name": "JUMP",
"source": 0
},
{
"begin": 4368,
"end": 5362,
"name": "tag",
"source": 0,
"value": "11"
},
{
"begin": 4368,
"end": 5362,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 4368,
"end": 5362,
"name": "PUSH",
"source": 0,
"value": "40"
},
{
"begin": 4368,
"end": 5362,
"name": "MLOAD",
"source": 0
},
{
"begin": 4368,
"end": 5362,
"name": "DUP1",
"source": 0
},
{
"begin": 4368,
"end": 5362,
"name": "SWAP2",
"source": 0
},
{
"begin": 4368,
"end": 5362,
"name": "SUB",
"source": 0
},
{
"begin": 4368,
"end": 5362,
"name": "SWAP1",
"source": 0
},
{
"begin": 4368,
"end": 5362,
"name": "RETURN",
"source": 0
},
{
"begin": 2783,
"end": 3673,
"name": "tag",
"source": 0,
"value": "4"
},
{
"begin": 2783,
"end": 3673,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 2783,
"end": 3673,
"name": "PUSH [tag]",
"source": 0,
"value": "13"
},
{
"begin": 2783,
"end": 3673,
"name": "PUSH",
"source": 0,
"value": "4"
},
{
"begin": 2783,
"end": 3673,
"name": "DUP1",
"source": 0
},
{
"begin": 2783,
"end": 3673,
"name": "CALLDATASIZE",
"source": 0
},
{
"begin": 2783,
"end": 3673,
"name": "SUB",
"source": 0
},
{
"begin": 2783,
"end": 3673,
"name": "DUP2",
"source": 0
},
{
"begin": 2783,
"end": 3673,
"name": "ADD",
"source": 0
},
{
"begin": 2783,
"end": 3673,
"name": "SWAP1",
"source": 0
},
{
"begin": 2783,
"end": 3673,
"name": "PUSH [tag]",
"source": 0,
"value": "14"
},
{
"begin": 2783,
"end": 3673,
"name": "SWAP2",
"source": 0
},
{
"begin": 2783,
"end": 3673,
"name": "SWAP1",
"source": 0
},
{
"begin": 2783,
"end": 3673,
"name": "PUSH [tag]",
"source": 0,
"value": "15"
},
{
"begin": 2783,
"end": 3673,
"jumpType": "[in]",
"name": "JUMP",
"source": 0
},
{
"begin": 2783,
"end": 3673,
"name": "tag",
"source": 0,
"value": "14"
},
{
"begin": 2783,
"end": 3673,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 2783,
"end": 3673,
"name": "PUSH [tag]",
"source": 0,
"value": "16"
},
{
"begin": 2783,
"end": 3673,
"jumpType": "[in]",
"name": "JUMP",
"source": 0
},
{
"begin": 2783,
"end": 3673,
"name": "tag",
"source": 0,
"value": "13"
},
{
"begin": 2783,
"end": 3673,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 2783,
"end": 3673,
"name": "PUSH",
"source": 0,
"value": "40"
},
{
"begin": 2783,
"end": 3673,
"name": "MLOAD",
"source": 0
},
{
"begin": 2783,
"end": 3673,
"name": "PUSH [tag]",
"source": 0,
"value": "17"
},
{
"begin": 2783,
"end": 3673,
"name": "SWAP2",
"source": 0
},
{
"begin": 2783,
"end": 3673,
"name": "SWAP1",
"source": 0
},
{
"begin": 2783,
"end": 3673,
"name": "PUSH [tag]",
"source": 0,
"value": "12"
},
{
"begin": 2783,
"end": 3673,
"jumpType": "[in]",
"name": "JUMP",
"source": 0
},
{
"begin": 2783,
"end": 3673,
"name": "tag",
"source": 0,
"value": "17"
},
{
"begin": 2783,
"end": 3673,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 2783,
"end": 3673,
"name": "PUSH",
"source": 0,
"value": "40"
},
{
"begin": 2783,
"end": 3673,
"name": "MLOAD",
"source": 0
},
{
"begin": 2783,
"end": 3673,
"name": "DUP1",
"source": 0
},
{
"begin": 2783,
"end": 3673,
"name": "SWAP2",
"source": 0
},
{
"begin": 2783,
"end": 3673,
"name": "SUB",
"source": 0
},
{
"begin": 2783,
"end": 3673,
"name": "SWAP1",
"source": 0
},
{
"begin": 2783,
"end": 3673,
"name": "RETURN",
"source": 0
},
{
"begin": 1102,
"end": 1379,
"name": "tag",
"source": 0,
"value": "5"
},
{
"begin": 1102,
"end": 1379,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 1102,
"end": 1379,
"name": "PUSH [tag]",
"source": 0,
"value": "18"
},
{
"begin": 1102,
"end": 1379,
"name": "PUSH",
"source": 0,
"value": "4"
},
{
"begin": 1102,
"end": 1379,
"name": "DUP1",
"source": 0
},
{
"begin": 1102,
"end": 1379,
"name": "CALLDATASIZE",
"source": 0
},
{
"begin": 1102,
"end": 1379,
"name": "SUB",
"source": 0
},
{
"begin": 1102,
"end": 1379,
"name": "DUP2",
"source": 0
},
{
"begin": 1102,
"end": 1379,
"name": "ADD",
"source": 0
},
{
"begin": 1102,
"end": 1379,
"name": "SWAP1",
"source": 0
},
{
"begin": 1102,
"end": 1379,
"name": "PUSH [tag]",
"source": 0,
"value": "19"
},
{
"begin": 1102,
"end": 1379,
"name": "SWAP2",
"source": 0
},
{
"begin": 1102,
"end": 1379,
"name": "SWAP1",
"source": 0
},
{
"begin": 1102,
"end": 1379,
"name": "PUSH [tag]",
"source": 0,
"value": "20"
},
{
"begin": 1102,
"end": 1379,
"jumpType": "[in]",
"name": "JUMP",
"source": 0
},
{
"begin": 1102,
"end": 1379,
"name": "tag",
"source": 0,
"value": "19"
},
{
"begin": 1102,
"end": 1379,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 1102,
"end": 1379,
"name": "PUSH [tag]",
"source": 0,
"value": "21"
},
{
"begin": 1102,
"end": 1379,
"jumpType": "[in]",
"name": "JUMP",
"source": 0
},
{
"begin": 1102,
"end": 1379,
"name": "tag",
"source": 0,
"value": "18"
},
{
"begin": 1102,
"end": 1379,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 1102,
"end": 1379,
"name": "PUSH",
"source": 0,
"value": "40"
},
{
"begin": 1102,
"end": 1379,
"name": "MLOAD",
"source": 0
},
{
"begin": 1102,
"end": 1379,
"name": "PUSH [tag]",
"source": 0,
"value": "22"
},
{
"begin": 1102,
"end": 1379,
"name": "SWAP2",
"source": 0
},
{
"begin": 1102,
"end": 1379,
"name": "SWAP1",
"source": 0
},
{
"begin": 1102,
"end": 1379,
"name": "PUSH [tag]",
"source": 0,
"value": "12"
},
{
"begin": 1102,
"end": 1379,
"jumpType": "[in]",
"name": "JUMP",
"source": 0
},
{
"begin": 1102,
"end": 1379,
"name": "tag",
"source": 0,
"value": "22"
},
{
"begin": 1102,
"end": 1379,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 1102,
"end": 1379,
"name": "PUSH",
"source": 0,
"value": "40"
},
{
"begin": 1102,
"end": 1379,
"name": "MLOAD",
"source": 0
},
{
"begin": 1102,
"end": 1379,
"name": "DUP1",
"source": 0
},
{
"begin": 1102,
"end": 1379,
"name": "SWAP2",
"source": 0
},
{
"begin": 1102,
"end": 1379,
"name": "SUB",
"source": 0
},
{
"begin": 1102,
"end": 1379,
"name": "SWAP1",
"source": 0
},
{
"begin": 1102,
"end": 1379,
"name": "RETURN",
"source": 0
},
{
"begin": 1953,
"end": 2306,
"name": "tag",
"source": 0,
"value": "6"
},
{
"begin": 1953,
"end": 2306,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 1953,
"end": 2306,
"name": "PUSH [tag]",
"source": 0,
"value": "23"
},
{
"begin": 1953,
"end": 2306,
"name": "PUSH",
"source": 0,
"value": "4"
},
{
"begin": 1953,
"end": 2306,
"name": "DUP1",
"source": 0
},
{
"begin": 1953,
"end": 2306,
"name": "CALLDATASIZE",
"source": 0
},
{
"begin": 1953,
"end": 2306,
"name": "SUB",
"source": 0
},
{
"begin": 1953,
"end": 2306,
"name": "DUP2",
"source": 0
},
{
"begin": 1953,
"end": 2306,
"name": "ADD",
"source": 0
},
{
"begin": 1953,
"end": 2306,
"name": "SWAP1",
"source": 0
},
{
"begin": 1953,
"end": 2306,
"name": "PUSH [tag]",
"source": 0,
"value": "24"
},
{
"begin": 1953,
"end": 2306,
"name": "SWAP2",
"source": 0
},
{
"begin": 1953,
"end": 2306,
"name": "SWAP1",
"source": 0
},
{
"begin": 1953,
"end": 2306,
"name": "PUSH [tag]",
"source": 0,
"value": "15"
},
{
"begin": 1953,
"end": 2306,
"jumpType": "[in]",
"name": "JUMP",
"source": 0
},
{
"begin": 1953,
"end": 2306,
"name": "tag",
"source": 0,
"value": "24"
},
{
"begin": 1953,
"end": 2306,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 1953,
"end": 2306,
"name": "PUSH [tag]",
"source": 0,
"value": "25"
},
{
"begin": 1953,
"end": 2306,
"jumpType": "[in]",
"name": "JUMP",
"source": 0
},
{
"begin": 1953,
"end": 2306,
"name": "tag",
"source": 0,
"value": "23"
},
{
"begin": 1953,
"end": 2306,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 1953,
"end": 2306,
"name": "PUSH",
"source": 0,
"value": "40"
},
{
"begin": 1953,
"end": 2306,
"name": "MLOAD",
"source": 0
},
{
"begin": 1953,
"end": 2306,
"name": "PUSH [tag]",
"source": 0,
"value": "26"
},
{
"begin": 1953,
"end": 2306,
"name": "SWAP2",
"source": 0
},
{
"begin": 1953,
"end": 2306,
"name": "SWAP1",
"source": 0
},
{
"begin": 1953,
"end": 2306,
"name": "PUSH [tag]",
"source": 0,
"value": "27"
},
{
"begin": 1953,
"end": 2306,
"jumpType": "[in]",
"name": "JUMP",
"source": 0
},
{
"begin": 1953,
"end": 2306,
"name": "tag",
"source": 0,
"value": "26"
},
{
"begin": 1953,
"end": 2306,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 1953,
"end": 2306,
"name": "PUSH",
"source": 0,
"value": "40"
},
{
"begin": 1953,
"end": 2306,
"name": "MLOAD",
"source": 0
},
{
"begin": 1953,
"end": 2306,
"name": "DUP1",
"source": 0
},
{
"begin": 1953,
"end": 2306,
"name": "SWAP2",
"source": 0
},
{
"begin": 1953,
"end": 2306,
"name": "SUB",
"source": 0
},
{
"begin": 1953,
"end": 2306,
"name": "SWAP1",
"source": 0
},
{
"begin": 1953,
"end": 2306,
"name": "RETURN",
"source": 0
},
{
"begin": 4368,
"end": 5362,
"name": "tag",
"source": 0,
"value": "10"
},
{
"begin": 4368,
"end": 5362,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 4542,
"end": 4561,
"name": "PUSH",
"source": 0,
"value": "0"
},
{
"begin": 4573,
"end": 4602,
"name": "DUP1",
"source": 0
},
{
"begin": 4605,
"end": 4664,
"name": "PUSH [tag]",
"source": 0,
"value": "29"
},
{
"begin": 4627,
"end": 4641,
"name": "DUP7",
View raw

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

View raw

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

View raw

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

View raw

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

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