{"id":"e3fff69a0840b4fd10f9859a1a3fec1f","_format":"hh-sol-build-info-1","solcVersion":"0.8.25","solcLongVersion":"0.8.25+commit.b61c2a91","input":{"language":"Solidity","sources":{"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)\n\npragma solidity ^0.8.20;\n\nimport {ContextUpgradeable} from \"../utils/ContextUpgradeable.sol\";\nimport {Initializable} from \"../proxy/utils/Initializable.sol\";\n\n/**\n * @dev Contract module which provides a basic access control mechanism, where\n * there is an account (an owner) that can be granted exclusive access to\n * specific functions.\n *\n * The initial owner is set to the address provided by the deployer. This can\n * later be changed with {transferOwnership}.\n *\n * This module is used through inheritance. It will make available the modifier\n * `onlyOwner`, which can be applied to your functions to restrict their use to\n * the owner.\n */\nabstract contract OwnableUpgradeable is Initializable, ContextUpgradeable {\n    /// @custom:storage-location erc7201:openzeppelin.storage.Ownable\n    struct OwnableStorage {\n        address _owner;\n    }\n\n    // keccak256(abi.encode(uint256(keccak256(\"openzeppelin.storage.Ownable\")) - 1)) & ~bytes32(uint256(0xff))\n    bytes32 private constant OwnableStorageLocation = 0x9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300;\n\n    function _getOwnableStorage() private pure returns (OwnableStorage storage $) {\n        assembly {\n            $.slot := OwnableStorageLocation\n        }\n    }\n\n    /**\n     * @dev The caller account is not authorized to perform an operation.\n     */\n    error OwnableUnauthorizedAccount(address account);\n\n    /**\n     * @dev The owner is not a valid owner account. (eg. `address(0)`)\n     */\n    error OwnableInvalidOwner(address owner);\n\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\n\n    /**\n     * @dev Initializes the contract setting the address provided by the deployer as the initial owner.\n     */\n    function __Ownable_init(address initialOwner) internal onlyInitializing {\n        __Ownable_init_unchained(initialOwner);\n    }\n\n    function __Ownable_init_unchained(address initialOwner) internal onlyInitializing {\n        if (initialOwner == address(0)) {\n            revert OwnableInvalidOwner(address(0));\n        }\n        _transferOwnership(initialOwner);\n    }\n\n    /**\n     * @dev Throws if called by any account other than the owner.\n     */\n    modifier onlyOwner() {\n        _checkOwner();\n        _;\n    }\n\n    /**\n     * @dev Returns the address of the current owner.\n     */\n    function owner() public view virtual returns (address) {\n        OwnableStorage storage $ = _getOwnableStorage();\n        return $._owner;\n    }\n\n    /**\n     * @dev Throws if the sender is not the owner.\n     */\n    function _checkOwner() internal view virtual {\n        if (owner() != _msgSender()) {\n            revert OwnableUnauthorizedAccount(_msgSender());\n        }\n    }\n\n    /**\n     * @dev Leaves the contract without owner. It will not be possible to call\n     * `onlyOwner` functions. Can only be called by the current owner.\n     *\n     * NOTE: Renouncing ownership will leave the contract without an owner,\n     * thereby disabling any functionality that is only available to the owner.\n     */\n    function renounceOwnership() public virtual onlyOwner {\n        _transferOwnership(address(0));\n    }\n\n    /**\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\n     * Can only be called by the current owner.\n     */\n    function transferOwnership(address newOwner) public virtual onlyOwner {\n        if (newOwner == address(0)) {\n            revert OwnableInvalidOwner(address(0));\n        }\n        _transferOwnership(newOwner);\n    }\n\n    /**\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\n     * Internal function without access restriction.\n     */\n    function _transferOwnership(address newOwner) internal virtual {\n        OwnableStorage storage $ = _getOwnableStorage();\n        address oldOwner = $._owner;\n        $._owner = newOwner;\n        emit OwnershipTransferred(oldOwner, newOwner);\n    }\n}\n"},"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/utils/Initializable.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\n *\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\n * reused. This mechanism prevents re-execution of each \"step\" but allows the creation of new initialization steps in\n * case an upgrade adds a module that needs to be initialized.\n *\n * For example:\n *\n * [.hljs-theme-light.nopadding]\n * ```solidity\n * contract MyToken is ERC20Upgradeable {\n *     function initialize() initializer public {\n *         __ERC20_init(\"MyToken\", \"MTK\");\n *     }\n * }\n *\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\n *     function initializeV2() reinitializer(2) public {\n *         __ERC20Permit_init(\"MyToken\");\n *     }\n * }\n * ```\n *\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\n *\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\n *\n * [CAUTION]\n * ====\n * Avoid leaving a contract uninitialized.\n *\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\n *\n * [.hljs-theme-light.nopadding]\n * ```\n * /// @custom:oz-upgrades-unsafe-allow constructor\n * constructor() {\n *     _disableInitializers();\n * }\n * ```\n * ====\n */\nabstract contract Initializable {\n    /**\n     * @dev Storage of the initializable contract.\n     *\n     * It's implemented on a custom ERC-7201 namespace to reduce the risk of storage collisions\n     * when using with upgradeable contracts.\n     *\n     * @custom:storage-location erc7201:openzeppelin.storage.Initializable\n     */\n    struct InitializableStorage {\n        /**\n         * @dev Indicates that the contract has been initialized.\n         */\n        uint64 _initialized;\n        /**\n         * @dev Indicates that the contract is in the process of being initialized.\n         */\n        bool _initializing;\n    }\n\n    // keccak256(abi.encode(uint256(keccak256(\"openzeppelin.storage.Initializable\")) - 1)) & ~bytes32(uint256(0xff))\n    bytes32 private constant INITIALIZABLE_STORAGE = 0xf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00;\n\n    /**\n     * @dev The contract is already initialized.\n     */\n    error InvalidInitialization();\n\n    /**\n     * @dev The contract is not initializing.\n     */\n    error NotInitializing();\n\n    /**\n     * @dev Triggered when the contract has been initialized or reinitialized.\n     */\n    event Initialized(uint64 version);\n\n    /**\n     * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\n     * `onlyInitializing` functions can be used to initialize parent contracts.\n     *\n     * Similar to `reinitializer(1)`, except that in the context of a constructor an `initializer` may be invoked any\n     * number of times. This behavior in the constructor can be useful during testing and is not expected to be used in\n     * production.\n     *\n     * Emits an {Initialized} event.\n     */\n    modifier initializer() {\n        // solhint-disable-next-line var-name-mixedcase\n        InitializableStorage storage $ = _getInitializableStorage();\n\n        // Cache values to avoid duplicated sloads\n        bool isTopLevelCall = !$._initializing;\n        uint64 initialized = $._initialized;\n\n        // Allowed calls:\n        // - initialSetup: the contract is not in the initializing state and no previous version was\n        //                 initialized\n        // - construction: the contract is initialized at version 1 (no reininitialization) and the\n        //                 current contract is just being deployed\n        bool initialSetup = initialized == 0 && isTopLevelCall;\n        bool construction = initialized == 1 && address(this).code.length == 0;\n\n        if (!initialSetup && !construction) {\n            revert InvalidInitialization();\n        }\n        $._initialized = 1;\n        if (isTopLevelCall) {\n            $._initializing = true;\n        }\n        _;\n        if (isTopLevelCall) {\n            $._initializing = false;\n            emit Initialized(1);\n        }\n    }\n\n    /**\n     * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\n     * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\n     * used to initialize parent contracts.\n     *\n     * A reinitializer may be used after the original initialization step. This is essential to configure modules that\n     * are added through upgrades and that require initialization.\n     *\n     * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\n     * cannot be nested. If one is invoked in the context of another, execution will revert.\n     *\n     * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\n     * a contract, executing them in the right order is up to the developer or operator.\n     *\n     * WARNING: Setting the version to 2**64 - 1 will prevent any future reinitialization.\n     *\n     * Emits an {Initialized} event.\n     */\n    modifier reinitializer(uint64 version) {\n        // solhint-disable-next-line var-name-mixedcase\n        InitializableStorage storage $ = _getInitializableStorage();\n\n        if ($._initializing || $._initialized >= version) {\n            revert InvalidInitialization();\n        }\n        $._initialized = version;\n        $._initializing = true;\n        _;\n        $._initializing = false;\n        emit Initialized(version);\n    }\n\n    /**\n     * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\n     * {initializer} and {reinitializer} modifiers, directly or indirectly.\n     */\n    modifier onlyInitializing() {\n        _checkInitializing();\n        _;\n    }\n\n    /**\n     * @dev Reverts if the contract is not in an initializing state. See {onlyInitializing}.\n     */\n    function _checkInitializing() internal view virtual {\n        if (!_isInitializing()) {\n            revert NotInitializing();\n        }\n    }\n\n    /**\n     * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\n     * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\n     * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\n     * through proxies.\n     *\n     * Emits an {Initialized} event the first time it is successfully executed.\n     */\n    function _disableInitializers() internal virtual {\n        // solhint-disable-next-line var-name-mixedcase\n        InitializableStorage storage $ = _getInitializableStorage();\n\n        if ($._initializing) {\n            revert InvalidInitialization();\n        }\n        if ($._initialized != type(uint64).max) {\n            $._initialized = type(uint64).max;\n            emit Initialized(type(uint64).max);\n        }\n    }\n\n    /**\n     * @dev Returns the highest version that has been initialized. See {reinitializer}.\n     */\n    function _getInitializedVersion() internal view returns (uint64) {\n        return _getInitializableStorage()._initialized;\n    }\n\n    /**\n     * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\n     */\n    function _isInitializing() internal view returns (bool) {\n        return _getInitializableStorage()._initializing;\n    }\n\n    /**\n     * @dev Returns a pointer to the storage namespace.\n     */\n    // solhint-disable-next-line var-name-mixedcase\n    function _getInitializableStorage() private pure returns (InitializableStorage storage $) {\n        assembly {\n            $.slot := INITIALIZABLE_STORAGE\n        }\n    }\n}\n"},"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/utils/UUPSUpgradeable.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC1822Proxiable} from \"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\";\nimport {ERC1967Utils} from \"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\";\nimport {Initializable} from \"./Initializable.sol\";\n\n/**\n * @dev An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an\n * {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy.\n *\n * A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is\n * reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing\n * `UUPSUpgradeable` with a custom implementation of upgrades.\n *\n * The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism.\n */\nabstract contract UUPSUpgradeable is Initializable, IERC1822Proxiable {\n    /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\n    address private immutable __self = address(this);\n\n    /**\n     * @dev The version of the upgrade interface of the contract. If this getter is missing, both `upgradeTo(address)`\n     * and `upgradeToAndCall(address,bytes)` are present, and `upgradeTo` must be used if no function should be called,\n     * while `upgradeToAndCall` will invoke the `receive` function if the second argument is the empty byte string.\n     * If the getter returns `\"5.0.0\"`, only `upgradeToAndCall(address,bytes)` is present, and the second argument must\n     * be the empty byte string if no function should be called, making it impossible to invoke the `receive` function\n     * during an upgrade.\n     */\n    string public constant UPGRADE_INTERFACE_VERSION = \"5.0.0\";\n\n    /**\n     * @dev The call is from an unauthorized context.\n     */\n    error UUPSUnauthorizedCallContext();\n\n    /**\n     * @dev The storage `slot` is unsupported as a UUID.\n     */\n    error UUPSUnsupportedProxiableUUID(bytes32 slot);\n\n    /**\n     * @dev Check that the execution is being performed through a delegatecall call and that the execution context is\n     * a proxy contract with an implementation (as defined in ERC1967) pointing to self. This should only be the case\n     * for UUPS and transparent proxies that are using the current contract as their implementation. Execution of a\n     * function through ERC1167 minimal proxies (clones) would not normally pass this test, but is not guaranteed to\n     * fail.\n     */\n    modifier onlyProxy() {\n        _checkProxy();\n        _;\n    }\n\n    /**\n     * @dev Check that the execution is not being performed through a delegate call. This allows a function to be\n     * callable on the implementing contract but not through proxies.\n     */\n    modifier notDelegated() {\n        _checkNotDelegated();\n        _;\n    }\n\n    function __UUPSUpgradeable_init() internal onlyInitializing {\n    }\n\n    function __UUPSUpgradeable_init_unchained() internal onlyInitializing {\n    }\n    /**\n     * @dev Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the\n     * implementation. It is used to validate the implementation's compatibility when performing an upgrade.\n     *\n     * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\n     * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\n     * function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\n     */\n    function proxiableUUID() external view virtual notDelegated returns (bytes32) {\n        return ERC1967Utils.IMPLEMENTATION_SLOT;\n    }\n\n    /**\n     * @dev Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call\n     * encoded in `data`.\n     *\n     * Calls {_authorizeUpgrade}.\n     *\n     * Emits an {Upgraded} event.\n     *\n     * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\n     */\n    function upgradeToAndCall(address newImplementation, bytes memory data) public payable virtual onlyProxy {\n        _authorizeUpgrade(newImplementation);\n        _upgradeToAndCallUUPS(newImplementation, data);\n    }\n\n    /**\n     * @dev Reverts if the execution is not performed via delegatecall or the execution\n     * context is not of a proxy with an ERC1967-compliant implementation pointing to self.\n     * See {_onlyProxy}.\n     */\n    function _checkProxy() internal view virtual {\n        if (\n            address(this) == __self || // Must be called through delegatecall\n            ERC1967Utils.getImplementation() != __self // Must be called through an active proxy\n        ) {\n            revert UUPSUnauthorizedCallContext();\n        }\n    }\n\n    /**\n     * @dev Reverts if the execution is performed via delegatecall.\n     * See {notDelegated}.\n     */\n    function _checkNotDelegated() internal view virtual {\n        if (address(this) != __self) {\n            // Must not be called through delegatecall\n            revert UUPSUnauthorizedCallContext();\n        }\n    }\n\n    /**\n     * @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract. Called by\n     * {upgradeToAndCall}.\n     *\n     * Normally, this function will use an xref:access.adoc[access control] modifier such as {Ownable-onlyOwner}.\n     *\n     * ```solidity\n     * function _authorizeUpgrade(address) internal onlyOwner {}\n     * ```\n     */\n    function _authorizeUpgrade(address newImplementation) internal virtual;\n\n    /**\n     * @dev Performs an implementation upgrade with a security check for UUPS proxies, and additional setup call.\n     *\n     * As a security check, {proxiableUUID} is invoked in the new implementation, and the return value\n     * is expected to be the implementation slot in ERC1967.\n     *\n     * Emits an {IERC1967-Upgraded} event.\n     */\n    function _upgradeToAndCallUUPS(address newImplementation, bytes memory data) private {\n        try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\n            if (slot != ERC1967Utils.IMPLEMENTATION_SLOT) {\n                revert UUPSUnsupportedProxiableUUID(slot);\n            }\n            ERC1967Utils.upgradeToAndCall(newImplementation, data);\n        } catch {\n            // The implementation is not UUPS\n            revert ERC1967Utils.ERC1967InvalidImplementation(newImplementation);\n        }\n    }\n}\n"},"@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/ERC20.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC20} from \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport {IERC20Metadata} from \"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\";\nimport {ContextUpgradeable} from \"../../utils/ContextUpgradeable.sol\";\nimport {IERC20Errors} from \"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\";\nimport {Initializable} from \"../../proxy/utils/Initializable.sol\";\n\n/**\n * @dev Implementation of the {IERC20} interface.\n *\n * This implementation is agnostic to the way tokens are created. This means\n * that a supply mechanism has to be added in a derived contract using {_mint}.\n *\n * TIP: For a detailed writeup see our guide\n * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\n * to implement supply mechanisms].\n *\n * The default value of {decimals} is 18. To change this, you should override\n * this function so it returns a different value.\n *\n * We have followed general OpenZeppelin Contracts guidelines: functions revert\n * instead returning `false` on failure. This behavior is nonetheless\n * conventional and does not conflict with the expectations of ERC20\n * applications.\n *\n * Additionally, an {Approval} event is emitted on calls to {transferFrom}.\n * This allows applications to reconstruct the allowance for all accounts just\n * by listening to said events. Other implementations of the EIP may not emit\n * these events, as it isn't required by the specification.\n */\nabstract contract ERC20Upgradeable is Initializable, ContextUpgradeable, IERC20, IERC20Metadata, IERC20Errors {\n    /// @custom:storage-location erc7201:openzeppelin.storage.ERC20\n    struct ERC20Storage {\n        mapping(address account => uint256) _balances;\n\n        mapping(address account => mapping(address spender => uint256)) _allowances;\n\n        uint256 _totalSupply;\n\n        string _name;\n        string _symbol;\n    }\n\n    // keccak256(abi.encode(uint256(keccak256(\"openzeppelin.storage.ERC20\")) - 1)) & ~bytes32(uint256(0xff))\n    bytes32 private constant ERC20StorageLocation = 0x52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00;\n\n    function _getERC20Storage() private pure returns (ERC20Storage storage $) {\n        assembly {\n            $.slot := ERC20StorageLocation\n        }\n    }\n\n    /**\n     * @dev Sets the values for {name} and {symbol}.\n     *\n     * All two of these values are immutable: they can only be set once during\n     * construction.\n     */\n    function __ERC20_init(string memory name_, string memory symbol_) internal onlyInitializing {\n        __ERC20_init_unchained(name_, symbol_);\n    }\n\n    function __ERC20_init_unchained(string memory name_, string memory symbol_) internal onlyInitializing {\n        ERC20Storage storage $ = _getERC20Storage();\n        $._name = name_;\n        $._symbol = symbol_;\n    }\n\n    /**\n     * @dev Returns the name of the token.\n     */\n    function name() public view virtual returns (string memory) {\n        ERC20Storage storage $ = _getERC20Storage();\n        return $._name;\n    }\n\n    /**\n     * @dev Returns the symbol of the token, usually a shorter version of the\n     * name.\n     */\n    function symbol() public view virtual returns (string memory) {\n        ERC20Storage storage $ = _getERC20Storage();\n        return $._symbol;\n    }\n\n    /**\n     * @dev Returns the number of decimals used to get its user representation.\n     * For example, if `decimals` equals `2`, a balance of `505` tokens should\n     * be displayed to a user as `5.05` (`505 / 10 ** 2`).\n     *\n     * Tokens usually opt for a value of 18, imitating the relationship between\n     * Ether and Wei. This is the default value returned by this function, unless\n     * it's overridden.\n     *\n     * NOTE: This information is only used for _display_ purposes: it in\n     * no way affects any of the arithmetic of the contract, including\n     * {IERC20-balanceOf} and {IERC20-transfer}.\n     */\n    function decimals() public view virtual returns (uint8) {\n        return 18;\n    }\n\n    /**\n     * @dev See {IERC20-totalSupply}.\n     */\n    function totalSupply() public view virtual returns (uint256) {\n        ERC20Storage storage $ = _getERC20Storage();\n        return $._totalSupply;\n    }\n\n    /**\n     * @dev See {IERC20-balanceOf}.\n     */\n    function balanceOf(address account) public view virtual returns (uint256) {\n        ERC20Storage storage $ = _getERC20Storage();\n        return $._balances[account];\n    }\n\n    /**\n     * @dev See {IERC20-transfer}.\n     *\n     * Requirements:\n     *\n     * - `to` cannot be the zero address.\n     * - the caller must have a balance of at least `value`.\n     */\n    function transfer(address to, uint256 value) public virtual returns (bool) {\n        address owner = _msgSender();\n        _transfer(owner, to, value);\n        return true;\n    }\n\n    /**\n     * @dev See {IERC20-allowance}.\n     */\n    function allowance(address owner, address spender) public view virtual returns (uint256) {\n        ERC20Storage storage $ = _getERC20Storage();\n        return $._allowances[owner][spender];\n    }\n\n    /**\n     * @dev See {IERC20-approve}.\n     *\n     * NOTE: If `value` is the maximum `uint256`, the allowance is not updated on\n     * `transferFrom`. This is semantically equivalent to an infinite approval.\n     *\n     * Requirements:\n     *\n     * - `spender` cannot be the zero address.\n     */\n    function approve(address spender, uint256 value) public virtual returns (bool) {\n        address owner = _msgSender();\n        _approve(owner, spender, value);\n        return true;\n    }\n\n    /**\n     * @dev See {IERC20-transferFrom}.\n     *\n     * Emits an {Approval} event indicating the updated allowance. This is not\n     * required by the EIP. See the note at the beginning of {ERC20}.\n     *\n     * NOTE: Does not update the allowance if the current allowance\n     * is the maximum `uint256`.\n     *\n     * Requirements:\n     *\n     * - `from` and `to` cannot be the zero address.\n     * - `from` must have a balance of at least `value`.\n     * - the caller must have allowance for ``from``'s tokens of at least\n     * `value`.\n     */\n    function transferFrom(address from, address to, uint256 value) public virtual returns (bool) {\n        address spender = _msgSender();\n        _spendAllowance(from, spender, value);\n        _transfer(from, to, value);\n        return true;\n    }\n\n    /**\n     * @dev Moves a `value` amount of tokens from `from` to `to`.\n     *\n     * This internal function is equivalent to {transfer}, and can be used to\n     * e.g. implement automatic token fees, slashing mechanisms, etc.\n     *\n     * Emits a {Transfer} event.\n     *\n     * NOTE: This function is not virtual, {_update} should be overridden instead.\n     */\n    function _transfer(address from, address to, uint256 value) internal {\n        if (from == address(0)) {\n            revert ERC20InvalidSender(address(0));\n        }\n        if (to == address(0)) {\n            revert ERC20InvalidReceiver(address(0));\n        }\n        _update(from, to, value);\n    }\n\n    /**\n     * @dev Transfers a `value` amount of tokens from `from` to `to`, or alternatively mints (or burns) if `from`\n     * (or `to`) is the zero address. All customizations to transfers, mints, and burns should be done by overriding\n     * this function.\n     *\n     * Emits a {Transfer} event.\n     */\n    function _update(address from, address to, uint256 value) internal virtual {\n        ERC20Storage storage $ = _getERC20Storage();\n        if (from == address(0)) {\n            // Overflow check required: The rest of the code assumes that totalSupply never overflows\n            $._totalSupply += value;\n        } else {\n            uint256 fromBalance = $._balances[from];\n            if (fromBalance < value) {\n                revert ERC20InsufficientBalance(from, fromBalance, value);\n            }\n            unchecked {\n                // Overflow not possible: value <= fromBalance <= totalSupply.\n                $._balances[from] = fromBalance - value;\n            }\n        }\n\n        if (to == address(0)) {\n            unchecked {\n                // Overflow not possible: value <= totalSupply or value <= fromBalance <= totalSupply.\n                $._totalSupply -= value;\n            }\n        } else {\n            unchecked {\n                // Overflow not possible: balance + value is at most totalSupply, which we know fits into a uint256.\n                $._balances[to] += value;\n            }\n        }\n\n        emit Transfer(from, to, value);\n    }\n\n    /**\n     * @dev Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0).\n     * Relies on the `_update` mechanism\n     *\n     * Emits a {Transfer} event with `from` set to the zero address.\n     *\n     * NOTE: This function is not virtual, {_update} should be overridden instead.\n     */\n    function _mint(address account, uint256 value) internal {\n        if (account == address(0)) {\n            revert ERC20InvalidReceiver(address(0));\n        }\n        _update(address(0), account, value);\n    }\n\n    /**\n     * @dev Destroys a `value` amount of tokens from `account`, lowering the total supply.\n     * Relies on the `_update` mechanism.\n     *\n     * Emits a {Transfer} event with `to` set to the zero address.\n     *\n     * NOTE: This function is not virtual, {_update} should be overridden instead\n     */\n    function _burn(address account, uint256 value) internal {\n        if (account == address(0)) {\n            revert ERC20InvalidSender(address(0));\n        }\n        _update(account, address(0), value);\n    }\n\n    /**\n     * @dev Sets `value` as the allowance of `spender` over the `owner` s tokens.\n     *\n     * This internal function is equivalent to `approve`, and can be used to\n     * e.g. set automatic allowances for certain subsystems, etc.\n     *\n     * Emits an {Approval} event.\n     *\n     * Requirements:\n     *\n     * - `owner` cannot be the zero address.\n     * - `spender` cannot be the zero address.\n     *\n     * Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument.\n     */\n    function _approve(address owner, address spender, uint256 value) internal {\n        _approve(owner, spender, value, true);\n    }\n\n    /**\n     * @dev Variant of {_approve} with an optional flag to enable or disable the {Approval} event.\n     *\n     * By default (when calling {_approve}) the flag is set to true. On the other hand, approval changes made by\n     * `_spendAllowance` during the `transferFrom` operation set the flag to false. This saves gas by not emitting any\n     * `Approval` event during `transferFrom` operations.\n     *\n     * Anyone who wishes to continue emitting `Approval` events on the`transferFrom` operation can force the flag to\n     * true using the following override:\n     * ```\n     * function _approve(address owner, address spender, uint256 value, bool) internal virtual override {\n     *     super._approve(owner, spender, value, true);\n     * }\n     * ```\n     *\n     * Requirements are the same as {_approve}.\n     */\n    function _approve(address owner, address spender, uint256 value, bool emitEvent) internal virtual {\n        ERC20Storage storage $ = _getERC20Storage();\n        if (owner == address(0)) {\n            revert ERC20InvalidApprover(address(0));\n        }\n        if (spender == address(0)) {\n            revert ERC20InvalidSpender(address(0));\n        }\n        $._allowances[owner][spender] = value;\n        if (emitEvent) {\n            emit Approval(owner, spender, value);\n        }\n    }\n\n    /**\n     * @dev Updates `owner` s allowance for `spender` based on spent `value`.\n     *\n     * Does not update the allowance value in case of infinite allowance.\n     * Revert if not enough allowance is available.\n     *\n     * Does not emit an {Approval} event.\n     */\n    function _spendAllowance(address owner, address spender, uint256 value) internal virtual {\n        uint256 currentAllowance = allowance(owner, spender);\n        if (currentAllowance != type(uint256).max) {\n            if (currentAllowance < value) {\n                revert ERC20InsufficientAllowance(spender, currentAllowance, value);\n            }\n            unchecked {\n                _approve(owner, spender, currentAllowance - value, false);\n            }\n        }\n    }\n}\n"},"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)\n\npragma solidity ^0.8.20;\nimport {Initializable} from \"../proxy/utils/Initializable.sol\";\n\n/**\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */\nabstract contract ContextUpgradeable is Initializable {\n    function __Context_init() internal onlyInitializing {\n    }\n\n    function __Context_init_unchained() internal onlyInitializing {\n    }\n    function _msgSender() internal view virtual returns (address) {\n        return msg.sender;\n    }\n\n    function _msgData() internal view virtual returns (bytes calldata) {\n        return msg.data;\n    }\n\n    function _contextSuffixLength() internal view virtual returns (uint256) {\n        return 0;\n    }\n}\n"},"@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/Pausable.sol)\n\npragma solidity ^0.8.20;\n\nimport {ContextUpgradeable} from \"../utils/ContextUpgradeable.sol\";\nimport {Initializable} from \"../proxy/utils/Initializable.sol\";\n\n/**\n * @dev Contract module which allows children to implement an emergency stop\n * mechanism that can be triggered by an authorized account.\n *\n * This module is used through inheritance. It will make available the\n * modifiers `whenNotPaused` and `whenPaused`, which can be applied to\n * the functions of your contract. Note that they will not be pausable by\n * simply including this module, only once the modifiers are put in place.\n */\nabstract contract PausableUpgradeable is Initializable, ContextUpgradeable {\n    /// @custom:storage-location erc7201:openzeppelin.storage.Pausable\n    struct PausableStorage {\n        bool _paused;\n    }\n\n    // keccak256(abi.encode(uint256(keccak256(\"openzeppelin.storage.Pausable\")) - 1)) & ~bytes32(uint256(0xff))\n    bytes32 private constant PausableStorageLocation = 0xcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300;\n\n    function _getPausableStorage() private pure returns (PausableStorage storage $) {\n        assembly {\n            $.slot := PausableStorageLocation\n        }\n    }\n\n    /**\n     * @dev Emitted when the pause is triggered by `account`.\n     */\n    event Paused(address account);\n\n    /**\n     * @dev Emitted when the pause is lifted by `account`.\n     */\n    event Unpaused(address account);\n\n    /**\n     * @dev The operation failed because the contract is paused.\n     */\n    error EnforcedPause();\n\n    /**\n     * @dev The operation failed because the contract is not paused.\n     */\n    error ExpectedPause();\n\n    /**\n     * @dev Initializes the contract in unpaused state.\n     */\n    function __Pausable_init() internal onlyInitializing {\n        __Pausable_init_unchained();\n    }\n\n    function __Pausable_init_unchained() internal onlyInitializing {\n        PausableStorage storage $ = _getPausableStorage();\n        $._paused = false;\n    }\n\n    /**\n     * @dev Modifier to make a function callable only when the contract is not paused.\n     *\n     * Requirements:\n     *\n     * - The contract must not be paused.\n     */\n    modifier whenNotPaused() {\n        _requireNotPaused();\n        _;\n    }\n\n    /**\n     * @dev Modifier to make a function callable only when the contract is paused.\n     *\n     * Requirements:\n     *\n     * - The contract must be paused.\n     */\n    modifier whenPaused() {\n        _requirePaused();\n        _;\n    }\n\n    /**\n     * @dev Returns true if the contract is paused, and false otherwise.\n     */\n    function paused() public view virtual returns (bool) {\n        PausableStorage storage $ = _getPausableStorage();\n        return $._paused;\n    }\n\n    /**\n     * @dev Throws if the contract is paused.\n     */\n    function _requireNotPaused() internal view virtual {\n        if (paused()) {\n            revert EnforcedPause();\n        }\n    }\n\n    /**\n     * @dev Throws if the contract is not paused.\n     */\n    function _requirePaused() internal view virtual {\n        if (!paused()) {\n            revert ExpectedPause();\n        }\n    }\n\n    /**\n     * @dev Triggers stopped state.\n     *\n     * Requirements:\n     *\n     * - The contract must not be paused.\n     */\n    function _pause() internal virtual whenNotPaused {\n        PausableStorage storage $ = _getPausableStorage();\n        $._paused = true;\n        emit Paused(_msgSender());\n    }\n\n    /**\n     * @dev Returns to normal state.\n     *\n     * Requirements:\n     *\n     * - The contract must be paused.\n     */\n    function _unpause() internal virtual whenPaused {\n        PausableStorage storage $ = _getPausableStorage();\n        $._paused = false;\n        emit Unpaused(_msgSender());\n    }\n}\n"},"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/ReentrancyGuard.sol)\n\npragma solidity ^0.8.20;\nimport {Initializable} from \"../proxy/utils/Initializable.sol\";\n\n/**\n * @dev Contract module that helps prevent reentrant calls to a function.\n *\n * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier\n * available, which can be applied to functions to make sure there are no nested\n * (reentrant) calls to them.\n *\n * Note that because there is a single `nonReentrant` guard, functions marked as\n * `nonReentrant` may not call one another. This can be worked around by making\n * those functions `private`, and then adding `external` `nonReentrant` entry\n * points to them.\n *\n * TIP: If you would like to learn more about reentrancy and alternative ways\n * to protect against it, check out our blog post\n * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].\n */\nabstract contract ReentrancyGuardUpgradeable is Initializable {\n    // Booleans are more expensive than uint256 or any type that takes up a full\n    // word because each write operation emits an extra SLOAD to first read the\n    // slot's contents, replace the bits taken up by the boolean, and then write\n    // back. This is the compiler's defense against contract upgrades and\n    // pointer aliasing, and it cannot be disabled.\n\n    // The values being non-zero value makes deployment a bit more expensive,\n    // but in exchange the refund on every call to nonReentrant will be lower in\n    // amount. Since refunds are capped to a percentage of the total\n    // transaction's gas, it is best to keep them low in cases like this one, to\n    // increase the likelihood of the full refund coming into effect.\n    uint256 private constant NOT_ENTERED = 1;\n    uint256 private constant ENTERED = 2;\n\n    /// @custom:storage-location erc7201:openzeppelin.storage.ReentrancyGuard\n    struct ReentrancyGuardStorage {\n        uint256 _status;\n    }\n\n    // keccak256(abi.encode(uint256(keccak256(\"openzeppelin.storage.ReentrancyGuard\")) - 1)) & ~bytes32(uint256(0xff))\n    bytes32 private constant ReentrancyGuardStorageLocation = 0x9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00;\n\n    function _getReentrancyGuardStorage() private pure returns (ReentrancyGuardStorage storage $) {\n        assembly {\n            $.slot := ReentrancyGuardStorageLocation\n        }\n    }\n\n    /**\n     * @dev Unauthorized reentrant call.\n     */\n    error ReentrancyGuardReentrantCall();\n\n    function __ReentrancyGuard_init() internal onlyInitializing {\n        __ReentrancyGuard_init_unchained();\n    }\n\n    function __ReentrancyGuard_init_unchained() internal onlyInitializing {\n        ReentrancyGuardStorage storage $ = _getReentrancyGuardStorage();\n        $._status = NOT_ENTERED;\n    }\n\n    /**\n     * @dev Prevents a contract from calling itself, directly or indirectly.\n     * Calling a `nonReentrant` function from another `nonReentrant`\n     * function is not supported. It is possible to prevent this from happening\n     * by making the `nonReentrant` function external, and making it call a\n     * `private` function that does the actual work.\n     */\n    modifier nonReentrant() {\n        _nonReentrantBefore();\n        _;\n        _nonReentrantAfter();\n    }\n\n    function _nonReentrantBefore() private {\n        ReentrancyGuardStorage storage $ = _getReentrancyGuardStorage();\n        // On the first call to nonReentrant, _status will be NOT_ENTERED\n        if ($._status == ENTERED) {\n            revert ReentrancyGuardReentrantCall();\n        }\n\n        // Any calls to nonReentrant after this point will fail\n        $._status = ENTERED;\n    }\n\n    function _nonReentrantAfter() private {\n        ReentrancyGuardStorage storage $ = _getReentrancyGuardStorage();\n        // By storing the original value once again, a refund is triggered (see\n        // https://eips.ethereum.org/EIPS/eip-2200)\n        $._status = NOT_ENTERED;\n    }\n\n    /**\n     * @dev Returns true if the reentrancy guard is currently set to \"entered\", which indicates there is a\n     * `nonReentrant` function in the call stack.\n     */\n    function _reentrancyGuardEntered() internal view returns (bool) {\n        ReentrancyGuardStorage storage $ = _getReentrancyGuardStorage();\n        return $._status == ENTERED;\n    }\n}\n"},"@openzeppelin/contracts/interfaces/draft-IERC1822.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/draft-IERC1822.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\n * proxy whose upgrades are fully controlled by the current implementation.\n */\ninterface IERC1822Proxiable {\n    /**\n     * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\n     * address.\n     *\n     * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\n     * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\n     * function revert if invoked through a proxy.\n     */\n    function proxiableUUID() external view returns (bytes32);\n}\n"},"@openzeppelin/contracts/interfaces/draft-IERC6093.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/draft-IERC6093.sol)\npragma solidity ^0.8.20;\n\n/**\n * @dev Standard ERC20 Errors\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC20 tokens.\n */\ninterface IERC20Errors {\n    /**\n     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n     * @param sender Address whose tokens are being transferred.\n     * @param balance Current balance for the interacting account.\n     * @param needed Minimum amount required to perform a transfer.\n     */\n    error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed);\n\n    /**\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\n     * @param sender Address whose tokens are being transferred.\n     */\n    error ERC20InvalidSender(address sender);\n\n    /**\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\n     * @param receiver Address to which tokens are being transferred.\n     */\n    error ERC20InvalidReceiver(address receiver);\n\n    /**\n     * @dev Indicates a failure with the `spender`’s `allowance`. Used in transfers.\n     * @param spender Address that may be allowed to operate on tokens without being their owner.\n     * @param allowance Amount of tokens a `spender` is allowed to operate with.\n     * @param needed Minimum amount required to perform a transfer.\n     */\n    error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed);\n\n    /**\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n     * @param approver Address initiating an approval operation.\n     */\n    error ERC20InvalidApprover(address approver);\n\n    /**\n     * @dev Indicates a failure with the `spender` to be approved. Used in approvals.\n     * @param spender Address that may be allowed to operate on tokens without being their owner.\n     */\n    error ERC20InvalidSpender(address spender);\n}\n\n/**\n * @dev Standard ERC721 Errors\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC721 tokens.\n */\ninterface IERC721Errors {\n    /**\n     * @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20.\n     * Used in balance queries.\n     * @param owner Address of the current owner of a token.\n     */\n    error ERC721InvalidOwner(address owner);\n\n    /**\n     * @dev Indicates a `tokenId` whose `owner` is the zero address.\n     * @param tokenId Identifier number of a token.\n     */\n    error ERC721NonexistentToken(uint256 tokenId);\n\n    /**\n     * @dev Indicates an error related to the ownership over a particular token. Used in transfers.\n     * @param sender Address whose tokens are being transferred.\n     * @param tokenId Identifier number of a token.\n     * @param owner Address of the current owner of a token.\n     */\n    error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner);\n\n    /**\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\n     * @param sender Address whose tokens are being transferred.\n     */\n    error ERC721InvalidSender(address sender);\n\n    /**\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\n     * @param receiver Address to which tokens are being transferred.\n     */\n    error ERC721InvalidReceiver(address receiver);\n\n    /**\n     * @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\n     * @param tokenId Identifier number of a token.\n     */\n    error ERC721InsufficientApproval(address operator, uint256 tokenId);\n\n    /**\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n     * @param approver Address initiating an approval operation.\n     */\n    error ERC721InvalidApprover(address approver);\n\n    /**\n     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\n     */\n    error ERC721InvalidOperator(address operator);\n}\n\n/**\n * @dev Standard ERC1155 Errors\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC1155 tokens.\n */\ninterface IERC1155Errors {\n    /**\n     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n     * @param sender Address whose tokens are being transferred.\n     * @param balance Current balance for the interacting account.\n     * @param needed Minimum amount required to perform a transfer.\n     * @param tokenId Identifier number of a token.\n     */\n    error ERC1155InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 tokenId);\n\n    /**\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\n     * @param sender Address whose tokens are being transferred.\n     */\n    error ERC1155InvalidSender(address sender);\n\n    /**\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\n     * @param receiver Address to which tokens are being transferred.\n     */\n    error ERC1155InvalidReceiver(address receiver);\n\n    /**\n     * @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\n     * @param owner Address of the current owner of a token.\n     */\n    error ERC1155MissingApprovalForAll(address operator, address owner);\n\n    /**\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n     * @param approver Address initiating an approval operation.\n     */\n    error ERC1155InvalidApprover(address approver);\n\n    /**\n     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\n     */\n    error ERC1155InvalidOperator(address operator);\n\n    /**\n     * @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\n     * Used in batch transfers.\n     * @param idsLength Length of the array of token identifiers\n     * @param valuesLength Length of the array of token amounts\n     */\n    error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength);\n}\n"},"@openzeppelin/contracts/proxy/beacon/IBeacon.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/beacon/IBeacon.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\n */\ninterface IBeacon {\n    /**\n     * @dev Must return an address that can be used as a delegate call target.\n     *\n     * {UpgradeableBeacon} will check that this address is a contract.\n     */\n    function implementation() external view returns (address);\n}\n"},"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/ERC1967/ERC1967Utils.sol)\n\npragma solidity ^0.8.20;\n\nimport {IBeacon} from \"../beacon/IBeacon.sol\";\nimport {Address} from \"../../utils/Address.sol\";\nimport {StorageSlot} from \"../../utils/StorageSlot.sol\";\n\n/**\n * @dev This abstract contract provides getters and event emitting update functions for\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\n */\nlibrary ERC1967Utils {\n    // We re-declare ERC-1967 events here because they can't be used directly from IERC1967.\n    // This will be fixed in Solidity 0.8.21. At that point we should remove these events.\n    /**\n     * @dev Emitted when the implementation is upgraded.\n     */\n    event Upgraded(address indexed implementation);\n\n    /**\n     * @dev Emitted when the admin account has changed.\n     */\n    event AdminChanged(address previousAdmin, address newAdmin);\n\n    /**\n     * @dev Emitted when the beacon is changed.\n     */\n    event BeaconUpgraded(address indexed beacon);\n\n    /**\n     * @dev Storage slot with the address of the current implementation.\n     * This is the keccak-256 hash of \"eip1967.proxy.implementation\" subtracted by 1.\n     */\n    // solhint-disable-next-line private-vars-leading-underscore\n    bytes32 internal constant IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n\n    /**\n     * @dev The `implementation` of the proxy is invalid.\n     */\n    error ERC1967InvalidImplementation(address implementation);\n\n    /**\n     * @dev The `admin` of the proxy is invalid.\n     */\n    error ERC1967InvalidAdmin(address admin);\n\n    /**\n     * @dev The `beacon` of the proxy is invalid.\n     */\n    error ERC1967InvalidBeacon(address beacon);\n\n    /**\n     * @dev An upgrade function sees `msg.value > 0` that may be lost.\n     */\n    error ERC1967NonPayable();\n\n    /**\n     * @dev Returns the current implementation address.\n     */\n    function getImplementation() internal view returns (address) {\n        return StorageSlot.getAddressSlot(IMPLEMENTATION_SLOT).value;\n    }\n\n    /**\n     * @dev Stores a new address in the EIP1967 implementation slot.\n     */\n    function _setImplementation(address newImplementation) private {\n        if (newImplementation.code.length == 0) {\n            revert ERC1967InvalidImplementation(newImplementation);\n        }\n        StorageSlot.getAddressSlot(IMPLEMENTATION_SLOT).value = newImplementation;\n    }\n\n    /**\n     * @dev Performs implementation upgrade with additional setup call if data is nonempty.\n     * This function is payable only if the setup call is performed, otherwise `msg.value` is rejected\n     * to avoid stuck value in the contract.\n     *\n     * Emits an {IERC1967-Upgraded} event.\n     */\n    function upgradeToAndCall(address newImplementation, bytes memory data) internal {\n        _setImplementation(newImplementation);\n        emit Upgraded(newImplementation);\n\n        if (data.length > 0) {\n            Address.functionDelegateCall(newImplementation, data);\n        } else {\n            _checkNonPayable();\n        }\n    }\n\n    /**\n     * @dev Storage slot with the admin of the contract.\n     * This is the keccak-256 hash of \"eip1967.proxy.admin\" subtracted by 1.\n     */\n    // solhint-disable-next-line private-vars-leading-underscore\n    bytes32 internal constant ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\n\n    /**\n     * @dev Returns the current admin.\n     *\n     * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using\n     * the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\n     * `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\n     */\n    function getAdmin() internal view returns (address) {\n        return StorageSlot.getAddressSlot(ADMIN_SLOT).value;\n    }\n\n    /**\n     * @dev Stores a new address in the EIP1967 admin slot.\n     */\n    function _setAdmin(address newAdmin) private {\n        if (newAdmin == address(0)) {\n            revert ERC1967InvalidAdmin(address(0));\n        }\n        StorageSlot.getAddressSlot(ADMIN_SLOT).value = newAdmin;\n    }\n\n    /**\n     * @dev Changes the admin of the proxy.\n     *\n     * Emits an {IERC1967-AdminChanged} event.\n     */\n    function changeAdmin(address newAdmin) internal {\n        emit AdminChanged(getAdmin(), newAdmin);\n        _setAdmin(newAdmin);\n    }\n\n    /**\n     * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\n     * This is the keccak-256 hash of \"eip1967.proxy.beacon\" subtracted by 1.\n     */\n    // solhint-disable-next-line private-vars-leading-underscore\n    bytes32 internal constant BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\n\n    /**\n     * @dev Returns the current beacon.\n     */\n    function getBeacon() internal view returns (address) {\n        return StorageSlot.getAddressSlot(BEACON_SLOT).value;\n    }\n\n    /**\n     * @dev Stores a new beacon in the EIP1967 beacon slot.\n     */\n    function _setBeacon(address newBeacon) private {\n        if (newBeacon.code.length == 0) {\n            revert ERC1967InvalidBeacon(newBeacon);\n        }\n\n        StorageSlot.getAddressSlot(BEACON_SLOT).value = newBeacon;\n\n        address beaconImplementation = IBeacon(newBeacon).implementation();\n        if (beaconImplementation.code.length == 0) {\n            revert ERC1967InvalidImplementation(beaconImplementation);\n        }\n    }\n\n    /**\n     * @dev Change the beacon and trigger a setup call if data is nonempty.\n     * This function is payable only if the setup call is performed, otherwise `msg.value` is rejected\n     * to avoid stuck value in the contract.\n     *\n     * Emits an {IERC1967-BeaconUpgraded} event.\n     *\n     * CAUTION: Invoking this function has no effect on an instance of {BeaconProxy} since v5, since\n     * it uses an immutable beacon without looking at the value of the ERC-1967 beacon slot for\n     * efficiency.\n     */\n    function upgradeBeaconToAndCall(address newBeacon, bytes memory data) internal {\n        _setBeacon(newBeacon);\n        emit BeaconUpgraded(newBeacon);\n\n        if (data.length > 0) {\n            Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\n        } else {\n            _checkNonPayable();\n        }\n    }\n\n    /**\n     * @dev Reverts if `msg.value` is not zero. It can be used to avoid `msg.value` stuck in the contract\n     * if an upgrade doesn't perform an initialization call.\n     */\n    function _checkNonPayable() private {\n        if (msg.value > 0) {\n            revert ERC1967NonPayable();\n        }\n    }\n}\n"},"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/extensions/IERC20Metadata.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC20} from \"../IERC20.sol\";\n\n/**\n * @dev Interface for the optional metadata functions from the ERC20 standard.\n */\ninterface IERC20Metadata is IERC20 {\n    /**\n     * @dev Returns the name of the token.\n     */\n    function name() external view returns (string memory);\n\n    /**\n     * @dev Returns the symbol of the token.\n     */\n    function symbol() external view returns (string memory);\n\n    /**\n     * @dev Returns the decimals places of the token.\n     */\n    function decimals() external view returns (uint8);\n}\n"},"@openzeppelin/contracts/token/ERC20/IERC20.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/IERC20.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Interface of the ERC20 standard as defined in the EIP.\n */\ninterface IERC20 {\n    /**\n     * @dev Emitted when `value` tokens are moved from one account (`from`) to\n     * another (`to`).\n     *\n     * Note that `value` may be zero.\n     */\n    event Transfer(address indexed from, address indexed to, uint256 value);\n\n    /**\n     * @dev Emitted when the allowance of a `spender` for an `owner` is set by\n     * a call to {approve}. `value` is the new allowance.\n     */\n    event Approval(address indexed owner, address indexed spender, uint256 value);\n\n    /**\n     * @dev Returns the value of tokens in existence.\n     */\n    function totalSupply() external view returns (uint256);\n\n    /**\n     * @dev Returns the value of tokens owned by `account`.\n     */\n    function balanceOf(address account) external view returns (uint256);\n\n    /**\n     * @dev Moves a `value` amount of tokens from the caller's account to `to`.\n     *\n     * Returns a boolean value indicating whether the operation succeeded.\n     *\n     * Emits a {Transfer} event.\n     */\n    function transfer(address to, uint256 value) external returns (bool);\n\n    /**\n     * @dev Returns the remaining number of tokens that `spender` will be\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\n     * zero by default.\n     *\n     * This value changes when {approve} or {transferFrom} are called.\n     */\n    function allowance(address owner, address spender) external view returns (uint256);\n\n    /**\n     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\n     * caller's tokens.\n     *\n     * Returns a boolean value indicating whether the operation succeeded.\n     *\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\n     * that someone may use both the old and the new allowance by unfortunate\n     * transaction ordering. One possible solution to mitigate this race\n     * condition is to first reduce the spender's allowance to 0 and set the\n     * desired value afterwards:\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n     *\n     * Emits an {Approval} event.\n     */\n    function approve(address spender, uint256 value) external returns (bool);\n\n    /**\n     * @dev Moves a `value` amount of tokens from `from` to `to` using the\n     * allowance mechanism. `value` is then deducted from the caller's\n     * allowance.\n     *\n     * Returns a boolean value indicating whether the operation succeeded.\n     *\n     * Emits a {Transfer} event.\n     */\n    function transferFrom(address from, address to, uint256 value) external returns (bool);\n}\n"},"@openzeppelin/contracts/utils/Address.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/Address.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Collection of functions related to the address type\n */\nlibrary Address {\n    /**\n     * @dev The ETH balance of the account is not enough to perform the operation.\n     */\n    error AddressInsufficientBalance(address account);\n\n    /**\n     * @dev There's no code at `target` (it is not a contract).\n     */\n    error AddressEmptyCode(address target);\n\n    /**\n     * @dev A call to an address target failed. The target may have reverted.\n     */\n    error FailedInnerCall();\n\n    /**\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n     * `recipient`, forwarding all available gas and reverting on errors.\n     *\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\n     * imposed by `transfer`, making them unable to receive funds via\n     * `transfer`. {sendValue} removes this limitation.\n     *\n     * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n     *\n     * IMPORTANT: because control is transferred to `recipient`, care must be\n     * taken to not create reentrancy vulnerabilities. Consider using\n     * {ReentrancyGuard} or the\n     * https://solidity.readthedocs.io/en/v0.8.20/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\n     */\n    function sendValue(address payable recipient, uint256 amount) internal {\n        if (address(this).balance < amount) {\n            revert AddressInsufficientBalance(address(this));\n        }\n\n        (bool success, ) = recipient.call{value: amount}(\"\");\n        if (!success) {\n            revert FailedInnerCall();\n        }\n    }\n\n    /**\n     * @dev Performs a Solidity function call using a low level `call`. A\n     * plain `call` is an unsafe replacement for a function call: use this\n     * function instead.\n     *\n     * If `target` reverts with a revert reason or custom error, it is bubbled\n     * up by this function (like regular Solidity function calls). However, if\n     * the call reverted with no returned reason, this function reverts with a\n     * {FailedInnerCall} error.\n     *\n     * Returns the raw returned data. To convert to the expected return value,\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n     *\n     * Requirements:\n     *\n     * - `target` must be a contract.\n     * - calling `target` with `data` must not revert.\n     */\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\n        return functionCallWithValue(target, data, 0);\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n     * but also transferring `value` wei to `target`.\n     *\n     * Requirements:\n     *\n     * - the calling contract must have an ETH balance of at least `value`.\n     * - the called Solidity function must be `payable`.\n     */\n    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\n        if (address(this).balance < value) {\n            revert AddressInsufficientBalance(address(this));\n        }\n        (bool success, bytes memory returndata) = target.call{value: value}(data);\n        return verifyCallResultFromTarget(target, success, returndata);\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n     * but performing a static call.\n     */\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\n        (bool success, bytes memory returndata) = target.staticcall(data);\n        return verifyCallResultFromTarget(target, success, returndata);\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n     * but performing a delegate call.\n     */\n    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\n        (bool success, bytes memory returndata) = target.delegatecall(data);\n        return verifyCallResultFromTarget(target, success, returndata);\n    }\n\n    /**\n     * @dev Tool to verify that a low level call to smart-contract was successful, and reverts if the target\n     * was not a contract or bubbling up the revert reason (falling back to {FailedInnerCall}) in case of an\n     * unsuccessful call.\n     */\n    function verifyCallResultFromTarget(\n        address target,\n        bool success,\n        bytes memory returndata\n    ) internal view returns (bytes memory) {\n        if (!success) {\n            _revert(returndata);\n        } else {\n            // only check if target is a contract if the call was successful and the return data is empty\n            // otherwise we already know that it was a contract\n            if (returndata.length == 0 && target.code.length == 0) {\n                revert AddressEmptyCode(target);\n            }\n            return returndata;\n        }\n    }\n\n    /**\n     * @dev Tool to verify that a low level call was successful, and reverts if it wasn't, either by bubbling the\n     * revert reason or with a default {FailedInnerCall} error.\n     */\n    function verifyCallResult(bool success, bytes memory returndata) internal pure returns (bytes memory) {\n        if (!success) {\n            _revert(returndata);\n        } else {\n            return returndata;\n        }\n    }\n\n    /**\n     * @dev Reverts with returndata if present. Otherwise reverts with {FailedInnerCall}.\n     */\n    function _revert(bytes memory returndata) private pure {\n        // Look for revert reason and bubble it up if present\n        if (returndata.length > 0) {\n            // The easiest way to bubble the revert reason is using memory via assembly\n            /// @solidity memory-safe-assembly\n            assembly {\n                let returndata_size := mload(returndata)\n                revert(add(32, returndata), returndata_size)\n            }\n        } else {\n            revert FailedInnerCall();\n        }\n    }\n}\n"},"@openzeppelin/contracts/utils/StorageSlot.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/StorageSlot.sol)\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Library for reading and writing primitive types to specific storage slots.\n *\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\n * This library helps with reading and writing to such slots without the need for inline assembly.\n *\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\n *\n * Example usage to set ERC1967 implementation slot:\n * ```solidity\n * contract ERC1967 {\n *     bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n *\n *     function _getImplementation() internal view returns (address) {\n *         return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\n *     }\n *\n *     function _setImplementation(address newImplementation) internal {\n *         require(newImplementation.code.length > 0);\n *         StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\n *     }\n * }\n * ```\n */\nlibrary StorageSlot {\n    struct AddressSlot {\n        address value;\n    }\n\n    struct BooleanSlot {\n        bool value;\n    }\n\n    struct Bytes32Slot {\n        bytes32 value;\n    }\n\n    struct Uint256Slot {\n        uint256 value;\n    }\n\n    struct StringSlot {\n        string value;\n    }\n\n    struct BytesSlot {\n        bytes value;\n    }\n\n    /**\n     * @dev Returns an `AddressSlot` with member `value` located at `slot`.\n     */\n    function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\n        /// @solidity memory-safe-assembly\n        assembly {\n            r.slot := slot\n        }\n    }\n\n    /**\n     * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\n     */\n    function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\n        /// @solidity memory-safe-assembly\n        assembly {\n            r.slot := slot\n        }\n    }\n\n    /**\n     * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\n     */\n    function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\n        /// @solidity memory-safe-assembly\n        assembly {\n            r.slot := slot\n        }\n    }\n\n    /**\n     * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\n     */\n    function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\n        /// @solidity memory-safe-assembly\n        assembly {\n            r.slot := slot\n        }\n    }\n\n    /**\n     * @dev Returns an `StringSlot` with member `value` located at `slot`.\n     */\n    function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\n        /// @solidity memory-safe-assembly\n        assembly {\n            r.slot := slot\n        }\n    }\n\n    /**\n     * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\n     */\n    function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\n        /// @solidity memory-safe-assembly\n        assembly {\n            r.slot := store.slot\n        }\n    }\n\n    /**\n     * @dev Returns an `BytesSlot` with member `value` located at `slot`.\n     */\n    function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\n        /// @solidity memory-safe-assembly\n        assembly {\n            r.slot := slot\n        }\n    }\n\n    /**\n     * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\n     */\n    function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\n        /// @solidity memory-safe-assembly\n        assembly {\n            r.slot := store.slot\n        }\n    }\n}\n"},"contracts/interfaces/IBaluniV1Oracle.sol":{"content":"// SPDX-License-Identifier: GNU AGPLv3\r\npragma solidity 0.8.25;\r\n\r\ninterface IBaluniV1Oracle {\r\n    function convert(address fromToken, address toToken, uint256 amount) external view returns (uint256 valuation);\r\n\r\n    function convertScaled(\r\n        address fromToken,\r\n        address toToken,\r\n        uint256 amount\r\n    ) external view returns (uint256 valuation);\r\n}\r\n"},"contracts/interfaces/IBaluniV1Registry.sol":{"content":"// SPDX-License-Identifier: GNU AGPLv3\r\npragma solidity 0.8.25;\r\n\r\n/**\r\n * @title IBaluniV1Registry\r\n * @dev Interface for the BaluniV1Registry contract.\r\n */\r\ninterface IBaluniV1Registry {\r\n    function setUniswapFactory(address _uniswapFactory) external;\r\n\r\n    function setUniswapRouter(address _uniswapRouter) external;\r\n\r\n    function setUniswapQuoter(address _uniswapQuoter) external;\r\n\r\n    function setBaluniAgentFactory(address _baluniAgentFactory) external;\r\n\r\n    function setBaluniPoolPeriphery(address _baluniPoolPeriphery) external;\r\n\r\n    function setBaluniSwapper(address _baluniSwapper) external;\r\n\r\n    function setBaluniOracle(address _baluniOracle) external;\r\n\r\n    function setBaluniPoolRegistry(address _baluniPoolRegistry) external;\r\n\r\n    function setBaluniDCAVaultRegistry(address _baluniPoolRegistry) external;\r\n\r\n    function setBaluniRebalancer(address _baluniRebalancer) external;\r\n\r\n    function setBaluniRouter(address _baluniRouter) external;\r\n\r\n    function setBaluniRegistry(address _baluniRegistry) external;\r\n\r\n    function setWNATIVE(address _WNATIVE) external;\r\n\r\n    function setUSDC(address _USDC) external;\r\n\r\n    function setREBALANCE_THRESHOLD(uint256 _REBALANCE_THRESHOLD) external;\r\n\r\n    function setTreasury(address _treasury) external;\r\n\r\n    function set1inchSpotAgg(address __1inchSpotAgg) external;\r\n\r\n    function setBPS_FEE(uint256 __BPS_FEE) external;\r\n\r\n    function setBaluniYearnVaultRegistry(address _baluniYearnVaultRegistry) external;\r\n\r\n    function setBaluniPoolZap(address _baluniPoolZap) external;\r\n\r\n    function setBaluniHyperPoolZap(address _baluniHyperPoolZap) external;\r\n\r\n    function getUniswapQuoter() external view returns (address);\r\n\r\n    function getUniswapFactory() external view returns (address);\r\n\r\n    function getUniswapRouter() external view returns (address);\r\n\r\n    function getBaluniSwapper() external view returns (address);\r\n\r\n    function getBaluniOracle() external view returns (address);\r\n\r\n    function getBaluniAgentFactory() external view returns (address);\r\n\r\n    function getBaluniPoolPeriphery() external view returns (address);\r\n\r\n    function getBaluniDCAVaultRegistry() external view returns (address);\r\n\r\n    function getBaluniPoolRegistry() external view returns (address);\r\n\r\n    function getBaluniRebalancer() external view returns (address);\r\n\r\n    function getBaluniRouter() external view returns (address);\r\n\r\n    function getBaluniRegistry() external view returns (address);\r\n\r\n    function getWNATIVE() external view returns (address);\r\n\r\n    function getUSDC() external view returns (address);\r\n\r\n    function get1inchSpotAgg() external view returns (address);\r\n\r\n    function getBPS_FEE() external view returns (uint256);\r\n\r\n    function getMAX_BPS_FEE() external view returns (uint256);\r\n\r\n    function getBPS_BASE() external view returns (uint256);\r\n\r\n    function getREBALANCE_THRESHOLD() external view returns (uint256);\r\n\r\n    function getTreasury() external view returns (address);\r\n\r\n    function setStaticOracle(address _staticOracle) external;\r\n\r\n    function getStaticOracle() external view returns (address);\r\n\r\n    function getBaluniYearnVaultRegistry() external view returns (address);\r\n\r\n    function getBaluniPoolZap() external view returns (address);\r\n\r\n    function getBaluniHyperPoolZap() external view returns (address);\r\n}\r\n"},"contracts/interfaces/IBaluniV1Swapper.sol":{"content":"// SPDX-License-Identifier: GNU AGPLv3\r\npragma solidity 0.8.25;\r\n\r\ninterface IBaluniV1Swapper {\r\n    function singleSwap(\r\n        address token0,\r\n        address token1,\r\n        uint256 amount,\r\n        address receiver\r\n    ) external returns (uint256 amountOut);\r\n    function multiHopSwap(\r\n        address token0,\r\n        address token1,\r\n        address token2,\r\n        uint256 amount,\r\n        address receiver\r\n    ) external returns (uint256 amountOut);\r\n}\r\n"},"contracts/interfaces/IBaluniV1YearnVault.sol":{"content":"// SPDX-License-Identifier: GNU AGPLv3\r\npragma solidity 0.8.25;\r\n\r\ninterface IBaluniV1YearnVault {\r\n    function baseAsset() external view returns (address);\r\n    function yearnVault() external view returns (address);\r\n    function quoteAsset() external view returns (address);\r\n    function registry() external view returns (address);\r\n    function lastDeposit() external view returns (uint256);\r\n    function deposit(uint256 amount, address to) external;\r\n    function withdraw(uint256 shares, address to) external;\r\n    function buy() external;\r\n    function pause() external;\r\n    function unpause() external;\r\n    function totalValuation() external view returns (uint256);\r\n    function unitPrice() external view returns (uint256);\r\n    function interestEarned() external view returns (uint256);\r\n}\r\n"},"contracts/interfaces/IYearnVault.sol":{"content":"// SPDX-License-Identifier: MIT\r\npragma solidity ^0.8.0;\r\n\r\ninterface IYearnVault {\r\n    function asset() external view returns (address);\r\n\r\n    function balanceOf(address owner) external view returns (uint256);\r\n\r\n    function maxDeposit(address receiver) external view returns (uint256);\r\n\r\n    function redeem(uint256 shares, address receiver, address owner) external returns (uint256);\r\n\r\n    function deposit(uint256 assets, address receiver) external returns (uint256);\r\n\r\n    function totalAssets() external view returns (uint256);\r\n\r\n    function convertToAssets(uint256 shares) external view returns (uint256);\r\n\r\n    function convertToShares(uint256 assets) external view returns (uint256);\r\n\r\n    function previewWithdraw(uint256 assets) external view returns (uint256);\r\n\r\n    function maxRedeem(address owner) external view returns (uint256);\r\n}\r\n"},"contracts/vaults/BaluniV1YearnVault.sol":{"content":"// SPDX-License-Identifier: GNU AGPLv3\r\npragma solidity 0.8.25;\r\n\r\nimport '@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol';\r\nimport '@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol';\r\nimport '@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol';\r\nimport '@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol';\r\nimport '@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol';\r\nimport '@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol';\r\n\r\nimport '../interfaces/IBaluniV1Registry.sol';\r\nimport '../interfaces/IYearnVault.sol';\r\nimport '../interfaces/IBaluniV1Swapper.sol';\r\nimport '../interfaces/IBaluniV1Oracle.sol';\r\nimport '../interfaces/IBaluniV1YearnVault.sol';\r\n\r\ncontract BaluniV1YearnVault is\r\n    Initializable,\r\n    UUPSUpgradeable,\r\n    OwnableUpgradeable,\r\n    ERC20Upgradeable,\r\n    ReentrancyGuardUpgradeable,\r\n    PausableUpgradeable,\r\n    IBaluniV1YearnVault\r\n{\r\n    address public baseAsset;\r\n    IYearnVault private _yearnVault;\r\n    address public quoteAsset;\r\n    IBaluniV1Registry private _registry;\r\n\r\n    uint256 public accumulatedAssetB;\r\n    uint256 public lastDeposit;\r\n    uint256 public allTimeInterest;\r\n\r\n    event Buy(address indexed sender, uint256 amount, uint256 interest);\r\n\r\n    function initialize(\r\n        string memory _name,\r\n        string memory _symbol,\r\n        address _assetA,\r\n        address _yearnVaultAddress,\r\n        address _assetB,\r\n        address _registryAddress\r\n    ) external initializer {\r\n        __Ownable_init(msg.sender);\r\n        __ERC20_init(_name, _symbol);\r\n        __UUPSUpgradeable_init();\r\n        __ReentrancyGuard_init();\r\n        __Pausable_init();\r\n\r\n        baseAsset = _assetA;\r\n        _yearnVault = IYearnVault(_yearnVaultAddress);\r\n        quoteAsset = _assetB;\r\n        _registry = IBaluniV1Registry(_registryAddress);\r\n\r\n        require(baseAsset != address(0), 'Invalid assetA address');\r\n        require(address(_yearnVault) != address(0), 'Invalid Yearn Vault address');\r\n        require(quoteAsset != address(0), 'Invalid assetB address');\r\n    }\r\n\r\n    function reinitialize(\r\n        string memory _name,\r\n        string memory _symbol,\r\n        address _assetA,\r\n        address _yearnVaultAddress,\r\n        address _assetB,\r\n        address _registryAddress,\r\n        uint64 _version\r\n    ) external reinitializer(_version) {\r\n        __Ownable_init(msg.sender);\r\n        __ERC20_init(_name, _symbol);\r\n        __UUPSUpgradeable_init();\r\n        __ReentrancyGuard_init();\r\n        __Pausable_init();\r\n\r\n        baseAsset = _assetA;\r\n        _yearnVault = IYearnVault(_yearnVaultAddress);\r\n        quoteAsset = _assetB;\r\n        _registry = IBaluniV1Registry(_registryAddress);\r\n\r\n        require(baseAsset != address(0), 'Invalid assetA address');\r\n        require(address(_yearnVault) != address(0), 'Invalid Yearn Vault address');\r\n        require(quoteAsset != address(0), 'Invalid assetB address');\r\n    }\r\n\r\n    function _authorizeUpgrade(address newImplementation) internal override onlyOwner {}\r\n\r\n    function deposit(uint256 amount, address to) external override nonReentrant whenNotPaused {\r\n        require(amount > 0, 'Amount must be greater than zero');\r\n\r\n        _processInterest();\r\n\r\n        IERC20(baseAsset).transferFrom(msg.sender, address(this), amount);\r\n\r\n        address baluniRouter = _registry.getBaluniRouter();\r\n        address treasury = _registry.getTreasury();\r\n\r\n        uint hairCut = _haircut(amount);\r\n        uint hairCut2 = _haircut(hairCut);\r\n\r\n        IERC20(baseAsset).transfer(baluniRouter, hairCut - hairCut2);\r\n        IERC20(baseAsset).transfer(treasury, hairCut2);\r\n\r\n        uint256 amountAfter = amount - hairCut;\r\n\r\n        IERC20(baseAsset).approve(address(_yearnVault), amountAfter);\r\n        _yearnVault.deposit(amountAfter, address(this));\r\n\r\n        uint8 baseDecimal = IERC20Metadata(baseAsset).decimals();\r\n        uint8 yearnDecimal = IERC20Metadata(address(_yearnVault)).decimals();\r\n\r\n        if (baseDecimal > yearnDecimal) {\r\n            amountAfter = amountAfter / 10 ** (baseDecimal - yearnDecimal);\r\n        } else {\r\n            amountAfter = amountAfter * 10 ** (yearnDecimal - baseDecimal);\r\n        }\r\n\r\n        uint256 amountScaled = amountAfter * 10 ** (18 - yearnDecimal);\r\n\r\n        _mint(to, amountScaled);\r\n\r\n        lastDeposit = _yearnVault.convertToAssets(_yearnVault.balanceOf(address(this)));\r\n\r\n        accumulatedAssetB = IERC20(quoteAsset).balanceOf(address(this));\r\n    }\r\n\r\n    function _buy() internal {\r\n        uint256 totalAssets = _yearnVault.convertToAssets(_yearnVault.balanceOf(address(this)));\r\n        uint256 interest = totalAssets > lastDeposit ? totalAssets - lastDeposit : 0;\r\n        require(interest > 0, 'BaluniV1yVault: No interest available');\r\n\r\n        uint256 sharesToRedeem = _yearnVault.convertToShares(interest);\r\n        uint256 amountOut = _yearnVault.redeem(sharesToRedeem, address(this), address(this));\r\n\r\n        require(amountOut > 0, 'BaluniV1yVault: Redeem Failed');\r\n\r\n        IBaluniV1Swapper swapper = IBaluniV1Swapper(_registry.getBaluniSwapper());\r\n\r\n        IERC20(baseAsset).approve(address(swapper), amountOut);\r\n\r\n        swapper.singleSwap(baseAsset, quoteAsset, amountOut, address(this));\r\n\r\n        emit Buy(msg.sender, amountOut, interest);\r\n    }\r\n\r\n    function buy() external override nonReentrant whenNotPaused {\r\n        _buy();\r\n    }\r\n\r\n    function _processInterest() internal {\r\n        uint256 totalAssets = _yearnVault.convertToAssets(_yearnVault.balanceOf(address(this)));\r\n        uint256 interest = totalAssets > lastDeposit ? totalAssets - lastDeposit : 0;\r\n        uint8 baseDecimal = IERC20Metadata(baseAsset).decimals();\r\n        uint limit = 1 * 10 ** (baseDecimal - 2);\r\n        if (interest > limit) {\r\n            _buy();\r\n        }\r\n\r\n        accumulatedAssetB = IERC20(quoteAsset).balanceOf(address(this));\r\n    }\r\n\r\n    function pause() external override onlyOwner {\r\n        _pause();\r\n    }\r\n\r\n    function unpause() external override onlyOwner {\r\n        _unpause();\r\n    }\r\n\r\n    function totalValuation() public view override returns (uint256) {\r\n        IBaluniV1Oracle oracle = IBaluniV1Oracle(_registry.getBaluniOracle());\r\n        address USDC = _registry.getUSDC();\r\n        uint256 valuation = 0;\r\n\r\n        uint yearnBalance = _yearnVault.balanceOf(address(this));\r\n        uint yearnBalanceConvert = _yearnVault.convertToAssets(yearnBalance);\r\n        uint balanceQuote = IERC20(quoteAsset).balanceOf(address(this));\r\n\r\n        if (baseAsset != USDC) valuation += oracle.convert(baseAsset, USDC, yearnBalanceConvert);\r\n        valuation += oracle.convert(quoteAsset, baseAsset, balanceQuote);\r\n        valuation += yearnBalanceConvert;\r\n\r\n        uint256 interest = interestEarned();\r\n\r\n        if (baseAsset != USDC) valuation += oracle.convert(baseAsset, USDC, interest);\r\n\r\n        valuation += interest;\r\n\r\n        return valuation;\r\n    }\r\n\r\n    function unitPrice() external view override returns (uint256) {\r\n        if (totalSupply() == 0) return 0;\r\n        address USDC = _registry.getUSDC();\r\n        uint8 decimals = IERC20Metadata(USDC).decimals();\r\n        uint256 factor = 10 ** (18 - decimals);\r\n        uint256 valuationScaledUp = totalValuation() * factor;\r\n        uint256 unitPriceScaled = (valuationScaledUp * 1e18) / totalSupply();\r\n        return unitPriceScaled;\r\n    }\r\n\r\n    function registry() external view override returns (address) {\r\n        return address(_registry);\r\n    }\r\n\r\n    function yearnVault() external view override returns (address) {\r\n        return address(_yearnVault);\r\n    }\r\n\r\n    function _haircut(uint256 amount) internal view returns (uint256) {\r\n        uint256 _BPS_FEE = _registry.getBPS_FEE();\r\n        uint256 _BPS_BASE = _registry.getBPS_BASE();\r\n        return (amount * _BPS_FEE) / _BPS_BASE;\r\n    }\r\n\r\n    function interestEarned() public view override returns (uint256) {\r\n        uint256 totalAssets = _yearnVault.convertToAssets(_yearnVault.balanceOf(address(this)));\r\n        uint256 interest = totalAssets > lastDeposit ? totalAssets - lastDeposit : 0;\r\n        return interest;\r\n    }\r\n\r\n    function withdraw(uint256 shares, address to) external override nonReentrant whenNotPaused {\r\n        require(shares > 0, 'Shares must be greater than zero');\r\n        require(balanceOf(msg.sender) >= shares, 'Insufficient balance');\r\n        require(totalSupply() > 0, \"Total supply cannot be zero\");\r\n\r\n        uint8 yearnDecimal = IERC20Metadata(address(_yearnVault)).decimals();\r\n        uint8 quoteDecimal = IERC20Metadata(quoteAsset).decimals();\r\n        \r\n        // Ottieni i saldi\r\n        uint256 balanceYearnVault = _yearnVault.balanceOf(address(this));\r\n        uint256 quoteBalance = IERC20(quoteAsset).balanceOf(address(this));\r\n        uint256 baseBalance = IERC20(baseAsset).balanceOf(address(this));\r\n\r\n        // Verifica che la moltiplicazione non causi overflow\r\n        require(balanceYearnVault <= type(uint256).max / (10 ** (18 - yearnDecimal)), \r\n            \"YearnVault balance scaling would overflow\");\r\n        require(quoteBalance <= type(uint256).max / (10 ** (18 - quoteDecimal)), \r\n            \"Quote balance scaling would overflow\");\r\n\r\n        // Scala i saldi\r\n        balanceYearnVault *= 10 ** (18 - yearnDecimal);\r\n        quoteBalance *= 10 ** (18 - quoteDecimal);\r\n\r\n        // Verifica che shares non causi overflow nella moltiplicazione\r\n        require(shares <= type(uint256).max / balanceYearnVault, \"Shares calculation would overflow\");\r\n        require(shares <= type(uint256).max / quoteBalance, \"Shares calculation would overflow\");\r\n\r\n        // Calcola gli importi da prelevare\r\n        uint256 withdrawAmountA = (shares * balanceYearnVault) / totalSupply();\r\n        uint256 withdrawAmountB = (shares * quoteBalance) / totalSupply();\r\n\r\n        _burn(msg.sender, shares);\r\n\r\n        // Riscala gli importi\r\n        withdrawAmountA /= 10 ** (18 - yearnDecimal);\r\n        withdrawAmountB /= 10 ** (18 - quoteDecimal);\r\n\r\n        // Verifica che ci siano abbastanza asset nel yearnVault\r\n        require(withdrawAmountA <= _yearnVault.convertToAssets(balanceYearnVault), \r\n            \"Insufficient assets in Yearn Vault\");\r\n\r\n        _yearnVault.redeem(withdrawAmountA, address(this), address(this));\r\n\r\n        uint256 baseBalanceAfter = IERC20(baseAsset).balanceOf(address(this));\r\n        require(baseBalanceAfter >= baseBalance, \"Base balance check failed\");\r\n        uint256 amountToSend = baseBalanceAfter - baseBalance;\r\n        address receiver = to;\r\n\r\n        if (amountToSend > 0) {\r\n            uint256 hairCut = _haircut(amountToSend);\r\n            require(hairCut <= amountToSend, \"Haircut exceeds amount\");\r\n            \r\n            uint256 amountAfterHaircut = amountToSend - hairCut;\r\n            uint256 hairCut2 = _haircut(hairCut);\r\n            require(hairCut2 <= hairCut, \"Secondary haircut exceeds primary haircut\");\r\n            \r\n            address baluniRouter = _registry.getBaluniRouter();\r\n            address treasury = _registry.getTreasury();\r\n            \r\n            IERC20(baseAsset).transfer(receiver, amountToSend - hairCut);\r\n            IERC20(baseAsset).transfer(baluniRouter, hairCut - hairCut2);\r\n            IERC20(baseAsset).transfer(treasury, hairCut2);\r\n        }\r\n\r\n        if (withdrawAmountB > 0) {\r\n            bool success = _handleWithdrawB(withdrawAmountB, receiver);\r\n            require(success, \"Failed to transfer quoteAsset\");\r\n        }\r\n\r\n        lastDeposit = _yearnVault.convertToAssets(_yearnVault.balanceOf(address(this)));\r\n    }\r\n\r\n    function _handleWithdrawB(uint256 withdrawAmountB, address receiver) internal returns (bool) {\r\n        require(withdrawAmountB <= IERC20(quoteAsset).balanceOf(address(this)), \r\n            \"Insufficient quote asset balance\");\r\n        \r\n        uint256 hairCut = _haircut(withdrawAmountB);\r\n        require(hairCut <= withdrawAmountB, \"Haircut exceeds withdrawal amount\");\r\n        \r\n        uint256 amountAfterHaircut = withdrawAmountB - hairCut;\r\n        uint256 hairCut2 = _haircut(hairCut);\r\n        require(hairCut2 <= hairCut, \"Secondary haircut exceeds primary haircut\");\r\n        \r\n        address baluniRouter = _registry.getBaluniRouter();\r\n        address treasury = _registry.getTreasury();\r\n        \r\n        IERC20(quoteAsset).transfer(receiver, amountAfterHaircut);\r\n        IERC20(quoteAsset).transfer(baluniRouter, hairCut - hairCut2);\r\n        IERC20(quoteAsset).transfer(treasury, hairCut2);\r\n        \r\n        return true;\r\n    }\r\n}\r\n"}},"settings":{"optimizer":{"enabled":false,"runs":20000},"viaIR":true,"evmVersion":"cancun","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata","devdoc","userdoc","storageLayout","evm.gasEstimates","devdoc","userdoc"],"":["ast"]}},"metadata":{"useLiteralContent":true}}},"output":{"errors":[{"component":"general","errorCode":"2072","formattedMessage":"Warning: Unused local variable.\n   --> contracts/vaults/BaluniV1YearnVault.sol:274:13:\n    |\n274 |             uint256 amountAfterHaircut = amountToSend - hairCut;\n    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n","message":"Unused local variable.","severity":"warning","sourceLocation":{"end":10847,"file":"contracts/vaults/BaluniV1YearnVault.sol","start":10821},"type":"Warning"},{"component":"general","errorCode":"5574","formattedMessage":"Warning: Contract code size is 27762 bytes and exceeds 24576 bytes (a limit introduced in Spurious Dragon). This contract may not be deployable on Mainnet. Consider enabling the optimizer (with a low \"runs\" value!), turning off revert strings, or using libraries.\n  --> contracts/vaults/BaluniV1YearnVault.sol:17:1:\n   |\n17 | contract BaluniV1YearnVault is\n   | ^ (Relevant source part starts here and spans across multiple lines).\n\n","message":"Contract code size is 27762 bytes and exceeds 24576 bytes (a limit introduced in Spurious Dragon). This contract may not be deployable on Mainnet. Consider enabling the optimizer (with a low \"runs\" value!), turning off revert strings, or using libraries.","severity":"warning","sourceLocation":{"end":12630,"file":"contracts/vaults/BaluniV1YearnVault.sol","start":773},"type":"Warning"}],"sources":{"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol","exportedSymbols":{"ContextUpgradeable":[1293],"Initializable":[448],"OwnableUpgradeable":[194]},"id":195,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"102:24:0"},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol","file":"../utils/ContextUpgradeable.sol","id":3,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":195,"sourceUnit":1294,"src":"128:67:0","symbolAliases":[{"foreign":{"id":2,"name":"ContextUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1293,"src":"136:18:0","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"../proxy/utils/Initializable.sol","id":5,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":195,"sourceUnit":449,"src":"196:63:0","symbolAliases":[{"foreign":{"id":4,"name":"Initializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":448,"src":"204:13:0","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":7,"name":"Initializable","nameLocations":["789:13:0"],"nodeType":"IdentifierPath","referencedDeclaration":448,"src":"789:13:0"},"id":8,"nodeType":"InheritanceSpecifier","src":"789:13:0"},{"baseName":{"id":9,"name":"ContextUpgradeable","nameLocations":["804:18:0"],"nodeType":"IdentifierPath","referencedDeclaration":1293,"src":"804:18:0"},"id":10,"nodeType":"InheritanceSpecifier","src":"804:18:0"}],"canonicalName":"OwnableUpgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":6,"nodeType":"StructuredDocumentation","src":"261:487:0","text":" @dev Contract module which provides a basic access control mechanism, where\n there is an account (an owner) that can be granted exclusive access to\n specific functions.\n The initial owner is set to the address provided by the deployer. This can\n later be changed with {transferOwnership}.\n This module is used through inheritance. It will make available the modifier\n `onlyOwner`, which can be applied to your functions to restrict their use to\n the owner."},"fullyImplemented":true,"id":194,"linearizedBaseContracts":[194,1293,448],"name":"OwnableUpgradeable","nameLocation":"767:18:0","nodeType":"ContractDefinition","nodes":[{"canonicalName":"OwnableUpgradeable.OwnableStorage","documentation":{"id":11,"nodeType":"StructuredDocumentation","src":"829:65:0","text":"@custom:storage-location erc7201:openzeppelin.storage.Ownable"},"id":14,"members":[{"constant":false,"id":13,"mutability":"mutable","name":"_owner","nameLocation":"939:6:0","nodeType":"VariableDeclaration","scope":14,"src":"931:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12,"name":"address","nodeType":"ElementaryTypeName","src":"931:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"name":"OwnableStorage","nameLocation":"906:14:0","nodeType":"StructDefinition","scope":194,"src":"899:53:0","visibility":"public"},{"constant":true,"id":17,"mutability":"constant","name":"OwnableStorageLocation","nameLocation":"1094:22:0","nodeType":"VariableDeclaration","scope":194,"src":"1069:116:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1069:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307839303136643039643732643430666461653266643863656163366236323334633737303632313466643339633163643165363039613035323863313939333030","id":16,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1119:66:0","typeDescriptions":{"typeIdentifier":"t_rational_65173360639460082030725920392146925864023520599682862633725751242436743107328_by_1","typeString":"int_const 6517...(69 digits omitted)...7328"},"value":"0x9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300"},"visibility":"private"},{"body":{"id":24,"nodeType":"Block","src":"1270:81:0","statements":[{"AST":{"nativeSrc":"1289:56:0","nodeType":"YulBlock","src":"1289:56:0","statements":[{"nativeSrc":"1303:32:0","nodeType":"YulAssignment","src":"1303:32:0","value":{"name":"OwnableStorageLocation","nativeSrc":"1313:22:0","nodeType":"YulIdentifier","src":"1313:22:0"},"variableNames":[{"name":"$.slot","nativeSrc":"1303:6:0","nodeType":"YulIdentifier","src":"1303:6:0"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":21,"isOffset":false,"isSlot":true,"src":"1303:6:0","suffix":"slot","valueSize":1},{"declaration":17,"isOffset":false,"isSlot":false,"src":"1313:22:0","valueSize":1}],"id":23,"nodeType":"InlineAssembly","src":"1280:65:0"}]},"id":25,"implemented":true,"kind":"function","modifiers":[],"name":"_getOwnableStorage","nameLocation":"1201:18:0","nodeType":"FunctionDefinition","parameters":{"id":18,"nodeType":"ParameterList","parameters":[],"src":"1219:2:0"},"returnParameters":{"id":22,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21,"mutability":"mutable","name":"$","nameLocation":"1267:1:0","nodeType":"VariableDeclaration","scope":25,"src":"1244:24:0","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_OwnableStorage_$14_storage_ptr","typeString":"struct OwnableUpgradeable.OwnableStorage"},"typeName":{"id":20,"nodeType":"UserDefinedTypeName","pathNode":{"id":19,"name":"OwnableStorage","nameLocations":["1244:14:0"],"nodeType":"IdentifierPath","referencedDeclaration":14,"src":"1244:14:0"},"referencedDeclaration":14,"src":"1244:14:0","typeDescriptions":{"typeIdentifier":"t_struct$_OwnableStorage_$14_storage_ptr","typeString":"struct OwnableUpgradeable.OwnableStorage"}},"visibility":"internal"}],"src":"1243:26:0"},"scope":194,"src":"1192:159:0","stateMutability":"pure","virtual":false,"visibility":"private"},{"documentation":{"id":26,"nodeType":"StructuredDocumentation","src":"1357:85:0","text":" @dev The caller account is not authorized to perform an operation."},"errorSelector":"118cdaa7","id":30,"name":"OwnableUnauthorizedAccount","nameLocation":"1453:26:0","nodeType":"ErrorDefinition","parameters":{"id":29,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28,"mutability":"mutable","name":"account","nameLocation":"1488:7:0","nodeType":"VariableDeclaration","scope":30,"src":"1480:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":27,"name":"address","nodeType":"ElementaryTypeName","src":"1480:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1479:17:0"},"src":"1447:50:0"},{"documentation":{"id":31,"nodeType":"StructuredDocumentation","src":"1503:82:0","text":" @dev The owner is not a valid owner account. (eg. `address(0)`)"},"errorSelector":"1e4fbdf7","id":35,"name":"OwnableInvalidOwner","nameLocation":"1596:19:0","nodeType":"ErrorDefinition","parameters":{"id":34,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33,"mutability":"mutable","name":"owner","nameLocation":"1624:5:0","nodeType":"VariableDeclaration","scope":35,"src":"1616:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":32,"name":"address","nodeType":"ElementaryTypeName","src":"1616:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1615:15:0"},"src":"1590:41:0"},{"anonymous":false,"eventSelector":"8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","id":41,"name":"OwnershipTransferred","nameLocation":"1643:20:0","nodeType":"EventDefinition","parameters":{"id":40,"nodeType":"ParameterList","parameters":[{"constant":false,"id":37,"indexed":true,"mutability":"mutable","name":"previousOwner","nameLocation":"1680:13:0","nodeType":"VariableDeclaration","scope":41,"src":"1664:29:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":36,"name":"address","nodeType":"ElementaryTypeName","src":"1664:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":39,"indexed":true,"mutability":"mutable","name":"newOwner","nameLocation":"1711:8:0","nodeType":"VariableDeclaration","scope":41,"src":"1695:24:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":38,"name":"address","nodeType":"ElementaryTypeName","src":"1695:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1663:57:0"},"src":"1637:84:0"},{"body":{"id":53,"nodeType":"Block","src":"1919:55:0","statements":[{"expression":{"arguments":[{"id":50,"name":"initialOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44,"src":"1954:12:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":49,"name":"__Ownable_init_unchained","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81,"src":"1929:24:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":51,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1929:38:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":52,"nodeType":"ExpressionStatement","src":"1929:38:0"}]},"documentation":{"id":42,"nodeType":"StructuredDocumentation","src":"1727:115:0","text":" @dev Initializes the contract setting the address provided by the deployer as the initial owner."},"id":54,"implemented":true,"kind":"function","modifiers":[{"id":47,"kind":"modifierInvocation","modifierName":{"id":46,"name":"onlyInitializing","nameLocations":["1902:16:0"],"nodeType":"IdentifierPath","referencedDeclaration":357,"src":"1902:16:0"},"nodeType":"ModifierInvocation","src":"1902:16:0"}],"name":"__Ownable_init","nameLocation":"1856:14:0","nodeType":"FunctionDefinition","parameters":{"id":45,"nodeType":"ParameterList","parameters":[{"constant":false,"id":44,"mutability":"mutable","name":"initialOwner","nameLocation":"1879:12:0","nodeType":"VariableDeclaration","scope":54,"src":"1871:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":43,"name":"address","nodeType":"ElementaryTypeName","src":"1871:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1870:22:0"},"returnParameters":{"id":48,"nodeType":"ParameterList","parameters":[],"src":"1919:0:0"},"scope":194,"src":"1847:127:0","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":80,"nodeType":"Block","src":"2062:153:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":66,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":61,"name":"initialOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56,"src":"2076:12:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":64,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2100:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":63,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2092:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":62,"name":"address","nodeType":"ElementaryTypeName","src":"2092:7:0","typeDescriptions":{}}},"id":65,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2092:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2076:26:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":75,"nodeType":"IfStatement","src":"2072:95:0","trueBody":{"id":74,"nodeType":"Block","src":"2104:63:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":70,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2153:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":69,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2145:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":68,"name":"address","nodeType":"ElementaryTypeName","src":"2145:7:0","typeDescriptions":{}}},"id":71,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2145:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":67,"name":"OwnableInvalidOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35,"src":"2125:19:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":72,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2125:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":73,"nodeType":"RevertStatement","src":"2118:38:0"}]}},{"expression":{"arguments":[{"id":77,"name":"initialOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56,"src":"2195:12:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":76,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":193,"src":"2176:18:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":78,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2176:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":79,"nodeType":"ExpressionStatement","src":"2176:32:0"}]},"id":81,"implemented":true,"kind":"function","modifiers":[{"id":59,"kind":"modifierInvocation","modifierName":{"id":58,"name":"onlyInitializing","nameLocations":["2045:16:0"],"nodeType":"IdentifierPath","referencedDeclaration":357,"src":"2045:16:0"},"nodeType":"ModifierInvocation","src":"2045:16:0"}],"name":"__Ownable_init_unchained","nameLocation":"1989:24:0","nodeType":"FunctionDefinition","parameters":{"id":57,"nodeType":"ParameterList","parameters":[{"constant":false,"id":56,"mutability":"mutable","name":"initialOwner","nameLocation":"2022:12:0","nodeType":"VariableDeclaration","scope":81,"src":"2014:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":55,"name":"address","nodeType":"ElementaryTypeName","src":"2014:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2013:22:0"},"returnParameters":{"id":60,"nodeType":"ParameterList","parameters":[],"src":"2062:0:0"},"scope":194,"src":"1980:235:0","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":88,"nodeType":"Block","src":"2324:41:0","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":84,"name":"_checkOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":122,"src":"2334:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":85,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2334:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":86,"nodeType":"ExpressionStatement","src":"2334:13:0"},{"id":87,"nodeType":"PlaceholderStatement","src":"2357:1:0"}]},"documentation":{"id":82,"nodeType":"StructuredDocumentation","src":"2221:77:0","text":" @dev Throws if called by any account other than the owner."},"id":89,"name":"onlyOwner","nameLocation":"2312:9:0","nodeType":"ModifierDefinition","parameters":{"id":83,"nodeType":"ParameterList","parameters":[],"src":"2321:2:0"},"src":"2303:62:0","virtual":false,"visibility":"internal"},{"body":{"id":104,"nodeType":"Block","src":"2496:89:0","statements":[{"assignments":[97],"declarations":[{"constant":false,"id":97,"mutability":"mutable","name":"$","nameLocation":"2529:1:0","nodeType":"VariableDeclaration","scope":104,"src":"2506:24:0","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_OwnableStorage_$14_storage_ptr","typeString":"struct OwnableUpgradeable.OwnableStorage"},"typeName":{"id":96,"nodeType":"UserDefinedTypeName","pathNode":{"id":95,"name":"OwnableStorage","nameLocations":["2506:14:0"],"nodeType":"IdentifierPath","referencedDeclaration":14,"src":"2506:14:0"},"referencedDeclaration":14,"src":"2506:14:0","typeDescriptions":{"typeIdentifier":"t_struct$_OwnableStorage_$14_storage_ptr","typeString":"struct OwnableUpgradeable.OwnableStorage"}},"visibility":"internal"}],"id":100,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":98,"name":"_getOwnableStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25,"src":"2533:18:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_OwnableStorage_$14_storage_ptr_$","typeString":"function () pure returns (struct OwnableUpgradeable.OwnableStorage storage pointer)"}},"id":99,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2533:20:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_OwnableStorage_$14_storage_ptr","typeString":"struct OwnableUpgradeable.OwnableStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"2506:47:0"},{"expression":{"expression":{"id":101,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":97,"src":"2570:1:0","typeDescriptions":{"typeIdentifier":"t_struct$_OwnableStorage_$14_storage_ptr","typeString":"struct OwnableUpgradeable.OwnableStorage storage pointer"}},"id":102,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2572:6:0","memberName":"_owner","nodeType":"MemberAccess","referencedDeclaration":13,"src":"2570:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":94,"id":103,"nodeType":"Return","src":"2563:15:0"}]},"documentation":{"id":90,"nodeType":"StructuredDocumentation","src":"2371:65:0","text":" @dev Returns the address of the current owner."},"functionSelector":"8da5cb5b","id":105,"implemented":true,"kind":"function","modifiers":[],"name":"owner","nameLocation":"2450:5:0","nodeType":"FunctionDefinition","parameters":{"id":91,"nodeType":"ParameterList","parameters":[],"src":"2455:2:0"},"returnParameters":{"id":94,"nodeType":"ParameterList","parameters":[{"constant":false,"id":93,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":105,"src":"2487:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":92,"name":"address","nodeType":"ElementaryTypeName","src":"2487:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2486:9:0"},"scope":194,"src":"2441:144:0","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":121,"nodeType":"Block","src":"2703:117:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":113,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":109,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":105,"src":"2717:5:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":110,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2717:7:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":111,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1275,"src":"2728:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":112,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2728:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2717:23:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":120,"nodeType":"IfStatement","src":"2713:101:0","trueBody":{"id":119,"nodeType":"Block","src":"2742:72:0","statements":[{"errorCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":115,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1275,"src":"2790:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":116,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2790:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":114,"name":"OwnableUnauthorizedAccount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30,"src":"2763:26:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":117,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2763:40:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":118,"nodeType":"RevertStatement","src":"2756:47:0"}]}}]},"documentation":{"id":106,"nodeType":"StructuredDocumentation","src":"2591:62:0","text":" @dev Throws if the sender is not the owner."},"id":122,"implemented":true,"kind":"function","modifiers":[],"name":"_checkOwner","nameLocation":"2667:11:0","nodeType":"FunctionDefinition","parameters":{"id":107,"nodeType":"ParameterList","parameters":[],"src":"2678:2:0"},"returnParameters":{"id":108,"nodeType":"ParameterList","parameters":[],"src":"2703:0:0"},"scope":194,"src":"2658:162:0","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":135,"nodeType":"Block","src":"3209:47:0","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":131,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3246:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":130,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3238:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":129,"name":"address","nodeType":"ElementaryTypeName","src":"3238:7:0","typeDescriptions":{}}},"id":132,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3238:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":128,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":193,"src":"3219:18:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":133,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3219:30:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":134,"nodeType":"ExpressionStatement","src":"3219:30:0"}]},"documentation":{"id":123,"nodeType":"StructuredDocumentation","src":"2826:324:0","text":" @dev Leaves the contract without owner. It will not be possible to call\n `onlyOwner` functions. Can only be called by the current owner.\n NOTE: Renouncing ownership will leave the contract without an owner,\n thereby disabling any functionality that is only available to the owner."},"functionSelector":"715018a6","id":136,"implemented":true,"kind":"function","modifiers":[{"id":126,"kind":"modifierInvocation","modifierName":{"id":125,"name":"onlyOwner","nameLocations":["3199:9:0"],"nodeType":"IdentifierPath","referencedDeclaration":89,"src":"3199:9:0"},"nodeType":"ModifierInvocation","src":"3199:9:0"}],"name":"renounceOwnership","nameLocation":"3164:17:0","nodeType":"FunctionDefinition","parameters":{"id":124,"nodeType":"ParameterList","parameters":[],"src":"3181:2:0"},"returnParameters":{"id":127,"nodeType":"ParameterList","parameters":[],"src":"3209:0:0"},"scope":194,"src":"3155:101:0","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":163,"nodeType":"Block","src":"3475:145:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":149,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":144,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":139,"src":"3489:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":147,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3509:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":146,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3501:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":145,"name":"address","nodeType":"ElementaryTypeName","src":"3501:7:0","typeDescriptions":{}}},"id":148,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3501:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3489:22:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":158,"nodeType":"IfStatement","src":"3485:91:0","trueBody":{"id":157,"nodeType":"Block","src":"3513:63:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":153,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3562:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":152,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3554:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":151,"name":"address","nodeType":"ElementaryTypeName","src":"3554:7:0","typeDescriptions":{}}},"id":154,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3554:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":150,"name":"OwnableInvalidOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35,"src":"3534:19:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":155,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3534:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":156,"nodeType":"RevertStatement","src":"3527:38:0"}]}},{"expression":{"arguments":[{"id":160,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":139,"src":"3604:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":159,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":193,"src":"3585:18:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":161,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3585:28:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":162,"nodeType":"ExpressionStatement","src":"3585:28:0"}]},"documentation":{"id":137,"nodeType":"StructuredDocumentation","src":"3262:138:0","text":" @dev Transfers ownership of the contract to a new account (`newOwner`).\n Can only be called by the current owner."},"functionSelector":"f2fde38b","id":164,"implemented":true,"kind":"function","modifiers":[{"id":142,"kind":"modifierInvocation","modifierName":{"id":141,"name":"onlyOwner","nameLocations":["3465:9:0"],"nodeType":"IdentifierPath","referencedDeclaration":89,"src":"3465:9:0"},"nodeType":"ModifierInvocation","src":"3465:9:0"}],"name":"transferOwnership","nameLocation":"3414:17:0","nodeType":"FunctionDefinition","parameters":{"id":140,"nodeType":"ParameterList","parameters":[{"constant":false,"id":139,"mutability":"mutable","name":"newOwner","nameLocation":"3440:8:0","nodeType":"VariableDeclaration","scope":164,"src":"3432:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":138,"name":"address","nodeType":"ElementaryTypeName","src":"3432:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3431:18:0"},"returnParameters":{"id":143,"nodeType":"ParameterList","parameters":[],"src":"3475:0:0"},"scope":194,"src":"3405:215:0","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":192,"nodeType":"Block","src":"3837:185:0","statements":[{"assignments":[172],"declarations":[{"constant":false,"id":172,"mutability":"mutable","name":"$","nameLocation":"3870:1:0","nodeType":"VariableDeclaration","scope":192,"src":"3847:24:0","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_OwnableStorage_$14_storage_ptr","typeString":"struct OwnableUpgradeable.OwnableStorage"},"typeName":{"id":171,"nodeType":"UserDefinedTypeName","pathNode":{"id":170,"name":"OwnableStorage","nameLocations":["3847:14:0"],"nodeType":"IdentifierPath","referencedDeclaration":14,"src":"3847:14:0"},"referencedDeclaration":14,"src":"3847:14:0","typeDescriptions":{"typeIdentifier":"t_struct$_OwnableStorage_$14_storage_ptr","typeString":"struct OwnableUpgradeable.OwnableStorage"}},"visibility":"internal"}],"id":175,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":173,"name":"_getOwnableStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25,"src":"3874:18:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_OwnableStorage_$14_storage_ptr_$","typeString":"function () pure returns (struct OwnableUpgradeable.OwnableStorage storage pointer)"}},"id":174,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3874:20:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_OwnableStorage_$14_storage_ptr","typeString":"struct OwnableUpgradeable.OwnableStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"3847:47:0"},{"assignments":[177],"declarations":[{"constant":false,"id":177,"mutability":"mutable","name":"oldOwner","nameLocation":"3912:8:0","nodeType":"VariableDeclaration","scope":192,"src":"3904:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":176,"name":"address","nodeType":"ElementaryTypeName","src":"3904:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":180,"initialValue":{"expression":{"id":178,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":172,"src":"3923:1:0","typeDescriptions":{"typeIdentifier":"t_struct$_OwnableStorage_$14_storage_ptr","typeString":"struct OwnableUpgradeable.OwnableStorage storage pointer"}},"id":179,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3925:6:0","memberName":"_owner","nodeType":"MemberAccess","referencedDeclaration":13,"src":"3923:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"3904:27:0"},{"expression":{"id":185,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":181,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":172,"src":"3941:1:0","typeDescriptions":{"typeIdentifier":"t_struct$_OwnableStorage_$14_storage_ptr","typeString":"struct OwnableUpgradeable.OwnableStorage storage pointer"}},"id":183,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3943:6:0","memberName":"_owner","nodeType":"MemberAccess","referencedDeclaration":13,"src":"3941:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":184,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":167,"src":"3952:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3941:19:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":186,"nodeType":"ExpressionStatement","src":"3941:19:0"},{"eventCall":{"arguments":[{"id":188,"name":"oldOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":177,"src":"3996:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":189,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":167,"src":"4006:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":187,"name":"OwnershipTransferred","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41,"src":"3975:20:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":190,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3975:40:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":191,"nodeType":"EmitStatement","src":"3970:45:0"}]},"documentation":{"id":165,"nodeType":"StructuredDocumentation","src":"3626:143:0","text":" @dev Transfers ownership of the contract to a new account (`newOwner`).\n Internal function without access restriction."},"id":193,"implemented":true,"kind":"function","modifiers":[],"name":"_transferOwnership","nameLocation":"3783:18:0","nodeType":"FunctionDefinition","parameters":{"id":168,"nodeType":"ParameterList","parameters":[{"constant":false,"id":167,"mutability":"mutable","name":"newOwner","nameLocation":"3810:8:0","nodeType":"VariableDeclaration","scope":193,"src":"3802:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":166,"name":"address","nodeType":"ElementaryTypeName","src":"3802:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3801:18:0"},"returnParameters":{"id":169,"nodeType":"ParameterList","parameters":[],"src":"3837:0:0"},"scope":194,"src":"3774:248:0","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":195,"src":"749:3275:0","usedErrors":[30,35,211,214],"usedEvents":[41,219]}],"src":"102:3923:0"},"id":0},"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","exportedSymbols":{"Initializable":[448]},"id":449,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":196,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"113:24:1"},{"abstract":true,"baseContracts":[],"canonicalName":"Initializable","contractDependencies":[],"contractKind":"contract","documentation":{"id":197,"nodeType":"StructuredDocumentation","src":"139:2209:1","text":" @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\n behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\n external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\n function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\n The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\n reused. This mechanism prevents re-execution of each \"step\" but allows the creation of new initialization steps in\n case an upgrade adds a module that needs to be initialized.\n For example:\n [.hljs-theme-light.nopadding]\n ```solidity\n contract MyToken is ERC20Upgradeable {\n     function initialize() initializer public {\n         __ERC20_init(\"MyToken\", \"MTK\");\n     }\n }\n contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\n     function initializeV2() reinitializer(2) public {\n         __ERC20Permit_init(\"MyToken\");\n     }\n }\n ```\n TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\n possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\n CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\n that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\n [CAUTION]\n ====\n Avoid leaving a contract uninitialized.\n An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\n contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\n the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\n [.hljs-theme-light.nopadding]\n ```\n /// @custom:oz-upgrades-unsafe-allow constructor\n constructor() {\n     _disableInitializers();\n }\n ```\n ===="},"fullyImplemented":true,"id":448,"linearizedBaseContracts":[448],"name":"Initializable","nameLocation":"2367:13:1","nodeType":"ContractDefinition","nodes":[{"canonicalName":"Initializable.InitializableStorage","documentation":{"id":198,"nodeType":"StructuredDocumentation","src":"2387:293:1","text":" @dev Storage of the initializable contract.\n It's implemented on a custom ERC-7201 namespace to reduce the risk of storage collisions\n when using with upgradeable contracts.\n @custom:storage-location erc7201:openzeppelin.storage.Initializable"},"id":205,"members":[{"constant":false,"id":201,"mutability":"mutable","name":"_initialized","nameLocation":"2820:12:1","nodeType":"VariableDeclaration","scope":205,"src":"2813:19:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":200,"name":"uint64","nodeType":"ElementaryTypeName","src":"2813:6:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":204,"mutability":"mutable","name":"_initializing","nameLocation":"2955:13:1","nodeType":"VariableDeclaration","scope":205,"src":"2950:18:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":203,"name":"bool","nodeType":"ElementaryTypeName","src":"2950:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"InitializableStorage","nameLocation":"2692:20:1","nodeType":"StructDefinition","scope":448,"src":"2685:290:1","visibility":"public"},{"constant":true,"id":208,"mutability":"constant","name":"INITIALIZABLE_STORAGE","nameLocation":"3123:21:1","nodeType":"VariableDeclaration","scope":448,"src":"3098:115:1","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":206,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3098:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307866306335376531363834306466303430663135303838646332663831666533393163333932336265633733653233613936363265666339633232396336613030","id":207,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3147:66:1","typeDescriptions":{"typeIdentifier":"t_rational_108904022758810753673719992590105913556127789646572562039383141376366747609600_by_1","typeString":"int_const 1089...(70 digits omitted)...9600"},"value":"0xf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00"},"visibility":"private"},{"documentation":{"id":209,"nodeType":"StructuredDocumentation","src":"3220:60:1","text":" @dev The contract is already initialized."},"errorSelector":"f92ee8a9","id":211,"name":"InvalidInitialization","nameLocation":"3291:21:1","nodeType":"ErrorDefinition","parameters":{"id":210,"nodeType":"ParameterList","parameters":[],"src":"3312:2:1"},"src":"3285:30:1"},{"documentation":{"id":212,"nodeType":"StructuredDocumentation","src":"3321:57:1","text":" @dev The contract is not initializing."},"errorSelector":"d7e6bcf8","id":214,"name":"NotInitializing","nameLocation":"3389:15:1","nodeType":"ErrorDefinition","parameters":{"id":213,"nodeType":"ParameterList","parameters":[],"src":"3404:2:1"},"src":"3383:24:1"},{"anonymous":false,"documentation":{"id":215,"nodeType":"StructuredDocumentation","src":"3413:90:1","text":" @dev Triggered when the contract has been initialized or reinitialized."},"eventSelector":"c7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2","id":219,"name":"Initialized","nameLocation":"3514:11:1","nodeType":"EventDefinition","parameters":{"id":218,"nodeType":"ParameterList","parameters":[{"constant":false,"id":217,"indexed":false,"mutability":"mutable","name":"version","nameLocation":"3533:7:1","nodeType":"VariableDeclaration","scope":219,"src":"3526:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":216,"name":"uint64","nodeType":"ElementaryTypeName","src":"3526:6:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"3525:16:1"},"src":"3508:34:1"},{"body":{"id":301,"nodeType":"Block","src":"4092:1081:1","statements":[{"assignments":[224],"declarations":[{"constant":false,"id":224,"mutability":"mutable","name":"$","nameLocation":"4187:1:1","nodeType":"VariableDeclaration","scope":301,"src":"4158:30:1","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$205_storage_ptr","typeString":"struct Initializable.InitializableStorage"},"typeName":{"id":223,"nodeType":"UserDefinedTypeName","pathNode":{"id":222,"name":"InitializableStorage","nameLocations":["4158:20:1"],"nodeType":"IdentifierPath","referencedDeclaration":205,"src":"4158:20:1"},"referencedDeclaration":205,"src":"4158:20:1","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$205_storage_ptr","typeString":"struct Initializable.InitializableStorage"}},"visibility":"internal"}],"id":227,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":225,"name":"_getInitializableStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":447,"src":"4191:24:1","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_InitializableStorage_$205_storage_ptr_$","typeString":"function () pure returns (struct Initializable.InitializableStorage storage pointer)"}},"id":226,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4191:26:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$205_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"4158:59:1"},{"assignments":[229],"declarations":[{"constant":false,"id":229,"mutability":"mutable","name":"isTopLevelCall","nameLocation":"4284:14:1","nodeType":"VariableDeclaration","scope":301,"src":"4279:19:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":228,"name":"bool","nodeType":"ElementaryTypeName","src":"4279:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":233,"initialValue":{"id":232,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4301:16:1","subExpression":{"expression":{"id":230,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":224,"src":"4302:1:1","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$205_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":231,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4304:13:1","memberName":"_initializing","nodeType":"MemberAccess","referencedDeclaration":204,"src":"4302:15:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"4279:38:1"},{"assignments":[235],"declarations":[{"constant":false,"id":235,"mutability":"mutable","name":"initialized","nameLocation":"4334:11:1","nodeType":"VariableDeclaration","scope":301,"src":"4327:18:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":234,"name":"uint64","nodeType":"ElementaryTypeName","src":"4327:6:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"id":238,"initialValue":{"expression":{"id":236,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":224,"src":"4348:1:1","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$205_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":237,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4350:12:1","memberName":"_initialized","nodeType":"MemberAccess","referencedDeclaration":201,"src":"4348:14:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"VariableDeclarationStatement","src":"4327:35:1"},{"assignments":[240],"declarations":[{"constant":false,"id":240,"mutability":"mutable","name":"initialSetup","nameLocation":"4711:12:1","nodeType":"VariableDeclaration","scope":301,"src":"4706:17:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":239,"name":"bool","nodeType":"ElementaryTypeName","src":"4706:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":246,"initialValue":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":245,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint64","typeString":"uint64"},"id":243,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":241,"name":"initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":235,"src":"4726:11:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":242,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4741:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4726:16:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"id":244,"name":"isTopLevelCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":229,"src":"4746:14:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4726:34:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"4706:54:1"},{"assignments":[248],"declarations":[{"constant":false,"id":248,"mutability":"mutable","name":"construction","nameLocation":"4775:12:1","nodeType":"VariableDeclaration","scope":301,"src":"4770:17:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":247,"name":"bool","nodeType":"ElementaryTypeName","src":"4770:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":261,"initialValue":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":260,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint64","typeString":"uint64"},"id":251,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":249,"name":"initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":235,"src":"4790:11:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":250,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4805:1:1","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"4790:16:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":259,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"arguments":[{"id":254,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4818:4:1","typeDescriptions":{"typeIdentifier":"t_contract$_Initializable_$448","typeString":"contract Initializable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Initializable_$448","typeString":"contract Initializable"}],"id":253,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4810:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":252,"name":"address","nodeType":"ElementaryTypeName","src":"4810:7:1","typeDescriptions":{}}},"id":255,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4810:13:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":256,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4824:4:1","memberName":"code","nodeType":"MemberAccess","src":"4810:18:1","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":257,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4829:6:1","memberName":"length","nodeType":"MemberAccess","src":"4810:25:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":258,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4839:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4810:30:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4790:50:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"4770:70:1"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":266,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":263,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4855:13:1","subExpression":{"id":262,"name":"initialSetup","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":240,"src":"4856:12:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"id":265,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4872:13:1","subExpression":{"id":264,"name":"construction","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":248,"src":"4873:12:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4855:30:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":271,"nodeType":"IfStatement","src":"4851:91:1","trueBody":{"id":270,"nodeType":"Block","src":"4887:55:1","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":267,"name":"InvalidInitialization","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":211,"src":"4908:21:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":268,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4908:23:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":269,"nodeType":"RevertStatement","src":"4901:30:1"}]}},{"expression":{"id":276,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":272,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":224,"src":"4951:1:1","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$205_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":274,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4953:12:1","memberName":"_initialized","nodeType":"MemberAccess","referencedDeclaration":201,"src":"4951:14:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"31","id":275,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4968:1:1","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"4951:18:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":277,"nodeType":"ExpressionStatement","src":"4951:18:1"},{"condition":{"id":278,"name":"isTopLevelCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":229,"src":"4983:14:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":286,"nodeType":"IfStatement","src":"4979:67:1","trueBody":{"id":285,"nodeType":"Block","src":"4999:47:1","statements":[{"expression":{"id":283,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":279,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":224,"src":"5013:1:1","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$205_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":281,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5015:13:1","memberName":"_initializing","nodeType":"MemberAccess","referencedDeclaration":204,"src":"5013:15:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":282,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5031:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"5013:22:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":284,"nodeType":"ExpressionStatement","src":"5013:22:1"}]}},{"id":287,"nodeType":"PlaceholderStatement","src":"5055:1:1"},{"condition":{"id":288,"name":"isTopLevelCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":229,"src":"5070:14:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":300,"nodeType":"IfStatement","src":"5066:101:1","trueBody":{"id":299,"nodeType":"Block","src":"5086:81:1","statements":[{"expression":{"id":293,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":289,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":224,"src":"5100:1:1","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$205_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":291,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5102:13:1","memberName":"_initializing","nodeType":"MemberAccess","referencedDeclaration":204,"src":"5100:15:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":292,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5118:5:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"5100:23:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":294,"nodeType":"ExpressionStatement","src":"5100:23:1"},{"eventCall":{"arguments":[{"hexValue":"31","id":296,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5154:1:1","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":295,"name":"Initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":219,"src":"5142:11:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint64_$returns$__$","typeString":"function (uint64)"}},"id":297,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5142:14:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":298,"nodeType":"EmitStatement","src":"5137:19:1"}]}}]},"documentation":{"id":220,"nodeType":"StructuredDocumentation","src":"3548:516:1","text":" @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\n `onlyInitializing` functions can be used to initialize parent contracts.\n Similar to `reinitializer(1)`, except that in the context of a constructor an `initializer` may be invoked any\n number of times. This behavior in the constructor can be useful during testing and is not expected to be used in\n production.\n Emits an {Initialized} event."},"id":302,"name":"initializer","nameLocation":"4078:11:1","nodeType":"ModifierDefinition","parameters":{"id":221,"nodeType":"ParameterList","parameters":[],"src":"4089:2:1"},"src":"4069:1104:1","virtual":false,"visibility":"internal"},{"body":{"id":348,"nodeType":"Block","src":"6291:392:1","statements":[{"assignments":[309],"declarations":[{"constant":false,"id":309,"mutability":"mutable","name":"$","nameLocation":"6386:1:1","nodeType":"VariableDeclaration","scope":348,"src":"6357:30:1","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$205_storage_ptr","typeString":"struct Initializable.InitializableStorage"},"typeName":{"id":308,"nodeType":"UserDefinedTypeName","pathNode":{"id":307,"name":"InitializableStorage","nameLocations":["6357:20:1"],"nodeType":"IdentifierPath","referencedDeclaration":205,"src":"6357:20:1"},"referencedDeclaration":205,"src":"6357:20:1","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$205_storage_ptr","typeString":"struct Initializable.InitializableStorage"}},"visibility":"internal"}],"id":312,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":310,"name":"_getInitializableStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":447,"src":"6390:24:1","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_InitializableStorage_$205_storage_ptr_$","typeString":"function () pure returns (struct Initializable.InitializableStorage storage pointer)"}},"id":311,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6390:26:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$205_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"6357:59:1"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":319,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":313,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":309,"src":"6431:1:1","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$205_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":314,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6433:13:1","memberName":"_initializing","nodeType":"MemberAccess","referencedDeclaration":204,"src":"6431:15:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint64","typeString":"uint64"},"id":318,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":315,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":309,"src":"6450:1:1","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$205_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":316,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6452:12:1","memberName":"_initialized","nodeType":"MemberAccess","referencedDeclaration":201,"src":"6450:14:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":317,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":305,"src":"6468:7:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"6450:25:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6431:44:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":324,"nodeType":"IfStatement","src":"6427:105:1","trueBody":{"id":323,"nodeType":"Block","src":"6477:55:1","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":320,"name":"InvalidInitialization","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":211,"src":"6498:21:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":321,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6498:23:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":322,"nodeType":"RevertStatement","src":"6491:30:1"}]}},{"expression":{"id":329,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":325,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":309,"src":"6541:1:1","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$205_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":327,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6543:12:1","memberName":"_initialized","nodeType":"MemberAccess","referencedDeclaration":201,"src":"6541:14:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":328,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":305,"src":"6558:7:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"6541:24:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":330,"nodeType":"ExpressionStatement","src":"6541:24:1"},{"expression":{"id":335,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":331,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":309,"src":"6575:1:1","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$205_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":333,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6577:13:1","memberName":"_initializing","nodeType":"MemberAccess","referencedDeclaration":204,"src":"6575:15:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":334,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6593:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"6575:22:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":336,"nodeType":"ExpressionStatement","src":"6575:22:1"},{"id":337,"nodeType":"PlaceholderStatement","src":"6607:1:1"},{"expression":{"id":342,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":338,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":309,"src":"6618:1:1","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$205_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":340,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6620:13:1","memberName":"_initializing","nodeType":"MemberAccess","referencedDeclaration":204,"src":"6618:15:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":341,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6636:5:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"6618:23:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":343,"nodeType":"ExpressionStatement","src":"6618:23:1"},{"eventCall":{"arguments":[{"id":345,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":305,"src":"6668:7:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"}],"id":344,"name":"Initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":219,"src":"6656:11:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint64_$returns$__$","typeString":"function (uint64)"}},"id":346,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6656:20:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":347,"nodeType":"EmitStatement","src":"6651:25:1"}]},"documentation":{"id":303,"nodeType":"StructuredDocumentation","src":"5179:1068:1","text":" @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\n contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\n used to initialize parent contracts.\n A reinitializer may be used after the original initialization step. This is essential to configure modules that\n are added through upgrades and that require initialization.\n When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\n cannot be nested. If one is invoked in the context of another, execution will revert.\n Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\n a contract, executing them in the right order is up to the developer or operator.\n WARNING: Setting the version to 2**64 - 1 will prevent any future reinitialization.\n Emits an {Initialized} event."},"id":349,"name":"reinitializer","nameLocation":"6261:13:1","nodeType":"ModifierDefinition","parameters":{"id":306,"nodeType":"ParameterList","parameters":[{"constant":false,"id":305,"mutability":"mutable","name":"version","nameLocation":"6282:7:1","nodeType":"VariableDeclaration","scope":349,"src":"6275:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":304,"name":"uint64","nodeType":"ElementaryTypeName","src":"6275:6:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"6274:16:1"},"src":"6252:431:1","virtual":false,"visibility":"internal"},{"body":{"id":356,"nodeType":"Block","src":"6921:48:1","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":352,"name":"_checkInitializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":370,"src":"6931:18:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":353,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6931:20:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":354,"nodeType":"ExpressionStatement","src":"6931:20:1"},{"id":355,"nodeType":"PlaceholderStatement","src":"6961:1:1"}]},"documentation":{"id":350,"nodeType":"StructuredDocumentation","src":"6689:199:1","text":" @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\n {initializer} and {reinitializer} modifiers, directly or indirectly."},"id":357,"name":"onlyInitializing","nameLocation":"6902:16:1","nodeType":"ModifierDefinition","parameters":{"id":351,"nodeType":"ParameterList","parameters":[],"src":"6918:2:1"},"src":"6893:76:1","virtual":false,"visibility":"internal"},{"body":{"id":369,"nodeType":"Block","src":"7136:89:1","statements":[{"condition":{"id":363,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"7150:18:1","subExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":361,"name":"_isInitializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":438,"src":"7151:15:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":362,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7151:17:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":368,"nodeType":"IfStatement","src":"7146:73:1","trueBody":{"id":367,"nodeType":"Block","src":"7170:49:1","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":364,"name":"NotInitializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":214,"src":"7191:15:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":365,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7191:17:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":366,"nodeType":"RevertStatement","src":"7184:24:1"}]}}]},"documentation":{"id":358,"nodeType":"StructuredDocumentation","src":"6975:104:1","text":" @dev Reverts if the contract is not in an initializing state. See {onlyInitializing}."},"id":370,"implemented":true,"kind":"function","modifiers":[],"name":"_checkInitializing","nameLocation":"7093:18:1","nodeType":"FunctionDefinition","parameters":{"id":359,"nodeType":"ParameterList","parameters":[],"src":"7111:2:1"},"returnParameters":{"id":360,"nodeType":"ParameterList","parameters":[],"src":"7136:0:1"},"scope":448,"src":"7084:141:1","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":415,"nodeType":"Block","src":"7760:373:1","statements":[{"assignments":[376],"declarations":[{"constant":false,"id":376,"mutability":"mutable","name":"$","nameLocation":"7855:1:1","nodeType":"VariableDeclaration","scope":415,"src":"7826:30:1","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$205_storage_ptr","typeString":"struct Initializable.InitializableStorage"},"typeName":{"id":375,"nodeType":"UserDefinedTypeName","pathNode":{"id":374,"name":"InitializableStorage","nameLocations":["7826:20:1"],"nodeType":"IdentifierPath","referencedDeclaration":205,"src":"7826:20:1"},"referencedDeclaration":205,"src":"7826:20:1","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$205_storage_ptr","typeString":"struct Initializable.InitializableStorage"}},"visibility":"internal"}],"id":379,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":377,"name":"_getInitializableStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":447,"src":"7859:24:1","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_InitializableStorage_$205_storage_ptr_$","typeString":"function () pure returns (struct Initializable.InitializableStorage storage pointer)"}},"id":378,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7859:26:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$205_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"7826:59:1"},{"condition":{"expression":{"id":380,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":376,"src":"7900:1:1","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$205_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":381,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7902:13:1","memberName":"_initializing","nodeType":"MemberAccess","referencedDeclaration":204,"src":"7900:15:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":386,"nodeType":"IfStatement","src":"7896:76:1","trueBody":{"id":385,"nodeType":"Block","src":"7917:55:1","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":382,"name":"InvalidInitialization","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":211,"src":"7938:21:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":383,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7938:23:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":384,"nodeType":"RevertStatement","src":"7931:30:1"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint64","typeString":"uint64"},"id":394,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":387,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":376,"src":"7985:1:1","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$205_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":388,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7987:12:1","memberName":"_initialized","nodeType":"MemberAccess","referencedDeclaration":201,"src":"7985:14:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"arguments":[{"id":391,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8008:6:1","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":390,"name":"uint64","nodeType":"ElementaryTypeName","src":"8008:6:1","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"}],"id":389,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"8003:4:1","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":392,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8003:12:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint64","typeString":"type(uint64)"}},"id":393,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8016:3:1","memberName":"max","nodeType":"MemberAccess","src":"8003:16:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"7985:34:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":414,"nodeType":"IfStatement","src":"7981:146:1","trueBody":{"id":413,"nodeType":"Block","src":"8021:106:1","statements":[{"expression":{"id":403,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":395,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":376,"src":"8035:1:1","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$205_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":397,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"8037:12:1","memberName":"_initialized","nodeType":"MemberAccess","referencedDeclaration":201,"src":"8035:14:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"arguments":[{"id":400,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8057:6:1","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":399,"name":"uint64","nodeType":"ElementaryTypeName","src":"8057:6:1","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"}],"id":398,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"8052:4:1","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":401,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8052:12:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint64","typeString":"type(uint64)"}},"id":402,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8065:3:1","memberName":"max","nodeType":"MemberAccess","src":"8052:16:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"8035:33:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":404,"nodeType":"ExpressionStatement","src":"8035:33:1"},{"eventCall":{"arguments":[{"expression":{"arguments":[{"id":408,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8104:6:1","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":407,"name":"uint64","nodeType":"ElementaryTypeName","src":"8104:6:1","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"}],"id":406,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"8099:4:1","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":409,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8099:12:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint64","typeString":"type(uint64)"}},"id":410,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8112:3:1","memberName":"max","nodeType":"MemberAccess","src":"8099:16:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"}],"id":405,"name":"Initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":219,"src":"8087:11:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint64_$returns$__$","typeString":"function (uint64)"}},"id":411,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8087:29:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":412,"nodeType":"EmitStatement","src":"8082:34:1"}]}}]},"documentation":{"id":371,"nodeType":"StructuredDocumentation","src":"7231:475:1","text":" @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\n Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\n to any version. It is recommended to use this to lock implementation contracts that are designed to be called\n through proxies.\n Emits an {Initialized} event the first time it is successfully executed."},"id":416,"implemented":true,"kind":"function","modifiers":[],"name":"_disableInitializers","nameLocation":"7720:20:1","nodeType":"FunctionDefinition","parameters":{"id":372,"nodeType":"ParameterList","parameters":[],"src":"7740:2:1"},"returnParameters":{"id":373,"nodeType":"ParameterList","parameters":[],"src":"7760:0:1"},"scope":448,"src":"7711:422:1","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":426,"nodeType":"Block","src":"8308:63:1","statements":[{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":422,"name":"_getInitializableStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":447,"src":"8325:24:1","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_InitializableStorage_$205_storage_ptr_$","typeString":"function () pure returns (struct Initializable.InitializableStorage storage pointer)"}},"id":423,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8325:26:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$205_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":424,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8352:12:1","memberName":"_initialized","nodeType":"MemberAccess","referencedDeclaration":201,"src":"8325:39:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"functionReturnParameters":421,"id":425,"nodeType":"Return","src":"8318:46:1"}]},"documentation":{"id":417,"nodeType":"StructuredDocumentation","src":"8139:99:1","text":" @dev Returns the highest version that has been initialized. See {reinitializer}."},"id":427,"implemented":true,"kind":"function","modifiers":[],"name":"_getInitializedVersion","nameLocation":"8252:22:1","nodeType":"FunctionDefinition","parameters":{"id":418,"nodeType":"ParameterList","parameters":[],"src":"8274:2:1"},"returnParameters":{"id":421,"nodeType":"ParameterList","parameters":[{"constant":false,"id":420,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":427,"src":"8300:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":419,"name":"uint64","nodeType":"ElementaryTypeName","src":"8300:6:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"8299:8:1"},"scope":448,"src":"8243:128:1","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":437,"nodeType":"Block","src":"8543:64:1","statements":[{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":433,"name":"_getInitializableStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":447,"src":"8560:24:1","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_InitializableStorage_$205_storage_ptr_$","typeString":"function () pure returns (struct Initializable.InitializableStorage storage pointer)"}},"id":434,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8560:26:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$205_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":435,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8587:13:1","memberName":"_initializing","nodeType":"MemberAccess","referencedDeclaration":204,"src":"8560:40:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":432,"id":436,"nodeType":"Return","src":"8553:47:1"}]},"documentation":{"id":428,"nodeType":"StructuredDocumentation","src":"8377:105:1","text":" @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}."},"id":438,"implemented":true,"kind":"function","modifiers":[],"name":"_isInitializing","nameLocation":"8496:15:1","nodeType":"FunctionDefinition","parameters":{"id":429,"nodeType":"ParameterList","parameters":[],"src":"8511:2:1"},"returnParameters":{"id":432,"nodeType":"ParameterList","parameters":[{"constant":false,"id":431,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":438,"src":"8537:4:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":430,"name":"bool","nodeType":"ElementaryTypeName","src":"8537:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"8536:6:1"},"scope":448,"src":"8487:120:1","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":446,"nodeType":"Block","src":"8827:80:1","statements":[{"AST":{"nativeSrc":"8846:55:1","nodeType":"YulBlock","src":"8846:55:1","statements":[{"nativeSrc":"8860:31:1","nodeType":"YulAssignment","src":"8860:31:1","value":{"name":"INITIALIZABLE_STORAGE","nativeSrc":"8870:21:1","nodeType":"YulIdentifier","src":"8870:21:1"},"variableNames":[{"name":"$.slot","nativeSrc":"8860:6:1","nodeType":"YulIdentifier","src":"8860:6:1"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":443,"isOffset":false,"isSlot":true,"src":"8860:6:1","suffix":"slot","valueSize":1},{"declaration":208,"isOffset":false,"isSlot":false,"src":"8870:21:1","valueSize":1}],"id":445,"nodeType":"InlineAssembly","src":"8837:64:1"}]},"documentation":{"id":439,"nodeType":"StructuredDocumentation","src":"8613:67:1","text":" @dev Returns a pointer to the storage namespace."},"id":447,"implemented":true,"kind":"function","modifiers":[],"name":"_getInitializableStorage","nameLocation":"8746:24:1","nodeType":"FunctionDefinition","parameters":{"id":440,"nodeType":"ParameterList","parameters":[],"src":"8770:2:1"},"returnParameters":{"id":444,"nodeType":"ParameterList","parameters":[{"constant":false,"id":443,"mutability":"mutable","name":"$","nameLocation":"8824:1:1","nodeType":"VariableDeclaration","scope":447,"src":"8795:30:1","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$205_storage_ptr","typeString":"struct Initializable.InitializableStorage"},"typeName":{"id":442,"nodeType":"UserDefinedTypeName","pathNode":{"id":441,"name":"InitializableStorage","nameLocations":["8795:20:1"],"nodeType":"IdentifierPath","referencedDeclaration":205,"src":"8795:20:1"},"referencedDeclaration":205,"src":"8795:20:1","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$205_storage_ptr","typeString":"struct Initializable.InitializableStorage"}},"visibility":"internal"}],"src":"8794:32:1"},"scope":448,"src":"8737:170:1","stateMutability":"pure","virtual":false,"visibility":"private"}],"scope":449,"src":"2349:6560:1","usedErrors":[211,214],"usedEvents":[219]}],"src":"113:8797:1"},"id":1},"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol","exportedSymbols":{"ERC1967Utils":[2048],"IERC1822Proxiable":[1608],"Initializable":[448],"UUPSUpgradeable":[630]},"id":631,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":450,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"115:24:2"},{"absolutePath":"@openzeppelin/contracts/interfaces/draft-IERC1822.sol","file":"@openzeppelin/contracts/interfaces/draft-IERC1822.sol","id":452,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":631,"sourceUnit":1609,"src":"141:88:2","symbolAliases":[{"foreign":{"id":451,"name":"IERC1822Proxiable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1608,"src":"149:17:2","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol","file":"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol","id":454,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":631,"sourceUnit":2049,"src":"230:84:2","symbolAliases":[{"foreign":{"id":453,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2048,"src":"238:12:2","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"./Initializable.sol","id":456,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":631,"sourceUnit":449,"src":"315:50:2","symbolAliases":[{"foreign":{"id":455,"name":"Initializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":448,"src":"323:13:2","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":458,"name":"Initializable","nameLocations":["1023:13:2"],"nodeType":"IdentifierPath","referencedDeclaration":448,"src":"1023:13:2"},"id":459,"nodeType":"InheritanceSpecifier","src":"1023:13:2"},{"baseName":{"id":460,"name":"IERC1822Proxiable","nameLocations":["1038:17:2"],"nodeType":"IdentifierPath","referencedDeclaration":1608,"src":"1038:17:2"},"id":461,"nodeType":"InheritanceSpecifier","src":"1038:17:2"}],"canonicalName":"UUPSUpgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":457,"nodeType":"StructuredDocumentation","src":"367:618:2","text":" @dev An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an\n {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy.\n A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is\n reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing\n `UUPSUpgradeable` with a custom implementation of upgrades.\n The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism."},"fullyImplemented":false,"id":630,"linearizedBaseContracts":[630,1608,448],"name":"UUPSUpgradeable","nameLocation":"1004:15:2","nodeType":"ContractDefinition","nodes":[{"constant":false,"documentation":{"id":462,"nodeType":"StructuredDocumentation","src":"1062:61:2","text":"@custom:oz-upgrades-unsafe-allow state-variable-immutable"},"id":468,"mutability":"immutable","name":"__self","nameLocation":"1154:6:2","nodeType":"VariableDeclaration","scope":630,"src":"1128:48:2","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":463,"name":"address","nodeType":"ElementaryTypeName","src":"1128:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":{"arguments":[{"id":466,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1171:4:2","typeDescriptions":{"typeIdentifier":"t_contract$_UUPSUpgradeable_$630","typeString":"contract UUPSUpgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_UUPSUpgradeable_$630","typeString":"contract UUPSUpgradeable"}],"id":465,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1163:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":464,"name":"address","nodeType":"ElementaryTypeName","src":"1163:7:2","typeDescriptions":{}}},"id":467,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1163:13:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"constant":true,"documentation":{"id":469,"nodeType":"StructuredDocumentation","src":"1183:631:2","text":" @dev The version of the upgrade interface of the contract. If this getter is missing, both `upgradeTo(address)`\n and `upgradeToAndCall(address,bytes)` are present, and `upgradeTo` must be used if no function should be called,\n while `upgradeToAndCall` will invoke the `receive` function if the second argument is the empty byte string.\n If the getter returns `\"5.0.0\"`, only `upgradeToAndCall(address,bytes)` is present, and the second argument must\n be the empty byte string if no function should be called, making it impossible to invoke the `receive` function\n during an upgrade."},"functionSelector":"ad3cb1cc","id":472,"mutability":"constant","name":"UPGRADE_INTERFACE_VERSION","nameLocation":"1842:25:2","nodeType":"VariableDeclaration","scope":630,"src":"1819:58:2","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":470,"name":"string","nodeType":"ElementaryTypeName","src":"1819:6:2","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"352e302e30","id":471,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1870:7:2","typeDescriptions":{"typeIdentifier":"t_stringliteral_2ade050ecfcf8ae20ae1d10a23573f9d7e0bad85e74a2cf8338a65401e64558c","typeString":"literal_string \"5.0.0\""},"value":"5.0.0"},"visibility":"public"},{"documentation":{"id":473,"nodeType":"StructuredDocumentation","src":"1884:65:2","text":" @dev The call is from an unauthorized context."},"errorSelector":"e07c8dba","id":475,"name":"UUPSUnauthorizedCallContext","nameLocation":"1960:27:2","nodeType":"ErrorDefinition","parameters":{"id":474,"nodeType":"ParameterList","parameters":[],"src":"1987:2:2"},"src":"1954:36:2"},{"documentation":{"id":476,"nodeType":"StructuredDocumentation","src":"1996:68:2","text":" @dev The storage `slot` is unsupported as a UUID."},"errorSelector":"aa1d49a4","id":480,"name":"UUPSUnsupportedProxiableUUID","nameLocation":"2075:28:2","nodeType":"ErrorDefinition","parameters":{"id":479,"nodeType":"ParameterList","parameters":[{"constant":false,"id":478,"mutability":"mutable","name":"slot","nameLocation":"2112:4:2","nodeType":"VariableDeclaration","scope":480,"src":"2104:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":477,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2104:7:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2103:14:2"},"src":"2069:49:2"},{"body":{"id":487,"nodeType":"Block","src":"2643:41:2","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":483,"name":"_checkProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":562,"src":"2653:11:2","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":484,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2653:13:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":485,"nodeType":"ExpressionStatement","src":"2653:13:2"},{"id":486,"nodeType":"PlaceholderStatement","src":"2676:1:2"}]},"documentation":{"id":481,"nodeType":"StructuredDocumentation","src":"2124:493:2","text":" @dev Check that the execution is being performed through a delegatecall call and that the execution context is\n a proxy contract with an implementation (as defined in ERC1967) pointing to self. This should only be the case\n for UUPS and transparent proxies that are using the current contract as their implementation. Execution of a\n function through ERC1167 minimal proxies (clones) would not normally pass this test, but is not guaranteed to\n fail."},"id":488,"name":"onlyProxy","nameLocation":"2631:9:2","nodeType":"ModifierDefinition","parameters":{"id":482,"nodeType":"ParameterList","parameters":[],"src":"2640:2:2"},"src":"2622:62:2","virtual":false,"visibility":"internal"},{"body":{"id":495,"nodeType":"Block","src":"2914:48:2","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":491,"name":"_checkNotDelegated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":578,"src":"2924:18:2","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":492,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2924:20:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":493,"nodeType":"ExpressionStatement","src":"2924:20:2"},{"id":494,"nodeType":"PlaceholderStatement","src":"2954:1:2"}]},"documentation":{"id":489,"nodeType":"StructuredDocumentation","src":"2690:195:2","text":" @dev Check that the execution is not being performed through a delegate call. This allows a function to be\n callable on the implementing contract but not through proxies."},"id":496,"name":"notDelegated","nameLocation":"2899:12:2","nodeType":"ModifierDefinition","parameters":{"id":490,"nodeType":"ParameterList","parameters":[],"src":"2911:2:2"},"src":"2890:72:2","virtual":false,"visibility":"internal"},{"body":{"id":501,"nodeType":"Block","src":"3028:7:2","statements":[]},"id":502,"implemented":true,"kind":"function","modifiers":[{"id":499,"kind":"modifierInvocation","modifierName":{"id":498,"name":"onlyInitializing","nameLocations":["3011:16:2"],"nodeType":"IdentifierPath","referencedDeclaration":357,"src":"3011:16:2"},"nodeType":"ModifierInvocation","src":"3011:16:2"}],"name":"__UUPSUpgradeable_init","nameLocation":"2977:22:2","nodeType":"FunctionDefinition","parameters":{"id":497,"nodeType":"ParameterList","parameters":[],"src":"2999:2:2"},"returnParameters":{"id":500,"nodeType":"ParameterList","parameters":[],"src":"3028:0:2"},"scope":630,"src":"2968:67:2","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":507,"nodeType":"Block","src":"3111:7:2","statements":[]},"id":508,"implemented":true,"kind":"function","modifiers":[{"id":505,"kind":"modifierInvocation","modifierName":{"id":504,"name":"onlyInitializing","nameLocations":["3094:16:2"],"nodeType":"IdentifierPath","referencedDeclaration":357,"src":"3094:16:2"},"nodeType":"ModifierInvocation","src":"3094:16:2"}],"name":"__UUPSUpgradeable_init_unchained","nameLocation":"3050:32:2","nodeType":"FunctionDefinition","parameters":{"id":503,"nodeType":"ParameterList","parameters":[],"src":"3082:2:2"},"returnParameters":{"id":506,"nodeType":"ParameterList","parameters":[],"src":"3111:0:2"},"scope":630,"src":"3041:77:2","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[1607],"body":{"id":519,"nodeType":"Block","src":"3783:56:2","statements":[{"expression":{"expression":{"id":516,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2048,"src":"3800:12:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1967Utils_$2048_$","typeString":"type(library ERC1967Utils)"}},"id":517,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3813:19:2","memberName":"IMPLEMENTATION_SLOT","nodeType":"MemberAccess","referencedDeclaration":1775,"src":"3800:32:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":515,"id":518,"nodeType":"Return","src":"3793:39:2"}]},"documentation":{"id":509,"nodeType":"StructuredDocumentation","src":"3123:577:2","text":" @dev Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the\n implementation. It is used to validate the implementation's compatibility when performing an upgrade.\n IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\n bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\n function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier."},"functionSelector":"52d1902d","id":520,"implemented":true,"kind":"function","modifiers":[{"id":512,"kind":"modifierInvocation","modifierName":{"id":511,"name":"notDelegated","nameLocations":["3752:12:2"],"nodeType":"IdentifierPath","referencedDeclaration":496,"src":"3752:12:2"},"nodeType":"ModifierInvocation","src":"3752:12:2"}],"name":"proxiableUUID","nameLocation":"3714:13:2","nodeType":"FunctionDefinition","parameters":{"id":510,"nodeType":"ParameterList","parameters":[],"src":"3727:2:2"},"returnParameters":{"id":515,"nodeType":"ParameterList","parameters":[{"constant":false,"id":514,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":520,"src":"3774:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":513,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3774:7:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3773:9:2"},"scope":630,"src":"3705:134:2","stateMutability":"view","virtual":true,"visibility":"external"},{"body":{"id":539,"nodeType":"Block","src":"4263:109:2","statements":[{"expression":{"arguments":[{"id":531,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":523,"src":"4291:17:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":530,"name":"_authorizeUpgrade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":584,"src":"4273:17:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":532,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4273:36:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":533,"nodeType":"ExpressionStatement","src":"4273:36:2"},{"expression":{"arguments":[{"id":535,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":523,"src":"4341:17:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":536,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":525,"src":"4360:4:2","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":534,"name":"_upgradeToAndCallUUPS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":629,"src":"4319:21:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,bytes memory)"}},"id":537,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4319:46:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":538,"nodeType":"ExpressionStatement","src":"4319:46:2"}]},"documentation":{"id":521,"nodeType":"StructuredDocumentation","src":"3845:308:2","text":" @dev Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call\n encoded in `data`.\n Calls {_authorizeUpgrade}.\n Emits an {Upgraded} event.\n @custom:oz-upgrades-unsafe-allow-reachable delegatecall"},"functionSelector":"4f1ef286","id":540,"implemented":true,"kind":"function","modifiers":[{"id":528,"kind":"modifierInvocation","modifierName":{"id":527,"name":"onlyProxy","nameLocations":["4253:9:2"],"nodeType":"IdentifierPath","referencedDeclaration":488,"src":"4253:9:2"},"nodeType":"ModifierInvocation","src":"4253:9:2"}],"name":"upgradeToAndCall","nameLocation":"4167:16:2","nodeType":"FunctionDefinition","parameters":{"id":526,"nodeType":"ParameterList","parameters":[{"constant":false,"id":523,"mutability":"mutable","name":"newImplementation","nameLocation":"4192:17:2","nodeType":"VariableDeclaration","scope":540,"src":"4184:25:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":522,"name":"address","nodeType":"ElementaryTypeName","src":"4184:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":525,"mutability":"mutable","name":"data","nameLocation":"4224:4:2","nodeType":"VariableDeclaration","scope":540,"src":"4211:17:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":524,"name":"bytes","nodeType":"ElementaryTypeName","src":"4211:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4183:46:2"},"returnParameters":{"id":529,"nodeType":"ParameterList","parameters":[],"src":"4263:0:2"},"scope":630,"src":"4158:214:2","stateMutability":"payable","virtual":true,"visibility":"public"},{"body":{"id":561,"nodeType":"Block","src":"4644:267:2","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":555,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":549,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":546,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4679:4:2","typeDescriptions":{"typeIdentifier":"t_contract$_UUPSUpgradeable_$630","typeString":"contract UUPSUpgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_UUPSUpgradeable_$630","typeString":"contract UUPSUpgradeable"}],"id":545,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4671:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":544,"name":"address","nodeType":"ElementaryTypeName","src":"4671:7:2","typeDescriptions":{}}},"id":547,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4671:13:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":548,"name":"__self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":468,"src":"4688:6:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4671:23:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":554,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":550,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2048,"src":"4749:12:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1967Utils_$2048_$","typeString":"type(library ERC1967Utils)"}},"id":551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4762:17:2","memberName":"getImplementation","nodeType":"MemberAccess","referencedDeclaration":1806,"src":"4749:30:2","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":552,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4749:32:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":553,"name":"__self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":468,"src":"4785:6:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4749:42:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4671:120:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":560,"nodeType":"IfStatement","src":"4654:251:2","trueBody":{"id":559,"nodeType":"Block","src":"4844:61:2","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":556,"name":"UUPSUnauthorizedCallContext","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":475,"src":"4865:27:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":557,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4865:29:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":558,"nodeType":"RevertStatement","src":"4858:36:2"}]}}]},"documentation":{"id":541,"nodeType":"StructuredDocumentation","src":"4378:216:2","text":" @dev Reverts if the execution is not performed via delegatecall or the execution\n context is not of a proxy with an ERC1967-compliant implementation pointing to self.\n See {_onlyProxy}."},"id":562,"implemented":true,"kind":"function","modifiers":[],"name":"_checkProxy","nameLocation":"4608:11:2","nodeType":"FunctionDefinition","parameters":{"id":542,"nodeType":"ParameterList","parameters":[],"src":"4619:2:2"},"returnParameters":{"id":543,"nodeType":"ParameterList","parameters":[],"src":"4644:0:2"},"scope":630,"src":"4599:312:2","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":577,"nodeType":"Block","src":"5080:161:2","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":571,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":568,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5102:4:2","typeDescriptions":{"typeIdentifier":"t_contract$_UUPSUpgradeable_$630","typeString":"contract UUPSUpgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_UUPSUpgradeable_$630","typeString":"contract UUPSUpgradeable"}],"id":567,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5094:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":566,"name":"address","nodeType":"ElementaryTypeName","src":"5094:7:2","typeDescriptions":{}}},"id":569,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5094:13:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":570,"name":"__self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":468,"src":"5111:6:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5094:23:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":576,"nodeType":"IfStatement","src":"5090:145:2","trueBody":{"id":575,"nodeType":"Block","src":"5119:116:2","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":572,"name":"UUPSUnauthorizedCallContext","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":475,"src":"5195:27:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":573,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5195:29:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":574,"nodeType":"RevertStatement","src":"5188:36:2"}]}}]},"documentation":{"id":563,"nodeType":"StructuredDocumentation","src":"4917:106:2","text":" @dev Reverts if the execution is performed via delegatecall.\n See {notDelegated}."},"id":578,"implemented":true,"kind":"function","modifiers":[],"name":"_checkNotDelegated","nameLocation":"5037:18:2","nodeType":"FunctionDefinition","parameters":{"id":564,"nodeType":"ParameterList","parameters":[],"src":"5055:2:2"},"returnParameters":{"id":565,"nodeType":"ParameterList","parameters":[],"src":"5080:0:2"},"scope":630,"src":"5028:213:2","stateMutability":"view","virtual":true,"visibility":"internal"},{"documentation":{"id":579,"nodeType":"StructuredDocumentation","src":"5247:372:2","text":" @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract. Called by\n {upgradeToAndCall}.\n Normally, this function will use an xref:access.adoc[access control] modifier such as {Ownable-onlyOwner}.\n ```solidity\n function _authorizeUpgrade(address) internal onlyOwner {}\n ```"},"id":584,"implemented":false,"kind":"function","modifiers":[],"name":"_authorizeUpgrade","nameLocation":"5633:17:2","nodeType":"FunctionDefinition","parameters":{"id":582,"nodeType":"ParameterList","parameters":[{"constant":false,"id":581,"mutability":"mutable","name":"newImplementation","nameLocation":"5659:17:2","nodeType":"VariableDeclaration","scope":584,"src":"5651:25:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":580,"name":"address","nodeType":"ElementaryTypeName","src":"5651:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5650:27:2"},"returnParameters":{"id":583,"nodeType":"ParameterList","parameters":[],"src":"5694:0:2"},"scope":630,"src":"5624:71:2","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":628,"nodeType":"Block","src":"6137:453:2","statements":[{"clauses":[{"block":{"id":617,"nodeType":"Block","src":"6227:212:2","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":603,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":600,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":598,"src":"6245:4:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":601,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2048,"src":"6253:12:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1967Utils_$2048_$","typeString":"type(library ERC1967Utils)"}},"id":602,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6266:19:2","memberName":"IMPLEMENTATION_SLOT","nodeType":"MemberAccess","referencedDeclaration":1775,"src":"6253:32:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"6245:40:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":609,"nodeType":"IfStatement","src":"6241:120:2","trueBody":{"id":608,"nodeType":"Block","src":"6287:74:2","statements":[{"errorCall":{"arguments":[{"id":605,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":598,"src":"6341:4:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":604,"name":"UUPSUnsupportedProxiableUUID","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":480,"src":"6312:28:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_bytes32_$returns$__$","typeString":"function (bytes32) pure"}},"id":606,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6312:34:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":607,"nodeType":"RevertStatement","src":"6305:41:2"}]}},{"expression":{"arguments":[{"id":613,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":587,"src":"6404:17:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":614,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":589,"src":"6423:4:2","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":610,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2048,"src":"6374:12:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1967Utils_$2048_$","typeString":"type(library ERC1967Utils)"}},"id":612,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6387:16:2","memberName":"upgradeToAndCall","nodeType":"MemberAccess","referencedDeclaration":1867,"src":"6374:29:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,bytes memory)"}},"id":615,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6374:54:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":616,"nodeType":"ExpressionStatement","src":"6374:54:2"}]},"errorName":"","id":618,"nodeType":"TryCatchClause","parameters":{"id":599,"nodeType":"ParameterList","parameters":[{"constant":false,"id":598,"mutability":"mutable","name":"slot","nameLocation":"6221:4:2","nodeType":"VariableDeclaration","scope":618,"src":"6213:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":597,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6213:7:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6212:14:2"},"src":"6204:235:2"},{"block":{"id":625,"nodeType":"Block","src":"6446:138:2","statements":[{"errorCall":{"arguments":[{"id":622,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":587,"src":"6555:17:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":619,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2048,"src":"6513:12:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1967Utils_$2048_$","typeString":"type(library ERC1967Utils)"}},"id":621,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6526:28:2","memberName":"ERC1967InvalidImplementation","nodeType":"MemberAccess","referencedDeclaration":1780,"src":"6513:41:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":623,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6513:60:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":624,"nodeType":"RevertStatement","src":"6506:67:2"}]},"errorName":"","id":626,"nodeType":"TryCatchClause","src":"6440:144:2"}],"externalCall":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":593,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":587,"src":"6169:17:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":592,"name":"IERC1822Proxiable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1608,"src":"6151:17:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC1822Proxiable_$1608_$","typeString":"type(contract IERC1822Proxiable)"}},"id":594,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6151:36:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC1822Proxiable_$1608","typeString":"contract IERC1822Proxiable"}},"id":595,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6188:13:2","memberName":"proxiableUUID","nodeType":"MemberAccess","referencedDeclaration":1607,"src":"6151:50:2","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_bytes32_$","typeString":"function () view external returns (bytes32)"}},"id":596,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6151:52:2","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":627,"nodeType":"TryStatement","src":"6147:437:2"}]},"documentation":{"id":585,"nodeType":"StructuredDocumentation","src":"5701:346:2","text":" @dev Performs an implementation upgrade with a security check for UUPS proxies, and additional setup call.\n As a security check, {proxiableUUID} is invoked in the new implementation, and the return value\n is expected to be the implementation slot in ERC1967.\n Emits an {IERC1967-Upgraded} event."},"id":629,"implemented":true,"kind":"function","modifiers":[],"name":"_upgradeToAndCallUUPS","nameLocation":"6061:21:2","nodeType":"FunctionDefinition","parameters":{"id":590,"nodeType":"ParameterList","parameters":[{"constant":false,"id":587,"mutability":"mutable","name":"newImplementation","nameLocation":"6091:17:2","nodeType":"VariableDeclaration","scope":629,"src":"6083:25:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":586,"name":"address","nodeType":"ElementaryTypeName","src":"6083:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":589,"mutability":"mutable","name":"data","nameLocation":"6123:4:2","nodeType":"VariableDeclaration","scope":629,"src":"6110:17:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":588,"name":"bytes","nodeType":"ElementaryTypeName","src":"6110:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6082:46:2"},"returnParameters":{"id":591,"nodeType":"ParameterList","parameters":[],"src":"6137:0:2"},"scope":630,"src":"6052:538:2","stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"scope":631,"src":"986:5606:2","usedErrors":[211,214,475,480,1780,1793,2175,2178],"usedEvents":[219,1759]}],"src":"115:6478:2"},"id":2},"@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol","exportedSymbols":{"ContextUpgradeable":[1293],"ERC20Upgradeable":[1247],"IERC20":[2136],"IERC20Errors":[1650],"IERC20Metadata":[2162],"Initializable":[448]},"id":1248,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":632,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"105:24:3"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","id":634,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1248,"sourceUnit":2137,"src":"131:70:3","symbolAliases":[{"foreign":{"id":633,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"139:6:3","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","file":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","id":636,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1248,"sourceUnit":2163,"src":"202:97:3","symbolAliases":[{"foreign":{"id":635,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2162,"src":"210:14:3","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol","file":"../../utils/ContextUpgradeable.sol","id":638,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1248,"sourceUnit":1294,"src":"300:70:3","symbolAliases":[{"foreign":{"id":637,"name":"ContextUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1293,"src":"308:18:3","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/interfaces/draft-IERC6093.sol","file":"@openzeppelin/contracts/interfaces/draft-IERC6093.sol","id":640,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1248,"sourceUnit":1746,"src":"371:83:3","symbolAliases":[{"foreign":{"id":639,"name":"IERC20Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1650,"src":"379:12:3","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"../../proxy/utils/Initializable.sol","id":642,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1248,"sourceUnit":449,"src":"455:66:3","symbolAliases":[{"foreign":{"id":641,"name":"Initializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":448,"src":"463:13:3","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":644,"name":"Initializable","nameLocations":["1614:13:3"],"nodeType":"IdentifierPath","referencedDeclaration":448,"src":"1614:13:3"},"id":645,"nodeType":"InheritanceSpecifier","src":"1614:13:3"},{"baseName":{"id":646,"name":"ContextUpgradeable","nameLocations":["1629:18:3"],"nodeType":"IdentifierPath","referencedDeclaration":1293,"src":"1629:18:3"},"id":647,"nodeType":"InheritanceSpecifier","src":"1629:18:3"},{"baseName":{"id":648,"name":"IERC20","nameLocations":["1649:6:3"],"nodeType":"IdentifierPath","referencedDeclaration":2136,"src":"1649:6:3"},"id":649,"nodeType":"InheritanceSpecifier","src":"1649:6:3"},{"baseName":{"id":650,"name":"IERC20Metadata","nameLocations":["1657:14:3"],"nodeType":"IdentifierPath","referencedDeclaration":2162,"src":"1657:14:3"},"id":651,"nodeType":"InheritanceSpecifier","src":"1657:14:3"},{"baseName":{"id":652,"name":"IERC20Errors","nameLocations":["1673:12:3"],"nodeType":"IdentifierPath","referencedDeclaration":1650,"src":"1673:12:3"},"id":653,"nodeType":"InheritanceSpecifier","src":"1673:12:3"}],"canonicalName":"ERC20Upgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":643,"nodeType":"StructuredDocumentation","src":"523:1052:3","text":" @dev Implementation of the {IERC20} interface.\n This implementation is agnostic to the way tokens are created. This means\n that a supply mechanism has to be added in a derived contract using {_mint}.\n TIP: For a detailed writeup see our guide\n https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\n to implement supply mechanisms].\n The default value of {decimals} is 18. To change this, you should override\n this function so it returns a different value.\n We have followed general OpenZeppelin Contracts guidelines: functions revert\n instead returning `false` on failure. This behavior is nonetheless\n conventional and does not conflict with the expectations of ERC20\n applications.\n Additionally, an {Approval} event is emitted on calls to {transferFrom}.\n This allows applications to reconstruct the allowance for all accounts just\n by listening to said events. Other implementations of the EIP may not emit\n these events, as it isn't required by the specification."},"fullyImplemented":true,"id":1247,"linearizedBaseContracts":[1247,1650,2162,2136,1293,448],"name":"ERC20Upgradeable","nameLocation":"1594:16:3","nodeType":"ContractDefinition","nodes":[{"canonicalName":"ERC20Upgradeable.ERC20Storage","documentation":{"id":654,"nodeType":"StructuredDocumentation","src":"1692:63:3","text":"@custom:storage-location erc7201:openzeppelin.storage.ERC20"},"id":671,"members":[{"constant":false,"id":658,"mutability":"mutable","name":"_balances","nameLocation":"1826:9:3","nodeType":"VariableDeclaration","scope":671,"src":"1790:45:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":657,"keyName":"account","keyNameLocation":"1806:7:3","keyType":{"id":655,"name":"address","nodeType":"ElementaryTypeName","src":"1798:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1790:35:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":656,"name":"uint256","nodeType":"ElementaryTypeName","src":"1817:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"internal"},{"constant":false,"id":664,"mutability":"mutable","name":"_allowances","nameLocation":"1910:11:3","nodeType":"VariableDeclaration","scope":671,"src":"1846:75:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"typeName":{"id":663,"keyName":"account","keyNameLocation":"1862:7:3","keyType":{"id":659,"name":"address","nodeType":"ElementaryTypeName","src":"1854:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1846:63:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":662,"keyName":"spender","keyNameLocation":"1889:7:3","keyType":{"id":660,"name":"address","nodeType":"ElementaryTypeName","src":"1881:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1873:35:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":661,"name":"uint256","nodeType":"ElementaryTypeName","src":"1900:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"internal"},{"constant":false,"id":666,"mutability":"mutable","name":"_totalSupply","nameLocation":"1940:12:3","nodeType":"VariableDeclaration","scope":671,"src":"1932:20:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":665,"name":"uint256","nodeType":"ElementaryTypeName","src":"1932:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":668,"mutability":"mutable","name":"_name","nameLocation":"1970:5:3","nodeType":"VariableDeclaration","scope":671,"src":"1963:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":667,"name":"string","nodeType":"ElementaryTypeName","src":"1963:6:3","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":670,"mutability":"mutable","name":"_symbol","nameLocation":"1992:7:3","nodeType":"VariableDeclaration","scope":671,"src":"1985:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":669,"name":"string","nodeType":"ElementaryTypeName","src":"1985:6:3","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"name":"ERC20Storage","nameLocation":"1767:12:3","nodeType":"StructDefinition","scope":1247,"src":"1760:246:3","visibility":"public"},{"constant":true,"id":674,"mutability":"constant","name":"ERC20StorageLocation","nameLocation":"2146:20:3","nodeType":"VariableDeclaration","scope":1247,"src":"2121:114:3","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":672,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2121:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307835326336333234376531663437646231396435636530343630303330633439376630363763613463656266373162613938656561646162653230626163653030","id":673,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2169:66:3","typeDescriptions":{"typeIdentifier":"t_rational_37439836327923360225337895871394760624280537466773280374265222508165906222592_by_1","typeString":"int_const 3743...(69 digits omitted)...2592"},"value":"0x52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00"},"visibility":"private"},{"body":{"id":681,"nodeType":"Block","src":"2316:79:3","statements":[{"AST":{"nativeSrc":"2335:54:3","nodeType":"YulBlock","src":"2335:54:3","statements":[{"nativeSrc":"2349:30:3","nodeType":"YulAssignment","src":"2349:30:3","value":{"name":"ERC20StorageLocation","nativeSrc":"2359:20:3","nodeType":"YulIdentifier","src":"2359:20:3"},"variableNames":[{"name":"$.slot","nativeSrc":"2349:6:3","nodeType":"YulIdentifier","src":"2349:6:3"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":678,"isOffset":false,"isSlot":true,"src":"2349:6:3","suffix":"slot","valueSize":1},{"declaration":674,"isOffset":false,"isSlot":false,"src":"2359:20:3","valueSize":1}],"id":680,"nodeType":"InlineAssembly","src":"2326:63:3"}]},"id":682,"implemented":true,"kind":"function","modifiers":[],"name":"_getERC20Storage","nameLocation":"2251:16:3","nodeType":"FunctionDefinition","parameters":{"id":675,"nodeType":"ParameterList","parameters":[],"src":"2267:2:3"},"returnParameters":{"id":679,"nodeType":"ParameterList","parameters":[{"constant":false,"id":678,"mutability":"mutable","name":"$","nameLocation":"2313:1:3","nodeType":"VariableDeclaration","scope":682,"src":"2292:22:3","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$671_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage"},"typeName":{"id":677,"nodeType":"UserDefinedTypeName","pathNode":{"id":676,"name":"ERC20Storage","nameLocations":["2292:12:3"],"nodeType":"IdentifierPath","referencedDeclaration":671,"src":"2292:12:3"},"referencedDeclaration":671,"src":"2292:12:3","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$671_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage"}},"visibility":"internal"}],"src":"2291:24:3"},"scope":1247,"src":"2242:153:3","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":697,"nodeType":"Block","src":"2669:55:3","statements":[{"expression":{"arguments":[{"id":693,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":685,"src":"2702:5:3","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":694,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":687,"src":"2709:7:3","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":692,"name":"__ERC20_init_unchained","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":726,"src":"2679:22:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":695,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2679:38:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":696,"nodeType":"ExpressionStatement","src":"2679:38:3"}]},"documentation":{"id":683,"nodeType":"StructuredDocumentation","src":"2401:171:3","text":" @dev Sets the values for {name} and {symbol}.\n All two of these values are immutable: they can only be set once during\n construction."},"id":698,"implemented":true,"kind":"function","modifiers":[{"id":690,"kind":"modifierInvocation","modifierName":{"id":689,"name":"onlyInitializing","nameLocations":["2652:16:3"],"nodeType":"IdentifierPath","referencedDeclaration":357,"src":"2652:16:3"},"nodeType":"ModifierInvocation","src":"2652:16:3"}],"name":"__ERC20_init","nameLocation":"2586:12:3","nodeType":"FunctionDefinition","parameters":{"id":688,"nodeType":"ParameterList","parameters":[{"constant":false,"id":685,"mutability":"mutable","name":"name_","nameLocation":"2613:5:3","nodeType":"VariableDeclaration","scope":698,"src":"2599:19:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":684,"name":"string","nodeType":"ElementaryTypeName","src":"2599:6:3","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":687,"mutability":"mutable","name":"symbol_","nameLocation":"2634:7:3","nodeType":"VariableDeclaration","scope":698,"src":"2620:21:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":686,"name":"string","nodeType":"ElementaryTypeName","src":"2620:6:3","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2598:44:3"},"returnParameters":{"id":691,"nodeType":"ParameterList","parameters":[],"src":"2669:0:3"},"scope":1247,"src":"2577:147:3","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":725,"nodeType":"Block","src":"2832:114:3","statements":[{"assignments":[709],"declarations":[{"constant":false,"id":709,"mutability":"mutable","name":"$","nameLocation":"2863:1:3","nodeType":"VariableDeclaration","scope":725,"src":"2842:22:3","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$671_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage"},"typeName":{"id":708,"nodeType":"UserDefinedTypeName","pathNode":{"id":707,"name":"ERC20Storage","nameLocations":["2842:12:3"],"nodeType":"IdentifierPath","referencedDeclaration":671,"src":"2842:12:3"},"referencedDeclaration":671,"src":"2842:12:3","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$671_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage"}},"visibility":"internal"}],"id":712,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":710,"name":"_getERC20Storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":682,"src":"2867:16:3","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ERC20Storage_$671_storage_ptr_$","typeString":"function () pure returns (struct ERC20Upgradeable.ERC20Storage storage pointer)"}},"id":711,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2867:18:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$671_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"2842:43:3"},{"expression":{"id":717,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":713,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":709,"src":"2895:1:3","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$671_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"id":715,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2897:5:3","memberName":"_name","nodeType":"MemberAccess","referencedDeclaration":668,"src":"2895:7:3","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":716,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":700,"src":"2905:5:3","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"2895:15:3","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":718,"nodeType":"ExpressionStatement","src":"2895:15:3"},{"expression":{"id":723,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":719,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":709,"src":"2920:1:3","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$671_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"id":721,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2922:7:3","memberName":"_symbol","nodeType":"MemberAccess","referencedDeclaration":670,"src":"2920:9:3","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":722,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":702,"src":"2932:7:3","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"2920:19:3","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":724,"nodeType":"ExpressionStatement","src":"2920:19:3"}]},"id":726,"implemented":true,"kind":"function","modifiers":[{"id":705,"kind":"modifierInvocation","modifierName":{"id":704,"name":"onlyInitializing","nameLocations":["2815:16:3"],"nodeType":"IdentifierPath","referencedDeclaration":357,"src":"2815:16:3"},"nodeType":"ModifierInvocation","src":"2815:16:3"}],"name":"__ERC20_init_unchained","nameLocation":"2739:22:3","nodeType":"FunctionDefinition","parameters":{"id":703,"nodeType":"ParameterList","parameters":[{"constant":false,"id":700,"mutability":"mutable","name":"name_","nameLocation":"2776:5:3","nodeType":"VariableDeclaration","scope":726,"src":"2762:19:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":699,"name":"string","nodeType":"ElementaryTypeName","src":"2762:6:3","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":702,"mutability":"mutable","name":"symbol_","nameLocation":"2797:7:3","nodeType":"VariableDeclaration","scope":726,"src":"2783:21:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":701,"name":"string","nodeType":"ElementaryTypeName","src":"2783:6:3","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2761:44:3"},"returnParameters":{"id":706,"nodeType":"ParameterList","parameters":[],"src":"2832:0:3"},"scope":1247,"src":"2730:216:3","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[2149],"body":{"id":741,"nodeType":"Block","src":"3071:84:3","statements":[{"assignments":[734],"declarations":[{"constant":false,"id":734,"mutability":"mutable","name":"$","nameLocation":"3102:1:3","nodeType":"VariableDeclaration","scope":741,"src":"3081:22:3","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$671_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage"},"typeName":{"id":733,"nodeType":"UserDefinedTypeName","pathNode":{"id":732,"name":"ERC20Storage","nameLocations":["3081:12:3"],"nodeType":"IdentifierPath","referencedDeclaration":671,"src":"3081:12:3"},"referencedDeclaration":671,"src":"3081:12:3","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$671_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage"}},"visibility":"internal"}],"id":737,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":735,"name":"_getERC20Storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":682,"src":"3106:16:3","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ERC20Storage_$671_storage_ptr_$","typeString":"function () pure returns (struct ERC20Upgradeable.ERC20Storage storage pointer)"}},"id":736,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3106:18:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$671_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"3081:43:3"},{"expression":{"expression":{"id":738,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":734,"src":"3141:1:3","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$671_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"id":739,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3143:5:3","memberName":"_name","nodeType":"MemberAccess","referencedDeclaration":668,"src":"3141:7:3","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":731,"id":740,"nodeType":"Return","src":"3134:14:3"}]},"documentation":{"id":727,"nodeType":"StructuredDocumentation","src":"2952:54:3","text":" @dev Returns the name of the token."},"functionSelector":"06fdde03","id":742,"implemented":true,"kind":"function","modifiers":[],"name":"name","nameLocation":"3020:4:3","nodeType":"FunctionDefinition","parameters":{"id":728,"nodeType":"ParameterList","parameters":[],"src":"3024:2:3"},"returnParameters":{"id":731,"nodeType":"ParameterList","parameters":[{"constant":false,"id":730,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":742,"src":"3056:13:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":729,"name":"string","nodeType":"ElementaryTypeName","src":"3056:6:3","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3055:15:3"},"scope":1247,"src":"3011:144:3","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[2155],"body":{"id":757,"nodeType":"Block","src":"3330:86:3","statements":[{"assignments":[750],"declarations":[{"constant":false,"id":750,"mutability":"mutable","name":"$","nameLocation":"3361:1:3","nodeType":"VariableDeclaration","scope":757,"src":"3340:22:3","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$671_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage"},"typeName":{"id":749,"nodeType":"UserDefinedTypeName","pathNode":{"id":748,"name":"ERC20Storage","nameLocations":["3340:12:3"],"nodeType":"IdentifierPath","referencedDeclaration":671,"src":"3340:12:3"},"referencedDeclaration":671,"src":"3340:12:3","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$671_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage"}},"visibility":"internal"}],"id":753,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":751,"name":"_getERC20Storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":682,"src":"3365:16:3","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ERC20Storage_$671_storage_ptr_$","typeString":"function () pure returns (struct ERC20Upgradeable.ERC20Storage storage pointer)"}},"id":752,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3365:18:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$671_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"3340:43:3"},{"expression":{"expression":{"id":754,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":750,"src":"3400:1:3","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$671_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"id":755,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3402:7:3","memberName":"_symbol","nodeType":"MemberAccess","referencedDeclaration":670,"src":"3400:9:3","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":747,"id":756,"nodeType":"Return","src":"3393:16:3"}]},"documentation":{"id":743,"nodeType":"StructuredDocumentation","src":"3161:102:3","text":" @dev Returns the symbol of the token, usually a shorter version of the\n name."},"functionSelector":"95d89b41","id":758,"implemented":true,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"3277:6:3","nodeType":"FunctionDefinition","parameters":{"id":744,"nodeType":"ParameterList","parameters":[],"src":"3283:2:3"},"returnParameters":{"id":747,"nodeType":"ParameterList","parameters":[{"constant":false,"id":746,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":758,"src":"3315:13:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":745,"name":"string","nodeType":"ElementaryTypeName","src":"3315:6:3","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3314:15:3"},"scope":1247,"src":"3268:148:3","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[2161],"body":{"id":766,"nodeType":"Block","src":"4105:26:3","statements":[{"expression":{"hexValue":"3138","id":764,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4122:2:3","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"functionReturnParameters":763,"id":765,"nodeType":"Return","src":"4115:9:3"}]},"documentation":{"id":759,"nodeType":"StructuredDocumentation","src":"3422:622:3","text":" @dev Returns the number of decimals used to get its user representation.\n For example, if `decimals` equals `2`, a balance of `505` tokens should\n be displayed to a user as `5.05` (`505 / 10 ** 2`).\n Tokens usually opt for a value of 18, imitating the relationship between\n Ether and Wei. This is the default value returned by this function, unless\n it's overridden.\n NOTE: This information is only used for _display_ purposes: it in\n no way affects any of the arithmetic of the contract, including\n {IERC20-balanceOf} and {IERC20-transfer}."},"functionSelector":"313ce567","id":767,"implemented":true,"kind":"function","modifiers":[],"name":"decimals","nameLocation":"4058:8:3","nodeType":"FunctionDefinition","parameters":{"id":760,"nodeType":"ParameterList","parameters":[],"src":"4066:2:3"},"returnParameters":{"id":763,"nodeType":"ParameterList","parameters":[{"constant":false,"id":762,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":767,"src":"4098:5:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":761,"name":"uint8","nodeType":"ElementaryTypeName","src":"4098:5:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"4097:7:3"},"scope":1247,"src":"4049:82:3","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[2085],"body":{"id":782,"nodeType":"Block","src":"4252:91:3","statements":[{"assignments":[775],"declarations":[{"constant":false,"id":775,"mutability":"mutable","name":"$","nameLocation":"4283:1:3","nodeType":"VariableDeclaration","scope":782,"src":"4262:22:3","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$671_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage"},"typeName":{"id":774,"nodeType":"UserDefinedTypeName","pathNode":{"id":773,"name":"ERC20Storage","nameLocations":["4262:12:3"],"nodeType":"IdentifierPath","referencedDeclaration":671,"src":"4262:12:3"},"referencedDeclaration":671,"src":"4262:12:3","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$671_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage"}},"visibility":"internal"}],"id":778,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":776,"name":"_getERC20Storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":682,"src":"4287:16:3","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ERC20Storage_$671_storage_ptr_$","typeString":"function () pure returns (struct ERC20Upgradeable.ERC20Storage storage pointer)"}},"id":777,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4287:18:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$671_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"4262:43:3"},{"expression":{"expression":{"id":779,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":775,"src":"4322:1:3","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$671_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"id":780,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4324:12:3","memberName":"_totalSupply","nodeType":"MemberAccess","referencedDeclaration":666,"src":"4322:14:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":772,"id":781,"nodeType":"Return","src":"4315:21:3"}]},"documentation":{"id":768,"nodeType":"StructuredDocumentation","src":"4137:49:3","text":" @dev See {IERC20-totalSupply}."},"functionSelector":"18160ddd","id":783,"implemented":true,"kind":"function","modifiers":[],"name":"totalSupply","nameLocation":"4200:11:3","nodeType":"FunctionDefinition","parameters":{"id":769,"nodeType":"ParameterList","parameters":[],"src":"4211:2:3"},"returnParameters":{"id":772,"nodeType":"ParameterList","parameters":[{"constant":false,"id":771,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":783,"src":"4243:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":770,"name":"uint256","nodeType":"ElementaryTypeName","src":"4243:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4242:9:3"},"scope":1247,"src":"4191:152:3","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[2093],"body":{"id":802,"nodeType":"Block","src":"4475:97:3","statements":[{"assignments":[793],"declarations":[{"constant":false,"id":793,"mutability":"mutable","name":"$","nameLocation":"4506:1:3","nodeType":"VariableDeclaration","scope":802,"src":"4485:22:3","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$671_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage"},"typeName":{"id":792,"nodeType":"UserDefinedTypeName","pathNode":{"id":791,"name":"ERC20Storage","nameLocations":["4485:12:3"],"nodeType":"IdentifierPath","referencedDeclaration":671,"src":"4485:12:3"},"referencedDeclaration":671,"src":"4485:12:3","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$671_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage"}},"visibility":"internal"}],"id":796,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":794,"name":"_getERC20Storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":682,"src":"4510:16:3","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ERC20Storage_$671_storage_ptr_$","typeString":"function () pure returns (struct ERC20Upgradeable.ERC20Storage storage pointer)"}},"id":795,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4510:18:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$671_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"4485:43:3"},{"expression":{"baseExpression":{"expression":{"id":797,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":793,"src":"4545:1:3","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$671_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"id":798,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4547:9:3","memberName":"_balances","nodeType":"MemberAccess","referencedDeclaration":658,"src":"4545:11:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":800,"indexExpression":{"id":799,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":786,"src":"4557:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4545:20:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":790,"id":801,"nodeType":"Return","src":"4538:27:3"}]},"documentation":{"id":784,"nodeType":"StructuredDocumentation","src":"4349:47:3","text":" @dev See {IERC20-balanceOf}."},"functionSelector":"70a08231","id":803,"implemented":true,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"4410:9:3","nodeType":"FunctionDefinition","parameters":{"id":787,"nodeType":"ParameterList","parameters":[{"constant":false,"id":786,"mutability":"mutable","name":"account","nameLocation":"4428:7:3","nodeType":"VariableDeclaration","scope":803,"src":"4420:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":785,"name":"address","nodeType":"ElementaryTypeName","src":"4420:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4419:17:3"},"returnParameters":{"id":790,"nodeType":"ParameterList","parameters":[{"constant":false,"id":789,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":803,"src":"4466:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":788,"name":"uint256","nodeType":"ElementaryTypeName","src":"4466:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4465:9:3"},"scope":1247,"src":"4401:171:3","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[2103],"body":{"id":826,"nodeType":"Block","src":"4842:103:3","statements":[{"assignments":[814],"declarations":[{"constant":false,"id":814,"mutability":"mutable","name":"owner","nameLocation":"4860:5:3","nodeType":"VariableDeclaration","scope":826,"src":"4852:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":813,"name":"address","nodeType":"ElementaryTypeName","src":"4852:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":817,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":815,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1275,"src":"4868:10:3","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":816,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4868:12:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"4852:28:3"},{"expression":{"arguments":[{"id":819,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":814,"src":"4900:5:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":820,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":806,"src":"4907:2:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":821,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":808,"src":"4911:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":818,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":954,"src":"4890:9:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":822,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4890:27:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":823,"nodeType":"ExpressionStatement","src":"4890:27:3"},{"expression":{"hexValue":"74727565","id":824,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4934:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":812,"id":825,"nodeType":"Return","src":"4927:11:3"}]},"documentation":{"id":804,"nodeType":"StructuredDocumentation","src":"4578:184:3","text":" @dev See {IERC20-transfer}.\n Requirements:\n - `to` cannot be the zero address.\n - the caller must have a balance of at least `value`."},"functionSelector":"a9059cbb","id":827,"implemented":true,"kind":"function","modifiers":[],"name":"transfer","nameLocation":"4776:8:3","nodeType":"FunctionDefinition","parameters":{"id":809,"nodeType":"ParameterList","parameters":[{"constant":false,"id":806,"mutability":"mutable","name":"to","nameLocation":"4793:2:3","nodeType":"VariableDeclaration","scope":827,"src":"4785:10:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":805,"name":"address","nodeType":"ElementaryTypeName","src":"4785:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":808,"mutability":"mutable","name":"value","nameLocation":"4805:5:3","nodeType":"VariableDeclaration","scope":827,"src":"4797:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":807,"name":"uint256","nodeType":"ElementaryTypeName","src":"4797:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4784:27:3"},"returnParameters":{"id":812,"nodeType":"ParameterList","parameters":[{"constant":false,"id":811,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":827,"src":"4836:4:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":810,"name":"bool","nodeType":"ElementaryTypeName","src":"4836:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4835:6:3"},"scope":1247,"src":"4767:178:3","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[2113],"body":{"id":850,"nodeType":"Block","src":"5092:106:3","statements":[{"assignments":[839],"declarations":[{"constant":false,"id":839,"mutability":"mutable","name":"$","nameLocation":"5123:1:3","nodeType":"VariableDeclaration","scope":850,"src":"5102:22:3","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$671_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage"},"typeName":{"id":838,"nodeType":"UserDefinedTypeName","pathNode":{"id":837,"name":"ERC20Storage","nameLocations":["5102:12:3"],"nodeType":"IdentifierPath","referencedDeclaration":671,"src":"5102:12:3"},"referencedDeclaration":671,"src":"5102:12:3","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$671_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage"}},"visibility":"internal"}],"id":842,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":840,"name":"_getERC20Storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":682,"src":"5127:16:3","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ERC20Storage_$671_storage_ptr_$","typeString":"function () pure returns (struct ERC20Upgradeable.ERC20Storage storage pointer)"}},"id":841,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5127:18:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$671_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"5102:43:3"},{"expression":{"baseExpression":{"baseExpression":{"expression":{"id":843,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":839,"src":"5162:1:3","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$671_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"id":844,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5164:11:3","memberName":"_allowances","nodeType":"MemberAccess","referencedDeclaration":664,"src":"5162:13:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":846,"indexExpression":{"id":845,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":830,"src":"5176:5:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5162:20:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":848,"indexExpression":{"id":847,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":832,"src":"5183:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5162:29:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":836,"id":849,"nodeType":"Return","src":"5155:36:3"}]},"documentation":{"id":828,"nodeType":"StructuredDocumentation","src":"4951:47:3","text":" @dev See {IERC20-allowance}."},"functionSelector":"dd62ed3e","id":851,"implemented":true,"kind":"function","modifiers":[],"name":"allowance","nameLocation":"5012:9:3","nodeType":"FunctionDefinition","parameters":{"id":833,"nodeType":"ParameterList","parameters":[{"constant":false,"id":830,"mutability":"mutable","name":"owner","nameLocation":"5030:5:3","nodeType":"VariableDeclaration","scope":851,"src":"5022:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":829,"name":"address","nodeType":"ElementaryTypeName","src":"5022:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":832,"mutability":"mutable","name":"spender","nameLocation":"5045:7:3","nodeType":"VariableDeclaration","scope":851,"src":"5037:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":831,"name":"address","nodeType":"ElementaryTypeName","src":"5037:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5021:32:3"},"returnParameters":{"id":836,"nodeType":"ParameterList","parameters":[{"constant":false,"id":835,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":851,"src":"5083:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":834,"name":"uint256","nodeType":"ElementaryTypeName","src":"5083:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5082:9:3"},"scope":1247,"src":"5003:195:3","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[2123],"body":{"id":874,"nodeType":"Block","src":"5584:107:3","statements":[{"assignments":[862],"declarations":[{"constant":false,"id":862,"mutability":"mutable","name":"owner","nameLocation":"5602:5:3","nodeType":"VariableDeclaration","scope":874,"src":"5594:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":861,"name":"address","nodeType":"ElementaryTypeName","src":"5594:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":865,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":863,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1275,"src":"5610:10:3","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":864,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5610:12:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"5594:28:3"},{"expression":{"arguments":[{"id":867,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":862,"src":"5641:5:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":868,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":854,"src":"5648:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":869,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":856,"src":"5657:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":866,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[1130,1198],"referencedDeclaration":1130,"src":"5632:8:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":870,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5632:31:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":871,"nodeType":"ExpressionStatement","src":"5632:31:3"},{"expression":{"hexValue":"74727565","id":872,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5680:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":860,"id":873,"nodeType":"Return","src":"5673:11:3"}]},"documentation":{"id":852,"nodeType":"StructuredDocumentation","src":"5204:296:3","text":" @dev See {IERC20-approve}.\n NOTE: If `value` is the maximum `uint256`, the allowance is not updated on\n `transferFrom`. This is semantically equivalent to an infinite approval.\n Requirements:\n - `spender` cannot be the zero address."},"functionSelector":"095ea7b3","id":875,"implemented":true,"kind":"function","modifiers":[],"name":"approve","nameLocation":"5514:7:3","nodeType":"FunctionDefinition","parameters":{"id":857,"nodeType":"ParameterList","parameters":[{"constant":false,"id":854,"mutability":"mutable","name":"spender","nameLocation":"5530:7:3","nodeType":"VariableDeclaration","scope":875,"src":"5522:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":853,"name":"address","nodeType":"ElementaryTypeName","src":"5522:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":856,"mutability":"mutable","name":"value","nameLocation":"5547:5:3","nodeType":"VariableDeclaration","scope":875,"src":"5539:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":855,"name":"uint256","nodeType":"ElementaryTypeName","src":"5539:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5521:32:3"},"returnParameters":{"id":860,"nodeType":"ParameterList","parameters":[{"constant":false,"id":859,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":875,"src":"5578:4:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":858,"name":"bool","nodeType":"ElementaryTypeName","src":"5578:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5577:6:3"},"scope":1247,"src":"5505:186:3","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[2135],"body":{"id":906,"nodeType":"Block","src":"6344:151:3","statements":[{"assignments":[888],"declarations":[{"constant":false,"id":888,"mutability":"mutable","name":"spender","nameLocation":"6362:7:3","nodeType":"VariableDeclaration","scope":906,"src":"6354:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":887,"name":"address","nodeType":"ElementaryTypeName","src":"6354:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":891,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":889,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1275,"src":"6372:10:3","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":890,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6372:12:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"6354:30:3"},{"expression":{"arguments":[{"id":893,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":878,"src":"6410:4:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":894,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":888,"src":"6416:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":895,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":882,"src":"6425:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":892,"name":"_spendAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1246,"src":"6394:15:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":896,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6394:37:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":897,"nodeType":"ExpressionStatement","src":"6394:37:3"},{"expression":{"arguments":[{"id":899,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":878,"src":"6451:4:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":900,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":880,"src":"6457:2:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":901,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":882,"src":"6461:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":898,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":954,"src":"6441:9:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":902,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6441:26:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":903,"nodeType":"ExpressionStatement","src":"6441:26:3"},{"expression":{"hexValue":"74727565","id":904,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6484:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":886,"id":905,"nodeType":"Return","src":"6477:11:3"}]},"documentation":{"id":876,"nodeType":"StructuredDocumentation","src":"5697:549:3","text":" @dev See {IERC20-transferFrom}.\n Emits an {Approval} event indicating the updated allowance. This is not\n required by the EIP. See the note at the beginning of {ERC20}.\n NOTE: Does not update the allowance if the current allowance\n is the maximum `uint256`.\n Requirements:\n - `from` and `to` cannot be the zero address.\n - `from` must have a balance of at least `value`.\n - the caller must have allowance for ``from``'s tokens of at least\n `value`."},"functionSelector":"23b872dd","id":907,"implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"6260:12:3","nodeType":"FunctionDefinition","parameters":{"id":883,"nodeType":"ParameterList","parameters":[{"constant":false,"id":878,"mutability":"mutable","name":"from","nameLocation":"6281:4:3","nodeType":"VariableDeclaration","scope":907,"src":"6273:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":877,"name":"address","nodeType":"ElementaryTypeName","src":"6273:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":880,"mutability":"mutable","name":"to","nameLocation":"6295:2:3","nodeType":"VariableDeclaration","scope":907,"src":"6287:10:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":879,"name":"address","nodeType":"ElementaryTypeName","src":"6287:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":882,"mutability":"mutable","name":"value","nameLocation":"6307:5:3","nodeType":"VariableDeclaration","scope":907,"src":"6299:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":881,"name":"uint256","nodeType":"ElementaryTypeName","src":"6299:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6272:41:3"},"returnParameters":{"id":886,"nodeType":"ParameterList","parameters":[{"constant":false,"id":885,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":907,"src":"6338:4:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":884,"name":"bool","nodeType":"ElementaryTypeName","src":"6338:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6337:6:3"},"scope":1247,"src":"6251:244:3","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":953,"nodeType":"Block","src":"6937:231:3","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":922,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":917,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":910,"src":"6951:4:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":920,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6967:1:3","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":919,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6959:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":918,"name":"address","nodeType":"ElementaryTypeName","src":"6959:7:3","typeDescriptions":{}}},"id":921,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6959:10:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6951:18:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":931,"nodeType":"IfStatement","src":"6947:86:3","trueBody":{"id":930,"nodeType":"Block","src":"6971:62:3","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":926,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7019:1:3","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":925,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7011:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":924,"name":"address","nodeType":"ElementaryTypeName","src":"7011:7:3","typeDescriptions":{}}},"id":927,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7011:10:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":923,"name":"ERC20InvalidSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1625,"src":"6992:18:3","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":928,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6992:30:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":929,"nodeType":"RevertStatement","src":"6985:37:3"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":937,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":932,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":912,"src":"7046:2:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":935,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7060:1:3","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":934,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7052:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":933,"name":"address","nodeType":"ElementaryTypeName","src":"7052:7:3","typeDescriptions":{}}},"id":936,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7052:10:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7046:16:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":946,"nodeType":"IfStatement","src":"7042:86:3","trueBody":{"id":945,"nodeType":"Block","src":"7064:64:3","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":941,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7114:1:3","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":940,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7106:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":939,"name":"address","nodeType":"ElementaryTypeName","src":"7106:7:3","typeDescriptions":{}}},"id":942,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7106:10:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":938,"name":"ERC20InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1630,"src":"7085:20:3","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":943,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7085:32:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":944,"nodeType":"RevertStatement","src":"7078:39:3"}]}},{"expression":{"arguments":[{"id":948,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":910,"src":"7145:4:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":949,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":912,"src":"7151:2:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":950,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":914,"src":"7155:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":947,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1046,"src":"7137:7:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":951,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7137:24:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":952,"nodeType":"ExpressionStatement","src":"7137:24:3"}]},"documentation":{"id":908,"nodeType":"StructuredDocumentation","src":"6501:362:3","text":" @dev Moves a `value` amount of tokens from `from` to `to`.\n This internal function is equivalent to {transfer}, and can be used to\n e.g. implement automatic token fees, slashing mechanisms, etc.\n Emits a {Transfer} event.\n NOTE: This function is not virtual, {_update} should be overridden instead."},"id":954,"implemented":true,"kind":"function","modifiers":[],"name":"_transfer","nameLocation":"6877:9:3","nodeType":"FunctionDefinition","parameters":{"id":915,"nodeType":"ParameterList","parameters":[{"constant":false,"id":910,"mutability":"mutable","name":"from","nameLocation":"6895:4:3","nodeType":"VariableDeclaration","scope":954,"src":"6887:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":909,"name":"address","nodeType":"ElementaryTypeName","src":"6887:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":912,"mutability":"mutable","name":"to","nameLocation":"6909:2:3","nodeType":"VariableDeclaration","scope":954,"src":"6901:10:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":911,"name":"address","nodeType":"ElementaryTypeName","src":"6901:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":914,"mutability":"mutable","name":"value","nameLocation":"6921:5:3","nodeType":"VariableDeclaration","scope":954,"src":"6913:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":913,"name":"uint256","nodeType":"ElementaryTypeName","src":"6913:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6886:41:3"},"returnParameters":{"id":916,"nodeType":"ParameterList","parameters":[],"src":"6937:0:3"},"scope":1247,"src":"6868:300:3","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1045,"nodeType":"Block","src":"7558:1095:3","statements":[{"assignments":[966],"declarations":[{"constant":false,"id":966,"mutability":"mutable","name":"$","nameLocation":"7589:1:3","nodeType":"VariableDeclaration","scope":1045,"src":"7568:22:3","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$671_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage"},"typeName":{"id":965,"nodeType":"UserDefinedTypeName","pathNode":{"id":964,"name":"ERC20Storage","nameLocations":["7568:12:3"],"nodeType":"IdentifierPath","referencedDeclaration":671,"src":"7568:12:3"},"referencedDeclaration":671,"src":"7568:12:3","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$671_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage"}},"visibility":"internal"}],"id":969,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":967,"name":"_getERC20Storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":682,"src":"7593:16:3","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ERC20Storage_$671_storage_ptr_$","typeString":"function () pure returns (struct ERC20Upgradeable.ERC20Storage storage pointer)"}},"id":968,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7593:18:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$671_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"7568:43:3"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":975,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":970,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":957,"src":"7625:4:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":973,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7641:1:3","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":972,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7633:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":971,"name":"address","nodeType":"ElementaryTypeName","src":"7633:7:3","typeDescriptions":{}}},"id":974,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7633:10:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7625:18:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1012,"nodeType":"Block","src":"7801:366:3","statements":[{"assignments":[984],"declarations":[{"constant":false,"id":984,"mutability":"mutable","name":"fromBalance","nameLocation":"7823:11:3","nodeType":"VariableDeclaration","scope":1012,"src":"7815:19:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":983,"name":"uint256","nodeType":"ElementaryTypeName","src":"7815:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":989,"initialValue":{"baseExpression":{"expression":{"id":985,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":966,"src":"7837:1:3","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$671_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"id":986,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7839:9:3","memberName":"_balances","nodeType":"MemberAccess","referencedDeclaration":658,"src":"7837:11:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":988,"indexExpression":{"id":987,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":957,"src":"7849:4:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7837:17:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7815:39:3"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":992,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":990,"name":"fromBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":984,"src":"7872:11:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":991,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":961,"src":"7886:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7872:19:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1000,"nodeType":"IfStatement","src":"7868:115:3","trueBody":{"id":999,"nodeType":"Block","src":"7893:90:3","statements":[{"errorCall":{"arguments":[{"id":994,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":957,"src":"7943:4:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":995,"name":"fromBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":984,"src":"7949:11:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":996,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":961,"src":"7962:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":993,"name":"ERC20InsufficientBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1620,"src":"7918:24:3","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,uint256,uint256) pure"}},"id":997,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7918:50:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":998,"nodeType":"RevertStatement","src":"7911:57:3"}]}},{"id":1011,"nodeType":"UncheckedBlock","src":"7996:161:3","statements":[{"expression":{"id":1009,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":1001,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":966,"src":"8103:1:3","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$671_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"id":1004,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8105:9:3","memberName":"_balances","nodeType":"MemberAccess","referencedDeclaration":658,"src":"8103:11:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":1005,"indexExpression":{"id":1003,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":957,"src":"8115:4:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8103:17:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1008,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1006,"name":"fromBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":984,"src":"8123:11:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":1007,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":961,"src":"8137:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8123:19:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8103:39:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1010,"nodeType":"ExpressionStatement","src":"8103:39:3"}]}]},"id":1013,"nodeType":"IfStatement","src":"7621:546:3","trueBody":{"id":982,"nodeType":"Block","src":"7645:150:3","statements":[{"expression":{"id":980,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":976,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":966,"src":"7761:1:3","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$671_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"id":978,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"7763:12:3","memberName":"_totalSupply","nodeType":"MemberAccess","referencedDeclaration":666,"src":"7761:14:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":979,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":961,"src":"7779:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7761:23:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":981,"nodeType":"ExpressionStatement","src":"7761:23:3"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1019,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1014,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":959,"src":"8181:2:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":1017,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8195:1:3","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1016,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8187:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1015,"name":"address","nodeType":"ElementaryTypeName","src":"8187:7:3","typeDescriptions":{}}},"id":1018,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8187:10:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"8181:16:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1037,"nodeType":"Block","src":"8398:208:3","statements":[{"id":1036,"nodeType":"UncheckedBlock","src":"8412:184:3","statements":[{"expression":{"id":1034,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":1028,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":966,"src":"8557:1:3","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$671_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"id":1031,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8559:9:3","memberName":"_balances","nodeType":"MemberAccess","referencedDeclaration":658,"src":"8557:11:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":1032,"indexExpression":{"id":1030,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":959,"src":"8569:2:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8557:15:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":1033,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":961,"src":"8576:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8557:24:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1035,"nodeType":"ExpressionStatement","src":"8557:24:3"}]}]},"id":1038,"nodeType":"IfStatement","src":"8177:429:3","trueBody":{"id":1027,"nodeType":"Block","src":"8199:193:3","statements":[{"id":1026,"nodeType":"UncheckedBlock","src":"8213:169:3","statements":[{"expression":{"id":1024,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1020,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":966,"src":"8344:1:3","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$671_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"id":1022,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"8346:12:3","memberName":"_totalSupply","nodeType":"MemberAccess","referencedDeclaration":666,"src":"8344:14:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":1023,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":961,"src":"8362:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8344:23:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1025,"nodeType":"ExpressionStatement","src":"8344:23:3"}]}]}},{"eventCall":{"arguments":[{"id":1040,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":957,"src":"8630:4:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1041,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":959,"src":"8636:2:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1042,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":961,"src":"8640:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1039,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2070,"src":"8621:8:3","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":1043,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8621:25:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1044,"nodeType":"EmitStatement","src":"8616:30:3"}]},"documentation":{"id":955,"nodeType":"StructuredDocumentation","src":"7174:304:3","text":" @dev Transfers a `value` amount of tokens from `from` to `to`, or alternatively mints (or burns) if `from`\n (or `to`) is the zero address. All customizations to transfers, mints, and burns should be done by overriding\n this function.\n Emits a {Transfer} event."},"id":1046,"implemented":true,"kind":"function","modifiers":[],"name":"_update","nameLocation":"7492:7:3","nodeType":"FunctionDefinition","parameters":{"id":962,"nodeType":"ParameterList","parameters":[{"constant":false,"id":957,"mutability":"mutable","name":"from","nameLocation":"7508:4:3","nodeType":"VariableDeclaration","scope":1046,"src":"7500:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":956,"name":"address","nodeType":"ElementaryTypeName","src":"7500:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":959,"mutability":"mutable","name":"to","nameLocation":"7522:2:3","nodeType":"VariableDeclaration","scope":1046,"src":"7514:10:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":958,"name":"address","nodeType":"ElementaryTypeName","src":"7514:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":961,"mutability":"mutable","name":"value","nameLocation":"7534:5:3","nodeType":"VariableDeclaration","scope":1046,"src":"7526:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":960,"name":"uint256","nodeType":"ElementaryTypeName","src":"7526:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7499:41:3"},"returnParameters":{"id":963,"nodeType":"ParameterList","parameters":[],"src":"7558:0:3"},"scope":1247,"src":"7483:1170:3","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":1078,"nodeType":"Block","src":"9052:152:3","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1059,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1054,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1049,"src":"9066:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":1057,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9085:1:3","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1056,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9077:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1055,"name":"address","nodeType":"ElementaryTypeName","src":"9077:7:3","typeDescriptions":{}}},"id":1058,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9077:10:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9066:21:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1068,"nodeType":"IfStatement","src":"9062:91:3","trueBody":{"id":1067,"nodeType":"Block","src":"9089:64:3","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":1063,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9139:1:3","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1062,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9131:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1061,"name":"address","nodeType":"ElementaryTypeName","src":"9131:7:3","typeDescriptions":{}}},"id":1064,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9131:10:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1060,"name":"ERC20InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1630,"src":"9110:20:3","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":1065,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9110:32:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1066,"nodeType":"RevertStatement","src":"9103:39:3"}]}},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":1072,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9178:1:3","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1071,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9170:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1070,"name":"address","nodeType":"ElementaryTypeName","src":"9170:7:3","typeDescriptions":{}}},"id":1073,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9170:10:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1074,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1049,"src":"9182:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1075,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1051,"src":"9191:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1069,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1046,"src":"9162:7:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":1076,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9162:35:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1077,"nodeType":"ExpressionStatement","src":"9162:35:3"}]},"documentation":{"id":1047,"nodeType":"StructuredDocumentation","src":"8659:332:3","text":" @dev Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0).\n Relies on the `_update` mechanism\n Emits a {Transfer} event with `from` set to the zero address.\n NOTE: This function is not virtual, {_update} should be overridden instead."},"id":1079,"implemented":true,"kind":"function","modifiers":[],"name":"_mint","nameLocation":"9005:5:3","nodeType":"FunctionDefinition","parameters":{"id":1052,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1049,"mutability":"mutable","name":"account","nameLocation":"9019:7:3","nodeType":"VariableDeclaration","scope":1079,"src":"9011:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1048,"name":"address","nodeType":"ElementaryTypeName","src":"9011:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1051,"mutability":"mutable","name":"value","nameLocation":"9036:5:3","nodeType":"VariableDeclaration","scope":1079,"src":"9028:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1050,"name":"uint256","nodeType":"ElementaryTypeName","src":"9028:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9010:32:3"},"returnParameters":{"id":1053,"nodeType":"ParameterList","parameters":[],"src":"9052:0:3"},"scope":1247,"src":"8996:208:3","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1111,"nodeType":"Block","src":"9578:150:3","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1092,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1087,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1082,"src":"9592:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":1090,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9611:1:3","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1089,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9603:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1088,"name":"address","nodeType":"ElementaryTypeName","src":"9603:7:3","typeDescriptions":{}}},"id":1091,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9603:10:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9592:21:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1101,"nodeType":"IfStatement","src":"9588:89:3","trueBody":{"id":1100,"nodeType":"Block","src":"9615:62:3","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":1096,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9663:1:3","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1095,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9655:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1094,"name":"address","nodeType":"ElementaryTypeName","src":"9655:7:3","typeDescriptions":{}}},"id":1097,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9655:10:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1093,"name":"ERC20InvalidSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1625,"src":"9636:18:3","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":1098,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9636:30:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1099,"nodeType":"RevertStatement","src":"9629:37:3"}]}},{"expression":{"arguments":[{"id":1103,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1082,"src":"9694:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":1106,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9711:1:3","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1105,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9703:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1104,"name":"address","nodeType":"ElementaryTypeName","src":"9703:7:3","typeDescriptions":{}}},"id":1107,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9703:10:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1108,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1084,"src":"9715:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1102,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1046,"src":"9686:7:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":1109,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9686:35:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1110,"nodeType":"ExpressionStatement","src":"9686:35:3"}]},"documentation":{"id":1080,"nodeType":"StructuredDocumentation","src":"9210:307:3","text":" @dev Destroys a `value` amount of tokens from `account`, lowering the total supply.\n Relies on the `_update` mechanism.\n Emits a {Transfer} event with `to` set to the zero address.\n NOTE: This function is not virtual, {_update} should be overridden instead"},"id":1112,"implemented":true,"kind":"function","modifiers":[],"name":"_burn","nameLocation":"9531:5:3","nodeType":"FunctionDefinition","parameters":{"id":1085,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1082,"mutability":"mutable","name":"account","nameLocation":"9545:7:3","nodeType":"VariableDeclaration","scope":1112,"src":"9537:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1081,"name":"address","nodeType":"ElementaryTypeName","src":"9537:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1084,"mutability":"mutable","name":"value","nameLocation":"9562:5:3","nodeType":"VariableDeclaration","scope":1112,"src":"9554:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1083,"name":"uint256","nodeType":"ElementaryTypeName","src":"9554:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9536:32:3"},"returnParameters":{"id":1086,"nodeType":"ParameterList","parameters":[],"src":"9578:0:3"},"scope":1247,"src":"9522:206:3","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1129,"nodeType":"Block","src":"10338:54:3","statements":[{"expression":{"arguments":[{"id":1123,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1115,"src":"10357:5:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1124,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1117,"src":"10364:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1125,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1119,"src":"10373:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"74727565","id":1126,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10380:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":1122,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[1130,1198],"referencedDeclaration":1198,"src":"10348:8:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bool_$returns$__$","typeString":"function (address,address,uint256,bool)"}},"id":1127,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10348:37:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1128,"nodeType":"ExpressionStatement","src":"10348:37:3"}]},"documentation":{"id":1113,"nodeType":"StructuredDocumentation","src":"9734:525:3","text":" @dev Sets `value` as the allowance of `spender` over the `owner` s tokens.\n This internal function is equivalent to `approve`, and can be used to\n e.g. set automatic allowances for certain subsystems, etc.\n Emits an {Approval} event.\n Requirements:\n - `owner` cannot be the zero address.\n - `spender` cannot be the zero address.\n Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument."},"id":1130,"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"10273:8:3","nodeType":"FunctionDefinition","parameters":{"id":1120,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1115,"mutability":"mutable","name":"owner","nameLocation":"10290:5:3","nodeType":"VariableDeclaration","scope":1130,"src":"10282:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1114,"name":"address","nodeType":"ElementaryTypeName","src":"10282:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1117,"mutability":"mutable","name":"spender","nameLocation":"10305:7:3","nodeType":"VariableDeclaration","scope":1130,"src":"10297:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1116,"name":"address","nodeType":"ElementaryTypeName","src":"10297:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1119,"mutability":"mutable","name":"value","nameLocation":"10322:5:3","nodeType":"VariableDeclaration","scope":1130,"src":"10314:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1118,"name":"uint256","nodeType":"ElementaryTypeName","src":"10314:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10281:47:3"},"returnParameters":{"id":1121,"nodeType":"ParameterList","parameters":[],"src":"10338:0:3"},"scope":1247,"src":"10264:128:3","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1197,"nodeType":"Block","src":"11322:389:3","statements":[{"assignments":[1144],"declarations":[{"constant":false,"id":1144,"mutability":"mutable","name":"$","nameLocation":"11353:1:3","nodeType":"VariableDeclaration","scope":1197,"src":"11332:22:3","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$671_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage"},"typeName":{"id":1143,"nodeType":"UserDefinedTypeName","pathNode":{"id":1142,"name":"ERC20Storage","nameLocations":["11332:12:3"],"nodeType":"IdentifierPath","referencedDeclaration":671,"src":"11332:12:3"},"referencedDeclaration":671,"src":"11332:12:3","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$671_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage"}},"visibility":"internal"}],"id":1147,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":1145,"name":"_getERC20Storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":682,"src":"11357:16:3","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ERC20Storage_$671_storage_ptr_$","typeString":"function () pure returns (struct ERC20Upgradeable.ERC20Storage storage pointer)"}},"id":1146,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11357:18:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$671_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"11332:43:3"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1153,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1148,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1133,"src":"11389:5:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":1151,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11406:1:3","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1150,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11398:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1149,"name":"address","nodeType":"ElementaryTypeName","src":"11398:7:3","typeDescriptions":{}}},"id":1152,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11398:10:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"11389:19:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1162,"nodeType":"IfStatement","src":"11385:89:3","trueBody":{"id":1161,"nodeType":"Block","src":"11410:64:3","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":1157,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11460:1:3","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1156,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11452:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1155,"name":"address","nodeType":"ElementaryTypeName","src":"11452:7:3","typeDescriptions":{}}},"id":1158,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11452:10:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1154,"name":"ERC20InvalidApprover","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1644,"src":"11431:20:3","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":1159,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11431:32:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1160,"nodeType":"RevertStatement","src":"11424:39:3"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1168,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1163,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1135,"src":"11487:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":1166,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11506:1:3","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1165,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11498:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1164,"name":"address","nodeType":"ElementaryTypeName","src":"11498:7:3","typeDescriptions":{}}},"id":1167,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11498:10:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"11487:21:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1177,"nodeType":"IfStatement","src":"11483:90:3","trueBody":{"id":1176,"nodeType":"Block","src":"11510:63:3","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":1172,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11559:1:3","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1171,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11551:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1170,"name":"address","nodeType":"ElementaryTypeName","src":"11551:7:3","typeDescriptions":{}}},"id":1173,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11551:10:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1169,"name":"ERC20InvalidSpender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1649,"src":"11531:19:3","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":1174,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11531:31:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1175,"nodeType":"RevertStatement","src":"11524:38:3"}]}},{"expression":{"id":1186,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"expression":{"id":1178,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1144,"src":"11582:1:3","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$671_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"id":1182,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11584:11:3","memberName":"_allowances","nodeType":"MemberAccess","referencedDeclaration":664,"src":"11582:13:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":1183,"indexExpression":{"id":1180,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1133,"src":"11596:5:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11582:20:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":1184,"indexExpression":{"id":1181,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1135,"src":"11603:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"11582:29:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1185,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1137,"src":"11614:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11582:37:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1187,"nodeType":"ExpressionStatement","src":"11582:37:3"},{"condition":{"id":1188,"name":"emitEvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1139,"src":"11633:9:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1196,"nodeType":"IfStatement","src":"11629:76:3","trueBody":{"id":1195,"nodeType":"Block","src":"11644:61:3","statements":[{"eventCall":{"arguments":[{"id":1190,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1133,"src":"11672:5:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1191,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1135,"src":"11679:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1192,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1137,"src":"11688:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1189,"name":"Approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2079,"src":"11663:8:3","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":1193,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11663:31:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1194,"nodeType":"EmitStatement","src":"11658:36:3"}]}}]},"documentation":{"id":1131,"nodeType":"StructuredDocumentation","src":"10398:821:3","text":" @dev Variant of {_approve} with an optional flag to enable or disable the {Approval} event.\n By default (when calling {_approve}) the flag is set to true. On the other hand, approval changes made by\n `_spendAllowance` during the `transferFrom` operation set the flag to false. This saves gas by not emitting any\n `Approval` event during `transferFrom` operations.\n Anyone who wishes to continue emitting `Approval` events on the`transferFrom` operation can force the flag to\n true using the following override:\n ```\n function _approve(address owner, address spender, uint256 value, bool) internal virtual override {\n     super._approve(owner, spender, value, true);\n }\n ```\n Requirements are the same as {_approve}."},"id":1198,"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"11233:8:3","nodeType":"FunctionDefinition","parameters":{"id":1140,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1133,"mutability":"mutable","name":"owner","nameLocation":"11250:5:3","nodeType":"VariableDeclaration","scope":1198,"src":"11242:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1132,"name":"address","nodeType":"ElementaryTypeName","src":"11242:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1135,"mutability":"mutable","name":"spender","nameLocation":"11265:7:3","nodeType":"VariableDeclaration","scope":1198,"src":"11257:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1134,"name":"address","nodeType":"ElementaryTypeName","src":"11257:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1137,"mutability":"mutable","name":"value","nameLocation":"11282:5:3","nodeType":"VariableDeclaration","scope":1198,"src":"11274:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1136,"name":"uint256","nodeType":"ElementaryTypeName","src":"11274:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1139,"mutability":"mutable","name":"emitEvent","nameLocation":"11294:9:3","nodeType":"VariableDeclaration","scope":1198,"src":"11289:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1138,"name":"bool","nodeType":"ElementaryTypeName","src":"11289:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"11241:63:3"},"returnParameters":{"id":1141,"nodeType":"ParameterList","parameters":[],"src":"11322:0:3"},"scope":1247,"src":"11224:487:3","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":1245,"nodeType":"Block","src":"12082:388:3","statements":[{"assignments":[1209],"declarations":[{"constant":false,"id":1209,"mutability":"mutable","name":"currentAllowance","nameLocation":"12100:16:3","nodeType":"VariableDeclaration","scope":1245,"src":"12092:24:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1208,"name":"uint256","nodeType":"ElementaryTypeName","src":"12092:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1214,"initialValue":{"arguments":[{"id":1211,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1201,"src":"12129:5:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1212,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1203,"src":"12136:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1210,"name":"allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":851,"src":"12119:9:3","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view returns (uint256)"}},"id":1213,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12119:25:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12092:52:3"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1221,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1215,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1209,"src":"12158:16:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"arguments":[{"id":1218,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12183:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1217,"name":"uint256","nodeType":"ElementaryTypeName","src":"12183:7:3","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":1216,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"12178:4:3","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1219,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12178:13:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":1220,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"12192:3:3","memberName":"max","nodeType":"MemberAccess","src":"12178:17:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12158:37:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1244,"nodeType":"IfStatement","src":"12154:310:3","trueBody":{"id":1243,"nodeType":"Block","src":"12197:267:3","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1224,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1222,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1209,"src":"12215:16:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1223,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1205,"src":"12234:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12215:24:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1232,"nodeType":"IfStatement","src":"12211:130:3","trueBody":{"id":1231,"nodeType":"Block","src":"12241:100:3","statements":[{"errorCall":{"arguments":[{"id":1226,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1203,"src":"12293:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1227,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1209,"src":"12302:16:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1228,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1205,"src":"12320:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1225,"name":"ERC20InsufficientAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1639,"src":"12266:26:3","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,uint256,uint256) pure"}},"id":1229,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12266:60:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1230,"nodeType":"RevertStatement","src":"12259:67:3"}]}},{"id":1242,"nodeType":"UncheckedBlock","src":"12354:100:3","statements":[{"expression":{"arguments":[{"id":1234,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1201,"src":"12391:5:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1235,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1203,"src":"12398:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1238,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1236,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1209,"src":"12407:16:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":1237,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1205,"src":"12426:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12407:24:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"66616c7365","id":1239,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"12433:5:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":1233,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[1130,1198],"referencedDeclaration":1198,"src":"12382:8:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bool_$returns$__$","typeString":"function (address,address,uint256,bool)"}},"id":1240,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12382:57:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1241,"nodeType":"ExpressionStatement","src":"12382:57:3"}]}]}}]},"documentation":{"id":1199,"nodeType":"StructuredDocumentation","src":"11717:271:3","text":" @dev Updates `owner` s allowance for `spender` based on spent `value`.\n Does not update the allowance value in case of infinite allowance.\n Revert if not enough allowance is available.\n Does not emit an {Approval} event."},"id":1246,"implemented":true,"kind":"function","modifiers":[],"name":"_spendAllowance","nameLocation":"12002:15:3","nodeType":"FunctionDefinition","parameters":{"id":1206,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1201,"mutability":"mutable","name":"owner","nameLocation":"12026:5:3","nodeType":"VariableDeclaration","scope":1246,"src":"12018:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1200,"name":"address","nodeType":"ElementaryTypeName","src":"12018:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1203,"mutability":"mutable","name":"spender","nameLocation":"12041:7:3","nodeType":"VariableDeclaration","scope":1246,"src":"12033:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1202,"name":"address","nodeType":"ElementaryTypeName","src":"12033:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1205,"mutability":"mutable","name":"value","nameLocation":"12058:5:3","nodeType":"VariableDeclaration","scope":1246,"src":"12050:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1204,"name":"uint256","nodeType":"ElementaryTypeName","src":"12050:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12017:47:3"},"returnParameters":{"id":1207,"nodeType":"ParameterList","parameters":[],"src":"12082:0:3"},"scope":1247,"src":"11993:477:3","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":1248,"src":"1576:10896:3","usedErrors":[211,214,1620,1625,1630,1639,1644,1649],"usedEvents":[219,2070,2079]}],"src":"105:12368:3"},"id":3},"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol","exportedSymbols":{"ContextUpgradeable":[1293],"Initializable":[448]},"id":1294,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1249,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"101:24:4"},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"../proxy/utils/Initializable.sol","id":1251,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1294,"sourceUnit":449,"src":"126:63:4","symbolAliases":[{"foreign":{"id":1250,"name":"Initializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":448,"src":"134:13:4","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":1253,"name":"Initializable","nameLocations":["728:13:4"],"nodeType":"IdentifierPath","referencedDeclaration":448,"src":"728:13:4"},"id":1254,"nodeType":"InheritanceSpecifier","src":"728:13:4"}],"canonicalName":"ContextUpgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":1252,"nodeType":"StructuredDocumentation","src":"191:496:4","text":" @dev Provides information about the current execution context, including the\n sender of the transaction and its data. While these are generally available\n via msg.sender and msg.data, they should not be accessed in such a direct\n manner, since when dealing with meta-transactions the account sending and\n paying for execution may not be the actual sender (as far as an application\n is concerned).\n This contract is only required for intermediate, library-like contracts."},"fullyImplemented":true,"id":1293,"linearizedBaseContracts":[1293,448],"name":"ContextUpgradeable","nameLocation":"706:18:4","nodeType":"ContractDefinition","nodes":[{"body":{"id":1259,"nodeType":"Block","src":"800:7:4","statements":[]},"id":1260,"implemented":true,"kind":"function","modifiers":[{"id":1257,"kind":"modifierInvocation","modifierName":{"id":1256,"name":"onlyInitializing","nameLocations":["783:16:4"],"nodeType":"IdentifierPath","referencedDeclaration":357,"src":"783:16:4"},"nodeType":"ModifierInvocation","src":"783:16:4"}],"name":"__Context_init","nameLocation":"757:14:4","nodeType":"FunctionDefinition","parameters":{"id":1255,"nodeType":"ParameterList","parameters":[],"src":"771:2:4"},"returnParameters":{"id":1258,"nodeType":"ParameterList","parameters":[],"src":"800:0:4"},"scope":1293,"src":"748:59:4","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1265,"nodeType":"Block","src":"875:7:4","statements":[]},"id":1266,"implemented":true,"kind":"function","modifiers":[{"id":1263,"kind":"modifierInvocation","modifierName":{"id":1262,"name":"onlyInitializing","nameLocations":["858:16:4"],"nodeType":"IdentifierPath","referencedDeclaration":357,"src":"858:16:4"},"nodeType":"ModifierInvocation","src":"858:16:4"}],"name":"__Context_init_unchained","nameLocation":"822:24:4","nodeType":"FunctionDefinition","parameters":{"id":1261,"nodeType":"ParameterList","parameters":[],"src":"846:2:4"},"returnParameters":{"id":1264,"nodeType":"ParameterList","parameters":[],"src":"875:0:4"},"scope":1293,"src":"813:69:4","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1274,"nodeType":"Block","src":"949:34:4","statements":[{"expression":{"expression":{"id":1271,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"966:3:4","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1272,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"970:6:4","memberName":"sender","nodeType":"MemberAccess","src":"966:10:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1270,"id":1273,"nodeType":"Return","src":"959:17:4"}]},"id":1275,"implemented":true,"kind":"function","modifiers":[],"name":"_msgSender","nameLocation":"896:10:4","nodeType":"FunctionDefinition","parameters":{"id":1267,"nodeType":"ParameterList","parameters":[],"src":"906:2:4"},"returnParameters":{"id":1270,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1269,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1275,"src":"940:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1268,"name":"address","nodeType":"ElementaryTypeName","src":"940:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"939:9:4"},"scope":1293,"src":"887:96:4","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":1283,"nodeType":"Block","src":"1056:32:4","statements":[{"expression":{"expression":{"id":1280,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1073:3:4","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1281,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1077:4:4","memberName":"data","nodeType":"MemberAccess","src":"1073:8:4","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"functionReturnParameters":1279,"id":1282,"nodeType":"Return","src":"1066:15:4"}]},"id":1284,"implemented":true,"kind":"function","modifiers":[],"name":"_msgData","nameLocation":"998:8:4","nodeType":"FunctionDefinition","parameters":{"id":1276,"nodeType":"ParameterList","parameters":[],"src":"1006:2:4"},"returnParameters":{"id":1279,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1278,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1284,"src":"1040:14:4","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1277,"name":"bytes","nodeType":"ElementaryTypeName","src":"1040:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1039:16:4"},"scope":1293,"src":"989:99:4","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":1291,"nodeType":"Block","src":"1166:25:4","statements":[{"expression":{"hexValue":"30","id":1289,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1183:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":1288,"id":1290,"nodeType":"Return","src":"1176:8:4"}]},"id":1292,"implemented":true,"kind":"function","modifiers":[],"name":"_contextSuffixLength","nameLocation":"1103:20:4","nodeType":"FunctionDefinition","parameters":{"id":1285,"nodeType":"ParameterList","parameters":[],"src":"1123:2:4"},"returnParameters":{"id":1288,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1287,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1292,"src":"1157:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1286,"name":"uint256","nodeType":"ElementaryTypeName","src":"1157:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1156:9:4"},"scope":1293,"src":"1094:97:4","stateMutability":"view","virtual":true,"visibility":"internal"}],"scope":1294,"src":"688:505:4","usedErrors":[211,214],"usedEvents":[219]}],"src":"101:1093:4"},"id":4},"@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol","exportedSymbols":{"ContextUpgradeable":[1293],"Initializable":[448],"PausableUpgradeable":[1469]},"id":1470,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1295,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"102:24:5"},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol","file":"../utils/ContextUpgradeable.sol","id":1297,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1470,"sourceUnit":1294,"src":"128:67:5","symbolAliases":[{"foreign":{"id":1296,"name":"ContextUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1293,"src":"136:18:5","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"../proxy/utils/Initializable.sol","id":1299,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1470,"sourceUnit":449,"src":"196:63:5","symbolAliases":[{"foreign":{"id":1298,"name":"Initializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":448,"src":"204:13:5","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":1301,"name":"Initializable","nameLocations":["742:13:5"],"nodeType":"IdentifierPath","referencedDeclaration":448,"src":"742:13:5"},"id":1302,"nodeType":"InheritanceSpecifier","src":"742:13:5"},{"baseName":{"id":1303,"name":"ContextUpgradeable","nameLocations":["757:18:5"],"nodeType":"IdentifierPath","referencedDeclaration":1293,"src":"757:18:5"},"id":1304,"nodeType":"InheritanceSpecifier","src":"757:18:5"}],"canonicalName":"PausableUpgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":1300,"nodeType":"StructuredDocumentation","src":"261:439:5","text":" @dev Contract module which allows children to implement an emergency stop\n mechanism that can be triggered by an authorized account.\n This module is used through inheritance. It will make available the\n modifiers `whenNotPaused` and `whenPaused`, which can be applied to\n the functions of your contract. Note that they will not be pausable by\n simply including this module, only once the modifiers are put in place."},"fullyImplemented":true,"id":1469,"linearizedBaseContracts":[1469,1293,448],"name":"PausableUpgradeable","nameLocation":"719:19:5","nodeType":"ContractDefinition","nodes":[{"canonicalName":"PausableUpgradeable.PausableStorage","documentation":{"id":1305,"nodeType":"StructuredDocumentation","src":"782:66:5","text":"@custom:storage-location erc7201:openzeppelin.storage.Pausable"},"id":1308,"members":[{"constant":false,"id":1307,"mutability":"mutable","name":"_paused","nameLocation":"891:7:5","nodeType":"VariableDeclaration","scope":1308,"src":"886:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1306,"name":"bool","nodeType":"ElementaryTypeName","src":"886:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"PausableStorage","nameLocation":"860:15:5","nodeType":"StructDefinition","scope":1469,"src":"853:52:5","visibility":"public"},{"constant":true,"id":1311,"mutability":"constant","name":"PausableStorageLocation","nameLocation":"1048:23:5","nodeType":"VariableDeclaration","scope":1469,"src":"1023:117:5","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1309,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1023:7:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307863643565643135633665313837653737653961656538383138346332316634663231383261623538323763623362376530376662656463643633663033333030","id":1310,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1074:66:5","typeDescriptions":{"typeIdentifier":"t_rational_92891662540554778686986514950364265630913525426840345632122912437671245656832_by_1","typeString":"int_const 9289...(69 digits omitted)...6832"},"value":"0xcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300"},"visibility":"private"},{"body":{"id":1318,"nodeType":"Block","src":"1227:82:5","statements":[{"AST":{"nativeSrc":"1246:57:5","nodeType":"YulBlock","src":"1246:57:5","statements":[{"nativeSrc":"1260:33:5","nodeType":"YulAssignment","src":"1260:33:5","value":{"name":"PausableStorageLocation","nativeSrc":"1270:23:5","nodeType":"YulIdentifier","src":"1270:23:5"},"variableNames":[{"name":"$.slot","nativeSrc":"1260:6:5","nodeType":"YulIdentifier","src":"1260:6:5"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":1315,"isOffset":false,"isSlot":true,"src":"1260:6:5","suffix":"slot","valueSize":1},{"declaration":1311,"isOffset":false,"isSlot":false,"src":"1270:23:5","valueSize":1}],"id":1317,"nodeType":"InlineAssembly","src":"1237:66:5"}]},"id":1319,"implemented":true,"kind":"function","modifiers":[],"name":"_getPausableStorage","nameLocation":"1156:19:5","nodeType":"FunctionDefinition","parameters":{"id":1312,"nodeType":"ParameterList","parameters":[],"src":"1175:2:5"},"returnParameters":{"id":1316,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1315,"mutability":"mutable","name":"$","nameLocation":"1224:1:5","nodeType":"VariableDeclaration","scope":1319,"src":"1200:25:5","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_PausableStorage_$1308_storage_ptr","typeString":"struct PausableUpgradeable.PausableStorage"},"typeName":{"id":1314,"nodeType":"UserDefinedTypeName","pathNode":{"id":1313,"name":"PausableStorage","nameLocations":["1200:15:5"],"nodeType":"IdentifierPath","referencedDeclaration":1308,"src":"1200:15:5"},"referencedDeclaration":1308,"src":"1200:15:5","typeDescriptions":{"typeIdentifier":"t_struct$_PausableStorage_$1308_storage_ptr","typeString":"struct PausableUpgradeable.PausableStorage"}},"visibility":"internal"}],"src":"1199:27:5"},"scope":1469,"src":"1147:162:5","stateMutability":"pure","virtual":false,"visibility":"private"},{"anonymous":false,"documentation":{"id":1320,"nodeType":"StructuredDocumentation","src":"1315:73:5","text":" @dev Emitted when the pause is triggered by `account`."},"eventSelector":"62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258","id":1324,"name":"Paused","nameLocation":"1399:6:5","nodeType":"EventDefinition","parameters":{"id":1323,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1322,"indexed":false,"mutability":"mutable","name":"account","nameLocation":"1414:7:5","nodeType":"VariableDeclaration","scope":1324,"src":"1406:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1321,"name":"address","nodeType":"ElementaryTypeName","src":"1406:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1405:17:5"},"src":"1393:30:5"},{"anonymous":false,"documentation":{"id":1325,"nodeType":"StructuredDocumentation","src":"1429:70:5","text":" @dev Emitted when the pause is lifted by `account`."},"eventSelector":"5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa","id":1329,"name":"Unpaused","nameLocation":"1510:8:5","nodeType":"EventDefinition","parameters":{"id":1328,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1327,"indexed":false,"mutability":"mutable","name":"account","nameLocation":"1527:7:5","nodeType":"VariableDeclaration","scope":1329,"src":"1519:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1326,"name":"address","nodeType":"ElementaryTypeName","src":"1519:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1518:17:5"},"src":"1504:32:5"},{"documentation":{"id":1330,"nodeType":"StructuredDocumentation","src":"1542:76:5","text":" @dev The operation failed because the contract is paused."},"errorSelector":"d93c0665","id":1332,"name":"EnforcedPause","nameLocation":"1629:13:5","nodeType":"ErrorDefinition","parameters":{"id":1331,"nodeType":"ParameterList","parameters":[],"src":"1642:2:5"},"src":"1623:22:5"},{"documentation":{"id":1333,"nodeType":"StructuredDocumentation","src":"1651:80:5","text":" @dev The operation failed because the contract is not paused."},"errorSelector":"8dfc202b","id":1335,"name":"ExpectedPause","nameLocation":"1742:13:5","nodeType":"ErrorDefinition","parameters":{"id":1334,"nodeType":"ParameterList","parameters":[],"src":"1755:2:5"},"src":"1736:22:5"},{"body":{"id":1344,"nodeType":"Block","src":"1889:44:5","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":1341,"name":"__Pausable_init_unchained","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1363,"src":"1899:25:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":1342,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1899:27:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1343,"nodeType":"ExpressionStatement","src":"1899:27:5"}]},"documentation":{"id":1336,"nodeType":"StructuredDocumentation","src":"1764:67:5","text":" @dev Initializes the contract in unpaused state."},"id":1345,"implemented":true,"kind":"function","modifiers":[{"id":1339,"kind":"modifierInvocation","modifierName":{"id":1338,"name":"onlyInitializing","nameLocations":["1872:16:5"],"nodeType":"IdentifierPath","referencedDeclaration":357,"src":"1872:16:5"},"nodeType":"ModifierInvocation","src":"1872:16:5"}],"name":"__Pausable_init","nameLocation":"1845:15:5","nodeType":"FunctionDefinition","parameters":{"id":1337,"nodeType":"ParameterList","parameters":[],"src":"1860:2:5"},"returnParameters":{"id":1340,"nodeType":"ParameterList","parameters":[],"src":"1889:0:5"},"scope":1469,"src":"1836:97:5","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1362,"nodeType":"Block","src":"2002:93:5","statements":[{"assignments":[1352],"declarations":[{"constant":false,"id":1352,"mutability":"mutable","name":"$","nameLocation":"2036:1:5","nodeType":"VariableDeclaration","scope":1362,"src":"2012:25:5","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_PausableStorage_$1308_storage_ptr","typeString":"struct PausableUpgradeable.PausableStorage"},"typeName":{"id":1351,"nodeType":"UserDefinedTypeName","pathNode":{"id":1350,"name":"PausableStorage","nameLocations":["2012:15:5"],"nodeType":"IdentifierPath","referencedDeclaration":1308,"src":"2012:15:5"},"referencedDeclaration":1308,"src":"2012:15:5","typeDescriptions":{"typeIdentifier":"t_struct$_PausableStorage_$1308_storage_ptr","typeString":"struct PausableUpgradeable.PausableStorage"}},"visibility":"internal"}],"id":1355,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":1353,"name":"_getPausableStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1319,"src":"2040:19:5","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_PausableStorage_$1308_storage_ptr_$","typeString":"function () pure returns (struct PausableUpgradeable.PausableStorage storage pointer)"}},"id":1354,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2040:21:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_PausableStorage_$1308_storage_ptr","typeString":"struct PausableUpgradeable.PausableStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"2012:49:5"},{"expression":{"id":1360,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1356,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1352,"src":"2071:1:5","typeDescriptions":{"typeIdentifier":"t_struct$_PausableStorage_$1308_storage_ptr","typeString":"struct PausableUpgradeable.PausableStorage storage pointer"}},"id":1358,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2073:7:5","memberName":"_paused","nodeType":"MemberAccess","referencedDeclaration":1307,"src":"2071:9:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":1359,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2083:5:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"2071:17:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1361,"nodeType":"ExpressionStatement","src":"2071:17:5"}]},"id":1363,"implemented":true,"kind":"function","modifiers":[{"id":1348,"kind":"modifierInvocation","modifierName":{"id":1347,"name":"onlyInitializing","nameLocations":["1985:16:5"],"nodeType":"IdentifierPath","referencedDeclaration":357,"src":"1985:16:5"},"nodeType":"ModifierInvocation","src":"1985:16:5"}],"name":"__Pausable_init_unchained","nameLocation":"1948:25:5","nodeType":"FunctionDefinition","parameters":{"id":1346,"nodeType":"ParameterList","parameters":[],"src":"1973:2:5"},"returnParameters":{"id":1349,"nodeType":"ParameterList","parameters":[],"src":"2002:0:5"},"scope":1469,"src":"1939:156:5","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1370,"nodeType":"Block","src":"2306:47:5","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":1366,"name":"_requireNotPaused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1407,"src":"2316:17:5","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":1367,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2316:19:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1368,"nodeType":"ExpressionStatement","src":"2316:19:5"},{"id":1369,"nodeType":"PlaceholderStatement","src":"2345:1:5"}]},"documentation":{"id":1364,"nodeType":"StructuredDocumentation","src":"2101:175:5","text":" @dev Modifier to make a function callable only when the contract is not paused.\n Requirements:\n - The contract must not be paused."},"id":1371,"name":"whenNotPaused","nameLocation":"2290:13:5","nodeType":"ModifierDefinition","parameters":{"id":1365,"nodeType":"ParameterList","parameters":[],"src":"2303:2:5"},"src":"2281:72:5","virtual":false,"visibility":"internal"},{"body":{"id":1378,"nodeType":"Block","src":"2553:44:5","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":1374,"name":"_requirePaused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1420,"src":"2563:14:5","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":1375,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2563:16:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1376,"nodeType":"ExpressionStatement","src":"2563:16:5"},{"id":1377,"nodeType":"PlaceholderStatement","src":"2589:1:5"}]},"documentation":{"id":1372,"nodeType":"StructuredDocumentation","src":"2359:167:5","text":" @dev Modifier to make a function callable only when the contract is paused.\n Requirements:\n - The contract must be paused."},"id":1379,"name":"whenPaused","nameLocation":"2540:10:5","nodeType":"ModifierDefinition","parameters":{"id":1373,"nodeType":"ParameterList","parameters":[],"src":"2550:2:5"},"src":"2531:66:5","virtual":false,"visibility":"internal"},{"body":{"id":1394,"nodeType":"Block","src":"2745:92:5","statements":[{"assignments":[1387],"declarations":[{"constant":false,"id":1387,"mutability":"mutable","name":"$","nameLocation":"2779:1:5","nodeType":"VariableDeclaration","scope":1394,"src":"2755:25:5","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_PausableStorage_$1308_storage_ptr","typeString":"struct PausableUpgradeable.PausableStorage"},"typeName":{"id":1386,"nodeType":"UserDefinedTypeName","pathNode":{"id":1385,"name":"PausableStorage","nameLocations":["2755:15:5"],"nodeType":"IdentifierPath","referencedDeclaration":1308,"src":"2755:15:5"},"referencedDeclaration":1308,"src":"2755:15:5","typeDescriptions":{"typeIdentifier":"t_struct$_PausableStorage_$1308_storage_ptr","typeString":"struct PausableUpgradeable.PausableStorage"}},"visibility":"internal"}],"id":1390,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":1388,"name":"_getPausableStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1319,"src":"2783:19:5","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_PausableStorage_$1308_storage_ptr_$","typeString":"function () pure returns (struct PausableUpgradeable.PausableStorage storage pointer)"}},"id":1389,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2783:21:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_PausableStorage_$1308_storage_ptr","typeString":"struct PausableUpgradeable.PausableStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"2755:49:5"},{"expression":{"expression":{"id":1391,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1387,"src":"2821:1:5","typeDescriptions":{"typeIdentifier":"t_struct$_PausableStorage_$1308_storage_ptr","typeString":"struct PausableUpgradeable.PausableStorage storage pointer"}},"id":1392,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2823:7:5","memberName":"_paused","nodeType":"MemberAccess","referencedDeclaration":1307,"src":"2821:9:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1384,"id":1393,"nodeType":"Return","src":"2814:16:5"}]},"documentation":{"id":1380,"nodeType":"StructuredDocumentation","src":"2603:84:5","text":" @dev Returns true if the contract is paused, and false otherwise."},"functionSelector":"5c975abb","id":1395,"implemented":true,"kind":"function","modifiers":[],"name":"paused","nameLocation":"2701:6:5","nodeType":"FunctionDefinition","parameters":{"id":1381,"nodeType":"ParameterList","parameters":[],"src":"2707:2:5"},"returnParameters":{"id":1384,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1383,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1395,"src":"2739:4:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1382,"name":"bool","nodeType":"ElementaryTypeName","src":"2739:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2738:6:5"},"scope":1469,"src":"2692:145:5","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":1406,"nodeType":"Block","src":"2956:77:5","statements":[{"condition":{"arguments":[],"expression":{"argumentTypes":[],"id":1399,"name":"paused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1395,"src":"2970:6:5","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":1400,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2970:8:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1405,"nodeType":"IfStatement","src":"2966:61:5","trueBody":{"id":1404,"nodeType":"Block","src":"2980:47:5","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":1401,"name":"EnforcedPause","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1332,"src":"3001:13:5","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":1402,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3001:15:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1403,"nodeType":"RevertStatement","src":"2994:22:5"}]}}]},"documentation":{"id":1396,"nodeType":"StructuredDocumentation","src":"2843:57:5","text":" @dev Throws if the contract is paused."},"id":1407,"implemented":true,"kind":"function","modifiers":[],"name":"_requireNotPaused","nameLocation":"2914:17:5","nodeType":"FunctionDefinition","parameters":{"id":1397,"nodeType":"ParameterList","parameters":[],"src":"2931:2:5"},"returnParameters":{"id":1398,"nodeType":"ParameterList","parameters":[],"src":"2956:0:5"},"scope":1469,"src":"2905:128:5","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":1419,"nodeType":"Block","src":"3153:78:5","statements":[{"condition":{"id":1413,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"3167:9:5","subExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":1411,"name":"paused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1395,"src":"3168:6:5","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":1412,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3168:8:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1418,"nodeType":"IfStatement","src":"3163:62:5","trueBody":{"id":1417,"nodeType":"Block","src":"3178:47:5","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":1414,"name":"ExpectedPause","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1335,"src":"3199:13:5","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":1415,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3199:15:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1416,"nodeType":"RevertStatement","src":"3192:22:5"}]}}]},"documentation":{"id":1408,"nodeType":"StructuredDocumentation","src":"3039:61:5","text":" @dev Throws if the contract is not paused."},"id":1420,"implemented":true,"kind":"function","modifiers":[],"name":"_requirePaused","nameLocation":"3114:14:5","nodeType":"FunctionDefinition","parameters":{"id":1409,"nodeType":"ParameterList","parameters":[],"src":"3128:2:5"},"returnParameters":{"id":1410,"nodeType":"ParameterList","parameters":[],"src":"3153:0:5"},"scope":1469,"src":"3105:126:5","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":1443,"nodeType":"Block","src":"3415:127:5","statements":[{"assignments":[1428],"declarations":[{"constant":false,"id":1428,"mutability":"mutable","name":"$","nameLocation":"3449:1:5","nodeType":"VariableDeclaration","scope":1443,"src":"3425:25:5","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_PausableStorage_$1308_storage_ptr","typeString":"struct PausableUpgradeable.PausableStorage"},"typeName":{"id":1427,"nodeType":"UserDefinedTypeName","pathNode":{"id":1426,"name":"PausableStorage","nameLocations":["3425:15:5"],"nodeType":"IdentifierPath","referencedDeclaration":1308,"src":"3425:15:5"},"referencedDeclaration":1308,"src":"3425:15:5","typeDescriptions":{"typeIdentifier":"t_struct$_PausableStorage_$1308_storage_ptr","typeString":"struct PausableUpgradeable.PausableStorage"}},"visibility":"internal"}],"id":1431,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":1429,"name":"_getPausableStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1319,"src":"3453:19:5","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_PausableStorage_$1308_storage_ptr_$","typeString":"function () pure returns (struct PausableUpgradeable.PausableStorage storage pointer)"}},"id":1430,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3453:21:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_PausableStorage_$1308_storage_ptr","typeString":"struct PausableUpgradeable.PausableStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"3425:49:5"},{"expression":{"id":1436,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1432,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1428,"src":"3484:1:5","typeDescriptions":{"typeIdentifier":"t_struct$_PausableStorage_$1308_storage_ptr","typeString":"struct PausableUpgradeable.PausableStorage storage pointer"}},"id":1434,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3486:7:5","memberName":"_paused","nodeType":"MemberAccess","referencedDeclaration":1307,"src":"3484:9:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":1435,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3496:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"3484:16:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1437,"nodeType":"ExpressionStatement","src":"3484:16:5"},{"eventCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":1439,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1275,"src":"3522:10:5","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1440,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3522:12:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1438,"name":"Paused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1324,"src":"3515:6:5","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":1441,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3515:20:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1442,"nodeType":"EmitStatement","src":"3510:25:5"}]},"documentation":{"id":1421,"nodeType":"StructuredDocumentation","src":"3237:124:5","text":" @dev Triggers stopped state.\n Requirements:\n - The contract must not be paused."},"id":1444,"implemented":true,"kind":"function","modifiers":[{"id":1424,"kind":"modifierInvocation","modifierName":{"id":1423,"name":"whenNotPaused","nameLocations":["3401:13:5"],"nodeType":"IdentifierPath","referencedDeclaration":1371,"src":"3401:13:5"},"nodeType":"ModifierInvocation","src":"3401:13:5"}],"name":"_pause","nameLocation":"3375:6:5","nodeType":"FunctionDefinition","parameters":{"id":1422,"nodeType":"ParameterList","parameters":[],"src":"3381:2:5"},"returnParameters":{"id":1425,"nodeType":"ParameterList","parameters":[],"src":"3415:0:5"},"scope":1469,"src":"3366:176:5","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":1467,"nodeType":"Block","src":"3722:130:5","statements":[{"assignments":[1452],"declarations":[{"constant":false,"id":1452,"mutability":"mutable","name":"$","nameLocation":"3756:1:5","nodeType":"VariableDeclaration","scope":1467,"src":"3732:25:5","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_PausableStorage_$1308_storage_ptr","typeString":"struct PausableUpgradeable.PausableStorage"},"typeName":{"id":1451,"nodeType":"UserDefinedTypeName","pathNode":{"id":1450,"name":"PausableStorage","nameLocations":["3732:15:5"],"nodeType":"IdentifierPath","referencedDeclaration":1308,"src":"3732:15:5"},"referencedDeclaration":1308,"src":"3732:15:5","typeDescriptions":{"typeIdentifier":"t_struct$_PausableStorage_$1308_storage_ptr","typeString":"struct PausableUpgradeable.PausableStorage"}},"visibility":"internal"}],"id":1455,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":1453,"name":"_getPausableStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1319,"src":"3760:19:5","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_PausableStorage_$1308_storage_ptr_$","typeString":"function () pure returns (struct PausableUpgradeable.PausableStorage storage pointer)"}},"id":1454,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3760:21:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_PausableStorage_$1308_storage_ptr","typeString":"struct PausableUpgradeable.PausableStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"3732:49:5"},{"expression":{"id":1460,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1456,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1452,"src":"3791:1:5","typeDescriptions":{"typeIdentifier":"t_struct$_PausableStorage_$1308_storage_ptr","typeString":"struct PausableUpgradeable.PausableStorage storage pointer"}},"id":1458,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3793:7:5","memberName":"_paused","nodeType":"MemberAccess","referencedDeclaration":1307,"src":"3791:9:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":1459,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3803:5:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"3791:17:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1461,"nodeType":"ExpressionStatement","src":"3791:17:5"},{"eventCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":1463,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1275,"src":"3832:10:5","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1464,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3832:12:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1462,"name":"Unpaused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1329,"src":"3823:8:5","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":1465,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3823:22:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1466,"nodeType":"EmitStatement","src":"3818:27:5"}]},"documentation":{"id":1445,"nodeType":"StructuredDocumentation","src":"3548:121:5","text":" @dev Returns to normal state.\n Requirements:\n - The contract must be paused."},"id":1468,"implemented":true,"kind":"function","modifiers":[{"id":1448,"kind":"modifierInvocation","modifierName":{"id":1447,"name":"whenPaused","nameLocations":["3711:10:5"],"nodeType":"IdentifierPath","referencedDeclaration":1379,"src":"3711:10:5"},"nodeType":"ModifierInvocation","src":"3711:10:5"}],"name":"_unpause","nameLocation":"3683:8:5","nodeType":"FunctionDefinition","parameters":{"id":1446,"nodeType":"ParameterList","parameters":[],"src":"3691:2:5"},"returnParameters":{"id":1449,"nodeType":"ParameterList","parameters":[],"src":"3722:0:5"},"scope":1469,"src":"3674:178:5","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":1470,"src":"701:3153:5","usedErrors":[211,214,1332,1335],"usedEvents":[219,1324,1329]}],"src":"102:3753:5"},"id":5},"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol","exportedSymbols":{"Initializable":[448],"ReentrancyGuardUpgradeable":[1598]},"id":1599,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1471,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"109:24:6"},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"../proxy/utils/Initializable.sol","id":1473,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1599,"sourceUnit":449,"src":"134:63:6","symbolAliases":[{"foreign":{"id":1472,"name":"Initializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":448,"src":"142:13:6","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":1475,"name":"Initializable","nameLocations":["998:13:6"],"nodeType":"IdentifierPath","referencedDeclaration":448,"src":"998:13:6"},"id":1476,"nodeType":"InheritanceSpecifier","src":"998:13:6"}],"canonicalName":"ReentrancyGuardUpgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":1474,"nodeType":"StructuredDocumentation","src":"199:750:6","text":" @dev Contract module that helps prevent reentrant calls to a function.\n Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier\n available, which can be applied to functions to make sure there are no nested\n (reentrant) calls to them.\n Note that because there is a single `nonReentrant` guard, functions marked as\n `nonReentrant` may not call one another. This can be worked around by making\n those functions `private`, and then adding `external` `nonReentrant` entry\n points to them.\n TIP: If you would like to learn more about reentrancy and alternative ways\n to protect against it, check out our blog post\n https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]."},"fullyImplemented":true,"id":1598,"linearizedBaseContracts":[1598,448],"name":"ReentrancyGuardUpgradeable","nameLocation":"968:26:6","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":1479,"mutability":"constant","name":"NOT_ENTERED","nameLocation":"1791:11:6","nodeType":"VariableDeclaration","scope":1598,"src":"1766:40:6","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1477,"name":"uint256","nodeType":"ElementaryTypeName","src":"1766:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31","id":1478,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1805:1:6","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"visibility":"private"},{"constant":true,"id":1482,"mutability":"constant","name":"ENTERED","nameLocation":"1837:7:6","nodeType":"VariableDeclaration","scope":1598,"src":"1812:36:6","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1480,"name":"uint256","nodeType":"ElementaryTypeName","src":"1812:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"32","id":1481,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1847:1:6","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"visibility":"private"},{"canonicalName":"ReentrancyGuardUpgradeable.ReentrancyGuardStorage","documentation":{"id":1483,"nodeType":"StructuredDocumentation","src":"1855:73:6","text":"@custom:storage-location erc7201:openzeppelin.storage.ReentrancyGuard"},"id":1486,"members":[{"constant":false,"id":1485,"mutability":"mutable","name":"_status","nameLocation":"1981:7:6","nodeType":"VariableDeclaration","scope":1486,"src":"1973:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1484,"name":"uint256","nodeType":"ElementaryTypeName","src":"1973:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"ReentrancyGuardStorage","nameLocation":"1940:22:6","nodeType":"StructDefinition","scope":1598,"src":"1933:62:6","visibility":"public"},{"constant":true,"id":1489,"mutability":"constant","name":"ReentrancyGuardStorageLocation","nameLocation":"2145:30:6","nodeType":"VariableDeclaration","scope":1598,"src":"2120:124:6","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1487,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2120:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307839623737396231373432326430646639323232333031386233326234643166613436653037313732336436383137653234383664303033626563633535663030","id":1488,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2178:66:6","typeDescriptions":{"typeIdentifier":"t_rational_70319816728846589445362000750570655803700195216363692647688146666176345628416_by_1","typeString":"int_const 7031...(69 digits omitted)...8416"},"value":"0x9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00"},"visibility":"private"},{"body":{"id":1496,"nodeType":"Block","src":"2345:89:6","statements":[{"AST":{"nativeSrc":"2364:64:6","nodeType":"YulBlock","src":"2364:64:6","statements":[{"nativeSrc":"2378:40:6","nodeType":"YulAssignment","src":"2378:40:6","value":{"name":"ReentrancyGuardStorageLocation","nativeSrc":"2388:30:6","nodeType":"YulIdentifier","src":"2388:30:6"},"variableNames":[{"name":"$.slot","nativeSrc":"2378:6:6","nodeType":"YulIdentifier","src":"2378:6:6"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":1493,"isOffset":false,"isSlot":true,"src":"2378:6:6","suffix":"slot","valueSize":1},{"declaration":1489,"isOffset":false,"isSlot":false,"src":"2388:30:6","valueSize":1}],"id":1495,"nodeType":"InlineAssembly","src":"2355:73:6"}]},"id":1497,"implemented":true,"kind":"function","modifiers":[],"name":"_getReentrancyGuardStorage","nameLocation":"2260:26:6","nodeType":"FunctionDefinition","parameters":{"id":1490,"nodeType":"ParameterList","parameters":[],"src":"2286:2:6"},"returnParameters":{"id":1494,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1493,"mutability":"mutable","name":"$","nameLocation":"2342:1:6","nodeType":"VariableDeclaration","scope":1497,"src":"2311:32:6","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$1486_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage"},"typeName":{"id":1492,"nodeType":"UserDefinedTypeName","pathNode":{"id":1491,"name":"ReentrancyGuardStorage","nameLocations":["2311:22:6"],"nodeType":"IdentifierPath","referencedDeclaration":1486,"src":"2311:22:6"},"referencedDeclaration":1486,"src":"2311:22:6","typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$1486_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage"}},"visibility":"internal"}],"src":"2310:34:6"},"scope":1598,"src":"2251:183:6","stateMutability":"pure","virtual":false,"visibility":"private"},{"documentation":{"id":1498,"nodeType":"StructuredDocumentation","src":"2440:52:6","text":" @dev Unauthorized reentrant call."},"errorSelector":"3ee5aeb5","id":1500,"name":"ReentrancyGuardReentrantCall","nameLocation":"2503:28:6","nodeType":"ErrorDefinition","parameters":{"id":1499,"nodeType":"ParameterList","parameters":[],"src":"2531:2:6"},"src":"2497:37:6"},{"body":{"id":1508,"nodeType":"Block","src":"2600:51:6","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":1505,"name":"__ReentrancyGuard_init_unchained","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1527,"src":"2610:32:6","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":1506,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2610:34:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1507,"nodeType":"ExpressionStatement","src":"2610:34:6"}]},"id":1509,"implemented":true,"kind":"function","modifiers":[{"id":1503,"kind":"modifierInvocation","modifierName":{"id":1502,"name":"onlyInitializing","nameLocations":["2583:16:6"],"nodeType":"IdentifierPath","referencedDeclaration":357,"src":"2583:16:6"},"nodeType":"ModifierInvocation","src":"2583:16:6"}],"name":"__ReentrancyGuard_init","nameLocation":"2549:22:6","nodeType":"FunctionDefinition","parameters":{"id":1501,"nodeType":"ParameterList","parameters":[],"src":"2571:2:6"},"returnParameters":{"id":1504,"nodeType":"ParameterList","parameters":[],"src":"2600:0:6"},"scope":1598,"src":"2540:111:6","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1526,"nodeType":"Block","src":"2727:113:6","statements":[{"assignments":[1516],"declarations":[{"constant":false,"id":1516,"mutability":"mutable","name":"$","nameLocation":"2768:1:6","nodeType":"VariableDeclaration","scope":1526,"src":"2737:32:6","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$1486_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage"},"typeName":{"id":1515,"nodeType":"UserDefinedTypeName","pathNode":{"id":1514,"name":"ReentrancyGuardStorage","nameLocations":["2737:22:6"],"nodeType":"IdentifierPath","referencedDeclaration":1486,"src":"2737:22:6"},"referencedDeclaration":1486,"src":"2737:22:6","typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$1486_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage"}},"visibility":"internal"}],"id":1519,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":1517,"name":"_getReentrancyGuardStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1497,"src":"2772:26:6","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ReentrancyGuardStorage_$1486_storage_ptr_$","typeString":"function () pure returns (struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer)"}},"id":1518,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2772:28:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$1486_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"2737:63:6"},{"expression":{"id":1524,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1520,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1516,"src":"2810:1:6","typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$1486_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer"}},"id":1522,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2812:7:6","memberName":"_status","nodeType":"MemberAccess","referencedDeclaration":1485,"src":"2810:9:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1523,"name":"NOT_ENTERED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1479,"src":"2822:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2810:23:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1525,"nodeType":"ExpressionStatement","src":"2810:23:6"}]},"id":1527,"implemented":true,"kind":"function","modifiers":[{"id":1512,"kind":"modifierInvocation","modifierName":{"id":1511,"name":"onlyInitializing","nameLocations":["2710:16:6"],"nodeType":"IdentifierPath","referencedDeclaration":357,"src":"2710:16:6"},"nodeType":"ModifierInvocation","src":"2710:16:6"}],"name":"__ReentrancyGuard_init_unchained","nameLocation":"2666:32:6","nodeType":"FunctionDefinition","parameters":{"id":1510,"nodeType":"ParameterList","parameters":[],"src":"2698:2:6"},"returnParameters":{"id":1513,"nodeType":"ParameterList","parameters":[],"src":"2727:0:6"},"scope":1598,"src":"2657:183:6","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1537,"nodeType":"Block","src":"3241:79:6","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":1530,"name":"_nonReentrantBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1563,"src":"3251:19:6","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":1531,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3251:21:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1532,"nodeType":"ExpressionStatement","src":"3251:21:6"},{"id":1533,"nodeType":"PlaceholderStatement","src":"3282:1:6"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":1534,"name":"_nonReentrantAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1579,"src":"3293:18:6","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":1535,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3293:20:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1536,"nodeType":"ExpressionStatement","src":"3293:20:6"}]},"documentation":{"id":1528,"nodeType":"StructuredDocumentation","src":"2846:366:6","text":" @dev Prevents a contract from calling itself, directly or indirectly.\n Calling a `nonReentrant` function from another `nonReentrant`\n function is not supported. It is possible to prevent this from happening\n by making the `nonReentrant` function external, and making it call a\n `private` function that does the actual work."},"id":1538,"name":"nonReentrant","nameLocation":"3226:12:6","nodeType":"ModifierDefinition","parameters":{"id":1529,"nodeType":"ParameterList","parameters":[],"src":"3238:2:6"},"src":"3217:103:6","virtual":false,"visibility":"internal"},{"body":{"id":1562,"nodeType":"Block","src":"3365:345:6","statements":[{"assignments":[1543],"declarations":[{"constant":false,"id":1543,"mutability":"mutable","name":"$","nameLocation":"3406:1:6","nodeType":"VariableDeclaration","scope":1562,"src":"3375:32:6","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$1486_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage"},"typeName":{"id":1542,"nodeType":"UserDefinedTypeName","pathNode":{"id":1541,"name":"ReentrancyGuardStorage","nameLocations":["3375:22:6"],"nodeType":"IdentifierPath","referencedDeclaration":1486,"src":"3375:22:6"},"referencedDeclaration":1486,"src":"3375:22:6","typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$1486_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage"}},"visibility":"internal"}],"id":1546,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":1544,"name":"_getReentrancyGuardStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1497,"src":"3410:26:6","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ReentrancyGuardStorage_$1486_storage_ptr_$","typeString":"function () pure returns (struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer)"}},"id":1545,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3410:28:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$1486_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"3375:63:6"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1550,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1547,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1543,"src":"3526:1:6","typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$1486_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer"}},"id":1548,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3528:7:6","memberName":"_status","nodeType":"MemberAccess","referencedDeclaration":1485,"src":"3526:9:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":1549,"name":"ENTERED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1482,"src":"3539:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3526:20:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1555,"nodeType":"IfStatement","src":"3522:88:6","trueBody":{"id":1554,"nodeType":"Block","src":"3548:62:6","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":1551,"name":"ReentrancyGuardReentrantCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1500,"src":"3569:28:6","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":1552,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3569:30:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1553,"nodeType":"RevertStatement","src":"3562:37:6"}]}},{"expression":{"id":1560,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1556,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1543,"src":"3684:1:6","typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$1486_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer"}},"id":1558,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3686:7:6","memberName":"_status","nodeType":"MemberAccess","referencedDeclaration":1485,"src":"3684:9:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1559,"name":"ENTERED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1482,"src":"3696:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3684:19:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1561,"nodeType":"ExpressionStatement","src":"3684:19:6"}]},"id":1563,"implemented":true,"kind":"function","modifiers":[],"name":"_nonReentrantBefore","nameLocation":"3335:19:6","nodeType":"FunctionDefinition","parameters":{"id":1539,"nodeType":"ParameterList","parameters":[],"src":"3354:2:6"},"returnParameters":{"id":1540,"nodeType":"ParameterList","parameters":[],"src":"3365:0:6"},"scope":1598,"src":"3326:384:6","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":1578,"nodeType":"Block","src":"3754:245:6","statements":[{"assignments":[1568],"declarations":[{"constant":false,"id":1568,"mutability":"mutable","name":"$","nameLocation":"3795:1:6","nodeType":"VariableDeclaration","scope":1578,"src":"3764:32:6","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$1486_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage"},"typeName":{"id":1567,"nodeType":"UserDefinedTypeName","pathNode":{"id":1566,"name":"ReentrancyGuardStorage","nameLocations":["3764:22:6"],"nodeType":"IdentifierPath","referencedDeclaration":1486,"src":"3764:22:6"},"referencedDeclaration":1486,"src":"3764:22:6","typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$1486_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage"}},"visibility":"internal"}],"id":1571,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":1569,"name":"_getReentrancyGuardStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1497,"src":"3799:26:6","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ReentrancyGuardStorage_$1486_storage_ptr_$","typeString":"function () pure returns (struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer)"}},"id":1570,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3799:28:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$1486_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"3764:63:6"},{"expression":{"id":1576,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1572,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1568,"src":"3969:1:6","typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$1486_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer"}},"id":1574,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3971:7:6","memberName":"_status","nodeType":"MemberAccess","referencedDeclaration":1485,"src":"3969:9:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1575,"name":"NOT_ENTERED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1479,"src":"3981:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3969:23:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1577,"nodeType":"ExpressionStatement","src":"3969:23:6"}]},"id":1579,"implemented":true,"kind":"function","modifiers":[],"name":"_nonReentrantAfter","nameLocation":"3725:18:6","nodeType":"FunctionDefinition","parameters":{"id":1564,"nodeType":"ParameterList","parameters":[],"src":"3743:2:6"},"returnParameters":{"id":1565,"nodeType":"ParameterList","parameters":[],"src":"3754:0:6"},"scope":1598,"src":"3716:283:6","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":1596,"nodeType":"Block","src":"4242:117:6","statements":[{"assignments":[1587],"declarations":[{"constant":false,"id":1587,"mutability":"mutable","name":"$","nameLocation":"4283:1:6","nodeType":"VariableDeclaration","scope":1596,"src":"4252:32:6","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$1486_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage"},"typeName":{"id":1586,"nodeType":"UserDefinedTypeName","pathNode":{"id":1585,"name":"ReentrancyGuardStorage","nameLocations":["4252:22:6"],"nodeType":"IdentifierPath","referencedDeclaration":1486,"src":"4252:22:6"},"referencedDeclaration":1486,"src":"4252:22:6","typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$1486_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage"}},"visibility":"internal"}],"id":1590,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":1588,"name":"_getReentrancyGuardStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1497,"src":"4287:26:6","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ReentrancyGuardStorage_$1486_storage_ptr_$","typeString":"function () pure returns (struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer)"}},"id":1589,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4287:28:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$1486_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"4252:63:6"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1594,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1591,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1587,"src":"4332:1:6","typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$1486_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer"}},"id":1592,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4334:7:6","memberName":"_status","nodeType":"MemberAccess","referencedDeclaration":1485,"src":"4332:9:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":1593,"name":"ENTERED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1482,"src":"4345:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4332:20:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1584,"id":1595,"nodeType":"Return","src":"4325:27:6"}]},"documentation":{"id":1580,"nodeType":"StructuredDocumentation","src":"4005:168:6","text":" @dev Returns true if the reentrancy guard is currently set to \"entered\", which indicates there is a\n `nonReentrant` function in the call stack."},"id":1597,"implemented":true,"kind":"function","modifiers":[],"name":"_reentrancyGuardEntered","nameLocation":"4187:23:6","nodeType":"FunctionDefinition","parameters":{"id":1581,"nodeType":"ParameterList","parameters":[],"src":"4210:2:6"},"returnParameters":{"id":1584,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1583,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1597,"src":"4236:4:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1582,"name":"bool","nodeType":"ElementaryTypeName","src":"4236:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4235:6:6"},"scope":1598,"src":"4178:181:6","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":1599,"src":"950:3411:6","usedErrors":[211,214,1500],"usedEvents":[219]}],"src":"109:4253:6"},"id":6},"@openzeppelin/contracts/interfaces/draft-IERC1822.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/interfaces/draft-IERC1822.sol","exportedSymbols":{"IERC1822Proxiable":[1608]},"id":1609,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1600,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"113:24:7"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC1822Proxiable","contractDependencies":[],"contractKind":"interface","documentation":{"id":1601,"nodeType":"StructuredDocumentation","src":"139:203:7","text":" @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\n proxy whose upgrades are fully controlled by the current implementation."},"fullyImplemented":false,"id":1608,"linearizedBaseContracts":[1608],"name":"IERC1822Proxiable","nameLocation":"353:17:7","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":1602,"nodeType":"StructuredDocumentation","src":"377:438:7","text":" @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\n address.\n IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\n bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\n function revert if invoked through a proxy."},"functionSelector":"52d1902d","id":1607,"implemented":false,"kind":"function","modifiers":[],"name":"proxiableUUID","nameLocation":"829:13:7","nodeType":"FunctionDefinition","parameters":{"id":1603,"nodeType":"ParameterList","parameters":[],"src":"842:2:7"},"returnParameters":{"id":1606,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1605,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1607,"src":"868:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1604,"name":"bytes32","nodeType":"ElementaryTypeName","src":"868:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"867:9:7"},"scope":1608,"src":"820:57:7","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":1609,"src":"343:536:7","usedErrors":[],"usedEvents":[]}],"src":"113:767:7"},"id":7},"@openzeppelin/contracts/interfaces/draft-IERC6093.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/interfaces/draft-IERC6093.sol","exportedSymbols":{"IERC1155Errors":[1745],"IERC20Errors":[1650],"IERC721Errors":[1698]},"id":1746,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1610,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"112:24:8"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC20Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":1611,"nodeType":"StructuredDocumentation","src":"138:139:8","text":" @dev Standard ERC20 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC20 tokens."},"fullyImplemented":true,"id":1650,"linearizedBaseContracts":[1650],"name":"IERC20Errors","nameLocation":"288:12:8","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":1612,"nodeType":"StructuredDocumentation","src":"307:309:8","text":" @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer."},"errorSelector":"e450d38c","id":1620,"name":"ERC20InsufficientBalance","nameLocation":"627:24:8","nodeType":"ErrorDefinition","parameters":{"id":1619,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1614,"mutability":"mutable","name":"sender","nameLocation":"660:6:8","nodeType":"VariableDeclaration","scope":1620,"src":"652:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1613,"name":"address","nodeType":"ElementaryTypeName","src":"652:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1616,"mutability":"mutable","name":"balance","nameLocation":"676:7:8","nodeType":"VariableDeclaration","scope":1620,"src":"668:15:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1615,"name":"uint256","nodeType":"ElementaryTypeName","src":"668:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1618,"mutability":"mutable","name":"needed","nameLocation":"693:6:8","nodeType":"VariableDeclaration","scope":1620,"src":"685:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1617,"name":"uint256","nodeType":"ElementaryTypeName","src":"685:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"651:49:8"},"src":"621:80:8"},{"documentation":{"id":1621,"nodeType":"StructuredDocumentation","src":"707:152:8","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"96c6fd1e","id":1625,"name":"ERC20InvalidSender","nameLocation":"870:18:8","nodeType":"ErrorDefinition","parameters":{"id":1624,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1623,"mutability":"mutable","name":"sender","nameLocation":"897:6:8","nodeType":"VariableDeclaration","scope":1625,"src":"889:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1622,"name":"address","nodeType":"ElementaryTypeName","src":"889:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"888:16:8"},"src":"864:41:8"},{"documentation":{"id":1626,"nodeType":"StructuredDocumentation","src":"911:159:8","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"ec442f05","id":1630,"name":"ERC20InvalidReceiver","nameLocation":"1081:20:8","nodeType":"ErrorDefinition","parameters":{"id":1629,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1628,"mutability":"mutable","name":"receiver","nameLocation":"1110:8:8","nodeType":"VariableDeclaration","scope":1630,"src":"1102:16:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1627,"name":"address","nodeType":"ElementaryTypeName","src":"1102:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1101:18:8"},"src":"1075:45:8"},{"documentation":{"id":1631,"nodeType":"StructuredDocumentation","src":"1126:345:8","text":" @dev Indicates a failure with the `spender`’s `allowance`. Used in transfers.\n @param spender Address that may be allowed to operate on tokens without being their owner.\n @param allowance Amount of tokens a `spender` is allowed to operate with.\n @param needed Minimum amount required to perform a transfer."},"errorSelector":"fb8f41b2","id":1639,"name":"ERC20InsufficientAllowance","nameLocation":"1482:26:8","nodeType":"ErrorDefinition","parameters":{"id":1638,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1633,"mutability":"mutable","name":"spender","nameLocation":"1517:7:8","nodeType":"VariableDeclaration","scope":1639,"src":"1509:15:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1632,"name":"address","nodeType":"ElementaryTypeName","src":"1509:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1635,"mutability":"mutable","name":"allowance","nameLocation":"1534:9:8","nodeType":"VariableDeclaration","scope":1639,"src":"1526:17:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1634,"name":"uint256","nodeType":"ElementaryTypeName","src":"1526:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1637,"mutability":"mutable","name":"needed","nameLocation":"1553:6:8","nodeType":"VariableDeclaration","scope":1639,"src":"1545:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1636,"name":"uint256","nodeType":"ElementaryTypeName","src":"1545:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1508:52:8"},"src":"1476:85:8"},{"documentation":{"id":1640,"nodeType":"StructuredDocumentation","src":"1567:174:8","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"e602df05","id":1644,"name":"ERC20InvalidApprover","nameLocation":"1752:20:8","nodeType":"ErrorDefinition","parameters":{"id":1643,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1642,"mutability":"mutable","name":"approver","nameLocation":"1781:8:8","nodeType":"VariableDeclaration","scope":1644,"src":"1773:16:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1641,"name":"address","nodeType":"ElementaryTypeName","src":"1773:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1772:18:8"},"src":"1746:45:8"},{"documentation":{"id":1645,"nodeType":"StructuredDocumentation","src":"1797:195:8","text":" @dev Indicates a failure with the `spender` to be approved. Used in approvals.\n @param spender Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"94280d62","id":1649,"name":"ERC20InvalidSpender","nameLocation":"2003:19:8","nodeType":"ErrorDefinition","parameters":{"id":1648,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1647,"mutability":"mutable","name":"spender","nameLocation":"2031:7:8","nodeType":"VariableDeclaration","scope":1649,"src":"2023:15:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1646,"name":"address","nodeType":"ElementaryTypeName","src":"2023:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2022:17:8"},"src":"1997:43:8"}],"scope":1746,"src":"278:1764:8","usedErrors":[1620,1625,1630,1639,1644,1649],"usedEvents":[]},{"abstract":false,"baseContracts":[],"canonicalName":"IERC721Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":1651,"nodeType":"StructuredDocumentation","src":"2044:141:8","text":" @dev Standard ERC721 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC721 tokens."},"fullyImplemented":true,"id":1698,"linearizedBaseContracts":[1698],"name":"IERC721Errors","nameLocation":"2196:13:8","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":1652,"nodeType":"StructuredDocumentation","src":"2216:219:8","text":" @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20.\n Used in balance queries.\n @param owner Address of the current owner of a token."},"errorSelector":"89c62b64","id":1656,"name":"ERC721InvalidOwner","nameLocation":"2446:18:8","nodeType":"ErrorDefinition","parameters":{"id":1655,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1654,"mutability":"mutable","name":"owner","nameLocation":"2473:5:8","nodeType":"VariableDeclaration","scope":1656,"src":"2465:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1653,"name":"address","nodeType":"ElementaryTypeName","src":"2465:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2464:15:8"},"src":"2440:40:8"},{"documentation":{"id":1657,"nodeType":"StructuredDocumentation","src":"2486:132:8","text":" @dev Indicates a `tokenId` whose `owner` is the zero address.\n @param tokenId Identifier number of a token."},"errorSelector":"7e273289","id":1661,"name":"ERC721NonexistentToken","nameLocation":"2629:22:8","nodeType":"ErrorDefinition","parameters":{"id":1660,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1659,"mutability":"mutable","name":"tokenId","nameLocation":"2660:7:8","nodeType":"VariableDeclaration","scope":1661,"src":"2652:15:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1658,"name":"uint256","nodeType":"ElementaryTypeName","src":"2652:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2651:17:8"},"src":"2623:46:8"},{"documentation":{"id":1662,"nodeType":"StructuredDocumentation","src":"2675:289:8","text":" @dev Indicates an error related to the ownership over a particular token. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param tokenId Identifier number of a token.\n @param owner Address of the current owner of a token."},"errorSelector":"64283d7b","id":1670,"name":"ERC721IncorrectOwner","nameLocation":"2975:20:8","nodeType":"ErrorDefinition","parameters":{"id":1669,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1664,"mutability":"mutable","name":"sender","nameLocation":"3004:6:8","nodeType":"VariableDeclaration","scope":1670,"src":"2996:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1663,"name":"address","nodeType":"ElementaryTypeName","src":"2996:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1666,"mutability":"mutable","name":"tokenId","nameLocation":"3020:7:8","nodeType":"VariableDeclaration","scope":1670,"src":"3012:15:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1665,"name":"uint256","nodeType":"ElementaryTypeName","src":"3012:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1668,"mutability":"mutable","name":"owner","nameLocation":"3037:5:8","nodeType":"VariableDeclaration","scope":1670,"src":"3029:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1667,"name":"address","nodeType":"ElementaryTypeName","src":"3029:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2995:48:8"},"src":"2969:75:8"},{"documentation":{"id":1671,"nodeType":"StructuredDocumentation","src":"3050:152:8","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"73c6ac6e","id":1675,"name":"ERC721InvalidSender","nameLocation":"3213:19:8","nodeType":"ErrorDefinition","parameters":{"id":1674,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1673,"mutability":"mutable","name":"sender","nameLocation":"3241:6:8","nodeType":"VariableDeclaration","scope":1675,"src":"3233:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1672,"name":"address","nodeType":"ElementaryTypeName","src":"3233:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3232:16:8"},"src":"3207:42:8"},{"documentation":{"id":1676,"nodeType":"StructuredDocumentation","src":"3255:159:8","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"64a0ae92","id":1680,"name":"ERC721InvalidReceiver","nameLocation":"3425:21:8","nodeType":"ErrorDefinition","parameters":{"id":1679,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1678,"mutability":"mutable","name":"receiver","nameLocation":"3455:8:8","nodeType":"VariableDeclaration","scope":1680,"src":"3447:16:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1677,"name":"address","nodeType":"ElementaryTypeName","src":"3447:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3446:18:8"},"src":"3419:46:8"},{"documentation":{"id":1681,"nodeType":"StructuredDocumentation","src":"3471:247:8","text":" @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param tokenId Identifier number of a token."},"errorSelector":"177e802f","id":1687,"name":"ERC721InsufficientApproval","nameLocation":"3729:26:8","nodeType":"ErrorDefinition","parameters":{"id":1686,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1683,"mutability":"mutable","name":"operator","nameLocation":"3764:8:8","nodeType":"VariableDeclaration","scope":1687,"src":"3756:16:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1682,"name":"address","nodeType":"ElementaryTypeName","src":"3756:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1685,"mutability":"mutable","name":"tokenId","nameLocation":"3782:7:8","nodeType":"VariableDeclaration","scope":1687,"src":"3774:15:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1684,"name":"uint256","nodeType":"ElementaryTypeName","src":"3774:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3755:35:8"},"src":"3723:68:8"},{"documentation":{"id":1688,"nodeType":"StructuredDocumentation","src":"3797:174:8","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"a9fbf51f","id":1692,"name":"ERC721InvalidApprover","nameLocation":"3982:21:8","nodeType":"ErrorDefinition","parameters":{"id":1691,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1690,"mutability":"mutable","name":"approver","nameLocation":"4012:8:8","nodeType":"VariableDeclaration","scope":1692,"src":"4004:16:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1689,"name":"address","nodeType":"ElementaryTypeName","src":"4004:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4003:18:8"},"src":"3976:46:8"},{"documentation":{"id":1693,"nodeType":"StructuredDocumentation","src":"4028:197:8","text":" @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"5b08ba18","id":1697,"name":"ERC721InvalidOperator","nameLocation":"4236:21:8","nodeType":"ErrorDefinition","parameters":{"id":1696,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1695,"mutability":"mutable","name":"operator","nameLocation":"4266:8:8","nodeType":"VariableDeclaration","scope":1697,"src":"4258:16:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1694,"name":"address","nodeType":"ElementaryTypeName","src":"4258:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4257:18:8"},"src":"4230:46:8"}],"scope":1746,"src":"2186:2092:8","usedErrors":[1656,1661,1670,1675,1680,1687,1692,1697],"usedEvents":[]},{"abstract":false,"baseContracts":[],"canonicalName":"IERC1155Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":1699,"nodeType":"StructuredDocumentation","src":"4280:143:8","text":" @dev Standard ERC1155 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC1155 tokens."},"fullyImplemented":true,"id":1745,"linearizedBaseContracts":[1745],"name":"IERC1155Errors","nameLocation":"4434:14:8","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":1700,"nodeType":"StructuredDocumentation","src":"4455:361:8","text":" @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer.\n @param tokenId Identifier number of a token."},"errorSelector":"03dee4c5","id":1710,"name":"ERC1155InsufficientBalance","nameLocation":"4827:26:8","nodeType":"ErrorDefinition","parameters":{"id":1709,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1702,"mutability":"mutable","name":"sender","nameLocation":"4862:6:8","nodeType":"VariableDeclaration","scope":1710,"src":"4854:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1701,"name":"address","nodeType":"ElementaryTypeName","src":"4854:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1704,"mutability":"mutable","name":"balance","nameLocation":"4878:7:8","nodeType":"VariableDeclaration","scope":1710,"src":"4870:15:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1703,"name":"uint256","nodeType":"ElementaryTypeName","src":"4870:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1706,"mutability":"mutable","name":"needed","nameLocation":"4895:6:8","nodeType":"VariableDeclaration","scope":1710,"src":"4887:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1705,"name":"uint256","nodeType":"ElementaryTypeName","src":"4887:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1708,"mutability":"mutable","name":"tokenId","nameLocation":"4911:7:8","nodeType":"VariableDeclaration","scope":1710,"src":"4903:15:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1707,"name":"uint256","nodeType":"ElementaryTypeName","src":"4903:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4853:66:8"},"src":"4821:99:8"},{"documentation":{"id":1711,"nodeType":"StructuredDocumentation","src":"4926:152:8","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"01a83514","id":1715,"name":"ERC1155InvalidSender","nameLocation":"5089:20:8","nodeType":"ErrorDefinition","parameters":{"id":1714,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1713,"mutability":"mutable","name":"sender","nameLocation":"5118:6:8","nodeType":"VariableDeclaration","scope":1715,"src":"5110:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1712,"name":"address","nodeType":"ElementaryTypeName","src":"5110:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5109:16:8"},"src":"5083:43:8"},{"documentation":{"id":1716,"nodeType":"StructuredDocumentation","src":"5132:159:8","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"57f447ce","id":1720,"name":"ERC1155InvalidReceiver","nameLocation":"5302:22:8","nodeType":"ErrorDefinition","parameters":{"id":1719,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1718,"mutability":"mutable","name":"receiver","nameLocation":"5333:8:8","nodeType":"VariableDeclaration","scope":1720,"src":"5325:16:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1717,"name":"address","nodeType":"ElementaryTypeName","src":"5325:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5324:18:8"},"src":"5296:47:8"},{"documentation":{"id":1721,"nodeType":"StructuredDocumentation","src":"5349:256:8","text":" @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param owner Address of the current owner of a token."},"errorSelector":"e237d922","id":1727,"name":"ERC1155MissingApprovalForAll","nameLocation":"5616:28:8","nodeType":"ErrorDefinition","parameters":{"id":1726,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1723,"mutability":"mutable","name":"operator","nameLocation":"5653:8:8","nodeType":"VariableDeclaration","scope":1727,"src":"5645:16:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1722,"name":"address","nodeType":"ElementaryTypeName","src":"5645:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1725,"mutability":"mutable","name":"owner","nameLocation":"5671:5:8","nodeType":"VariableDeclaration","scope":1727,"src":"5663:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1724,"name":"address","nodeType":"ElementaryTypeName","src":"5663:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5644:33:8"},"src":"5610:68:8"},{"documentation":{"id":1728,"nodeType":"StructuredDocumentation","src":"5684:174:8","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"3e31884e","id":1732,"name":"ERC1155InvalidApprover","nameLocation":"5869:22:8","nodeType":"ErrorDefinition","parameters":{"id":1731,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1730,"mutability":"mutable","name":"approver","nameLocation":"5900:8:8","nodeType":"VariableDeclaration","scope":1732,"src":"5892:16:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1729,"name":"address","nodeType":"ElementaryTypeName","src":"5892:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5891:18:8"},"src":"5863:47:8"},{"documentation":{"id":1733,"nodeType":"StructuredDocumentation","src":"5916:197:8","text":" @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"ced3e100","id":1737,"name":"ERC1155InvalidOperator","nameLocation":"6124:22:8","nodeType":"ErrorDefinition","parameters":{"id":1736,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1735,"mutability":"mutable","name":"operator","nameLocation":"6155:8:8","nodeType":"VariableDeclaration","scope":1737,"src":"6147:16:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1734,"name":"address","nodeType":"ElementaryTypeName","src":"6147:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6146:18:8"},"src":"6118:47:8"},{"documentation":{"id":1738,"nodeType":"StructuredDocumentation","src":"6171:280:8","text":" @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\n Used in batch transfers.\n @param idsLength Length of the array of token identifiers\n @param valuesLength Length of the array of token amounts"},"errorSelector":"5b059991","id":1744,"name":"ERC1155InvalidArrayLength","nameLocation":"6462:25:8","nodeType":"ErrorDefinition","parameters":{"id":1743,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1740,"mutability":"mutable","name":"idsLength","nameLocation":"6496:9:8","nodeType":"VariableDeclaration","scope":1744,"src":"6488:17:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1739,"name":"uint256","nodeType":"ElementaryTypeName","src":"6488:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1742,"mutability":"mutable","name":"valuesLength","nameLocation":"6515:12:8","nodeType":"VariableDeclaration","scope":1744,"src":"6507:20:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1741,"name":"uint256","nodeType":"ElementaryTypeName","src":"6507:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6487:41:8"},"src":"6456:73:8"}],"scope":1746,"src":"4424:2107:8","usedErrors":[1710,1715,1720,1727,1732,1737,1744],"usedEvents":[]}],"src":"112:6420:8"},"id":8},"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol","exportedSymbols":{"Address":[2415],"ERC1967Utils":[2048],"IBeacon":[2058],"StorageSlot":[2525]},"id":2049,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1747,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"114:24:9"},{"absolutePath":"@openzeppelin/contracts/proxy/beacon/IBeacon.sol","file":"../beacon/IBeacon.sol","id":1749,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2049,"sourceUnit":2059,"src":"140:46:9","symbolAliases":[{"foreign":{"id":1748,"name":"IBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2058,"src":"148:7:9","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Address.sol","file":"../../utils/Address.sol","id":1751,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2049,"sourceUnit":2416,"src":"187:48:9","symbolAliases":[{"foreign":{"id":1750,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2415,"src":"195:7:9","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/StorageSlot.sol","file":"../../utils/StorageSlot.sol","id":1753,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2049,"sourceUnit":2526,"src":"236:56:9","symbolAliases":[{"foreign":{"id":1752,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2525,"src":"244:11:9","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"ERC1967Utils","contractDependencies":[],"contractKind":"library","documentation":{"id":1754,"nodeType":"StructuredDocumentation","src":"294:154:9","text":" @dev This abstract contract provides getters and event emitting update functions for\n https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots."},"fullyImplemented":true,"id":2048,"linearizedBaseContracts":[2048],"name":"ERC1967Utils","nameLocation":"457:12:9","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":1755,"nodeType":"StructuredDocumentation","src":"660:68:9","text":" @dev Emitted when the implementation is upgraded."},"eventSelector":"bc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","id":1759,"name":"Upgraded","nameLocation":"739:8:9","nodeType":"EventDefinition","parameters":{"id":1758,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1757,"indexed":true,"mutability":"mutable","name":"implementation","nameLocation":"764:14:9","nodeType":"VariableDeclaration","scope":1759,"src":"748:30:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1756,"name":"address","nodeType":"ElementaryTypeName","src":"748:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"747:32:9"},"src":"733:47:9"},{"anonymous":false,"documentation":{"id":1760,"nodeType":"StructuredDocumentation","src":"786:67:9","text":" @dev Emitted when the admin account has changed."},"eventSelector":"7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f","id":1766,"name":"AdminChanged","nameLocation":"864:12:9","nodeType":"EventDefinition","parameters":{"id":1765,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1762,"indexed":false,"mutability":"mutable","name":"previousAdmin","nameLocation":"885:13:9","nodeType":"VariableDeclaration","scope":1766,"src":"877:21:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1761,"name":"address","nodeType":"ElementaryTypeName","src":"877:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1764,"indexed":false,"mutability":"mutable","name":"newAdmin","nameLocation":"908:8:9","nodeType":"VariableDeclaration","scope":1766,"src":"900:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1763,"name":"address","nodeType":"ElementaryTypeName","src":"900:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"876:41:9"},"src":"858:60:9"},{"anonymous":false,"documentation":{"id":1767,"nodeType":"StructuredDocumentation","src":"924:59:9","text":" @dev Emitted when the beacon is changed."},"eventSelector":"1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e","id":1771,"name":"BeaconUpgraded","nameLocation":"994:14:9","nodeType":"EventDefinition","parameters":{"id":1770,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1769,"indexed":true,"mutability":"mutable","name":"beacon","nameLocation":"1025:6:9","nodeType":"VariableDeclaration","scope":1771,"src":"1009:22:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1768,"name":"address","nodeType":"ElementaryTypeName","src":"1009:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1008:24:9"},"src":"988:45:9"},{"constant":true,"documentation":{"id":1772,"nodeType":"StructuredDocumentation","src":"1039:170:9","text":" @dev Storage slot with the address of the current implementation.\n This is the keccak-256 hash of \"eip1967.proxy.implementation\" subtracted by 1."},"id":1775,"mutability":"constant","name":"IMPLEMENTATION_SLOT","nameLocation":"1305:19:9","nodeType":"VariableDeclaration","scope":2048,"src":"1279:114:9","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1773,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1279:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307833363038393461313362613161333231303636376338323834393264623938646361336532303736636333373335613932306133636135303564333832626263","id":1774,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1327:66:9","typeDescriptions":{"typeIdentifier":"t_rational_24440054405305269366569402256811496959409073762505157381672968839269610695612_by_1","typeString":"int_const 2444...(69 digits omitted)...5612"},"value":"0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc"},"visibility":"internal"},{"documentation":{"id":1776,"nodeType":"StructuredDocumentation","src":"1400:69:9","text":" @dev The `implementation` of the proxy is invalid."},"errorSelector":"4c9c8ce3","id":1780,"name":"ERC1967InvalidImplementation","nameLocation":"1480:28:9","nodeType":"ErrorDefinition","parameters":{"id":1779,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1778,"mutability":"mutable","name":"implementation","nameLocation":"1517:14:9","nodeType":"VariableDeclaration","scope":1780,"src":"1509:22:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1777,"name":"address","nodeType":"ElementaryTypeName","src":"1509:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1508:24:9"},"src":"1474:59:9"},{"documentation":{"id":1781,"nodeType":"StructuredDocumentation","src":"1539:60:9","text":" @dev The `admin` of the proxy is invalid."},"errorSelector":"62e77ba2","id":1785,"name":"ERC1967InvalidAdmin","nameLocation":"1610:19:9","nodeType":"ErrorDefinition","parameters":{"id":1784,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1783,"mutability":"mutable","name":"admin","nameLocation":"1638:5:9","nodeType":"VariableDeclaration","scope":1785,"src":"1630:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1782,"name":"address","nodeType":"ElementaryTypeName","src":"1630:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1629:15:9"},"src":"1604:41:9"},{"documentation":{"id":1786,"nodeType":"StructuredDocumentation","src":"1651:61:9","text":" @dev The `beacon` of the proxy is invalid."},"errorSelector":"64ced0ec","id":1790,"name":"ERC1967InvalidBeacon","nameLocation":"1723:20:9","nodeType":"ErrorDefinition","parameters":{"id":1789,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1788,"mutability":"mutable","name":"beacon","nameLocation":"1752:6:9","nodeType":"VariableDeclaration","scope":1790,"src":"1744:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1787,"name":"address","nodeType":"ElementaryTypeName","src":"1744:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1743:16:9"},"src":"1717:43:9"},{"documentation":{"id":1791,"nodeType":"StructuredDocumentation","src":"1766:82:9","text":" @dev An upgrade function sees `msg.value > 0` that may be lost."},"errorSelector":"b398979f","id":1793,"name":"ERC1967NonPayable","nameLocation":"1859:17:9","nodeType":"ErrorDefinition","parameters":{"id":1792,"nodeType":"ParameterList","parameters":[],"src":"1876:2:9"},"src":"1853:26:9"},{"body":{"id":1805,"nodeType":"Block","src":"2018:77:9","statements":[{"expression":{"expression":{"arguments":[{"id":1801,"name":"IMPLEMENTATION_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1775,"src":"2062:19:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":1799,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2525,"src":"2035:11:9","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$2525_$","typeString":"type(library StorageSlot)"}},"id":1800,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2047:14:9","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":2447,"src":"2035:26:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$2421_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":1802,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2035:47:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$2421_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":1803,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2083:5:9","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":2420,"src":"2035:53:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1798,"id":1804,"nodeType":"Return","src":"2028:60:9"}]},"documentation":{"id":1794,"nodeType":"StructuredDocumentation","src":"1885:67:9","text":" @dev Returns the current implementation address."},"id":1806,"implemented":true,"kind":"function","modifiers":[],"name":"getImplementation","nameLocation":"1966:17:9","nodeType":"FunctionDefinition","parameters":{"id":1795,"nodeType":"ParameterList","parameters":[],"src":"1983:2:9"},"returnParameters":{"id":1798,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1797,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1806,"src":"2009:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1796,"name":"address","nodeType":"ElementaryTypeName","src":"2009:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2008:9:9"},"scope":2048,"src":"1957:138:9","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1832,"nodeType":"Block","src":"2249:218:9","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1816,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":1812,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1809,"src":"2263:17:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1813,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2281:4:9","memberName":"code","nodeType":"MemberAccess","src":"2263:22:9","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1814,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2286:6:9","memberName":"length","nodeType":"MemberAccess","src":"2263:29:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1815,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2296:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2263:34:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1822,"nodeType":"IfStatement","src":"2259:119:9","trueBody":{"id":1821,"nodeType":"Block","src":"2299:79:9","statements":[{"errorCall":{"arguments":[{"id":1818,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1809,"src":"2349:17:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1817,"name":"ERC1967InvalidImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1780,"src":"2320:28:9","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":1819,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2320:47:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1820,"nodeType":"RevertStatement","src":"2313:54:9"}]}},{"expression":{"id":1830,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":1826,"name":"IMPLEMENTATION_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1775,"src":"2414:19:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":1823,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2525,"src":"2387:11:9","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$2525_$","typeString":"type(library StorageSlot)"}},"id":1825,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2399:14:9","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":2447,"src":"2387:26:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$2421_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":1827,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2387:47:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$2421_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":1828,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2435:5:9","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":2420,"src":"2387:53:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1829,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1809,"src":"2443:17:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2387:73:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1831,"nodeType":"ExpressionStatement","src":"2387:73:9"}]},"documentation":{"id":1807,"nodeType":"StructuredDocumentation","src":"2101:80:9","text":" @dev Stores a new address in the EIP1967 implementation slot."},"id":1833,"implemented":true,"kind":"function","modifiers":[],"name":"_setImplementation","nameLocation":"2195:18:9","nodeType":"FunctionDefinition","parameters":{"id":1810,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1809,"mutability":"mutable","name":"newImplementation","nameLocation":"2222:17:9","nodeType":"VariableDeclaration","scope":1833,"src":"2214:25:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1808,"name":"address","nodeType":"ElementaryTypeName","src":"2214:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2213:27:9"},"returnParameters":{"id":1811,"nodeType":"ParameterList","parameters":[],"src":"2249:0:9"},"scope":2048,"src":"2186:281:9","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":1866,"nodeType":"Block","src":"2860:254:9","statements":[{"expression":{"arguments":[{"id":1842,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1836,"src":"2889:17:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1841,"name":"_setImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1833,"src":"2870:18:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":1843,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2870:37:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1844,"nodeType":"ExpressionStatement","src":"2870:37:9"},{"eventCall":{"arguments":[{"id":1846,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1836,"src":"2931:17:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1845,"name":"Upgraded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1759,"src":"2922:8:9","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":1847,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2922:27:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1848,"nodeType":"EmitStatement","src":"2917:32:9"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1852,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1849,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1838,"src":"2964:4:9","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1850,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2969:6:9","memberName":"length","nodeType":"MemberAccess","src":"2964:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1851,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2978:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2964:15:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1864,"nodeType":"Block","src":"3065:43:9","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":1861,"name":"_checkNonPayable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2047,"src":"3079:16:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":1862,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3079:18:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1863,"nodeType":"ExpressionStatement","src":"3079:18:9"}]},"id":1865,"nodeType":"IfStatement","src":"2960:148:9","trueBody":{"id":1860,"nodeType":"Block","src":"2981:78:9","statements":[{"expression":{"arguments":[{"id":1856,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1836,"src":"3024:17:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1857,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1838,"src":"3043:4:9","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":1853,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2415,"src":"2995:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Address_$2415_$","typeString":"type(library Address)"}},"id":1855,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3003:20:9","memberName":"functionDelegateCall","nodeType":"MemberAccess","referencedDeclaration":2334,"src":"2995:28:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory) returns (bytes memory)"}},"id":1858,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2995:53:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1859,"nodeType":"ExpressionStatement","src":"2995:53:9"}]}}]},"documentation":{"id":1834,"nodeType":"StructuredDocumentation","src":"2473:301:9","text":" @dev Performs implementation upgrade with additional setup call if data is nonempty.\n This function is payable only if the setup call is performed, otherwise `msg.value` is rejected\n to avoid stuck value in the contract.\n Emits an {IERC1967-Upgraded} event."},"id":1867,"implemented":true,"kind":"function","modifiers":[],"name":"upgradeToAndCall","nameLocation":"2788:16:9","nodeType":"FunctionDefinition","parameters":{"id":1839,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1836,"mutability":"mutable","name":"newImplementation","nameLocation":"2813:17:9","nodeType":"VariableDeclaration","scope":1867,"src":"2805:25:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1835,"name":"address","nodeType":"ElementaryTypeName","src":"2805:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1838,"mutability":"mutable","name":"data","nameLocation":"2845:4:9","nodeType":"VariableDeclaration","scope":1867,"src":"2832:17:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1837,"name":"bytes","nodeType":"ElementaryTypeName","src":"2832:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2804:46:9"},"returnParameters":{"id":1840,"nodeType":"ParameterList","parameters":[],"src":"2860:0:9"},"scope":2048,"src":"2779:335:9","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"constant":true,"documentation":{"id":1868,"nodeType":"StructuredDocumentation","src":"3120:145:9","text":" @dev Storage slot with the admin of the contract.\n This is the keccak-256 hash of \"eip1967.proxy.admin\" subtracted by 1."},"id":1871,"mutability":"constant","name":"ADMIN_SLOT","nameLocation":"3361:10:9","nodeType":"VariableDeclaration","scope":2048,"src":"3335:105:9","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1869,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3335:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307862353331323736383461353638623331373361653133623966386136303136653234336536336236653865653131373864366137313738353062356436313033","id":1870,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3374:66:9","typeDescriptions":{"typeIdentifier":"t_rational_81955473079516046949633743016697847541294818689821282749996681496272635257091_by_1","typeString":"int_const 8195...(69 digits omitted)...7091"},"value":"0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103"},"visibility":"internal"},{"body":{"id":1883,"nodeType":"Block","src":"3844:68:9","statements":[{"expression":{"expression":{"arguments":[{"id":1879,"name":"ADMIN_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1871,"src":"3888:10:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":1877,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2525,"src":"3861:11:9","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$2525_$","typeString":"type(library StorageSlot)"}},"id":1878,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3873:14:9","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":2447,"src":"3861:26:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$2421_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":1880,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3861:38:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$2421_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":1881,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3900:5:9","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":2420,"src":"3861:44:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1876,"id":1882,"nodeType":"Return","src":"3854:51:9"}]},"documentation":{"id":1872,"nodeType":"StructuredDocumentation","src":"3447:340:9","text":" @dev Returns the current admin.\n TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using\n the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\n `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`"},"id":1884,"implemented":true,"kind":"function","modifiers":[],"name":"getAdmin","nameLocation":"3801:8:9","nodeType":"FunctionDefinition","parameters":{"id":1873,"nodeType":"ParameterList","parameters":[],"src":"3809:2:9"},"returnParameters":{"id":1876,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1875,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1884,"src":"3835:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1874,"name":"address","nodeType":"ElementaryTypeName","src":"3835:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3834:9:9"},"scope":2048,"src":"3792:120:9","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1914,"nodeType":"Block","src":"4039:172:9","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1895,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1890,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1887,"src":"4053:8:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":1893,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4073:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1892,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4065:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1891,"name":"address","nodeType":"ElementaryTypeName","src":"4065:7:9","typeDescriptions":{}}},"id":1894,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4065:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4053:22:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1904,"nodeType":"IfStatement","src":"4049:91:9","trueBody":{"id":1903,"nodeType":"Block","src":"4077:63:9","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":1899,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4126:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1898,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4118:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1897,"name":"address","nodeType":"ElementaryTypeName","src":"4118:7:9","typeDescriptions":{}}},"id":1900,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4118:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1896,"name":"ERC1967InvalidAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1785,"src":"4098:19:9","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":1901,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4098:31:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1902,"nodeType":"RevertStatement","src":"4091:38:9"}]}},{"expression":{"id":1912,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":1908,"name":"ADMIN_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1871,"src":"4176:10:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":1905,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2525,"src":"4149:11:9","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$2525_$","typeString":"type(library StorageSlot)"}},"id":1907,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4161:14:9","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":2447,"src":"4149:26:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$2421_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":1909,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4149:38:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$2421_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":1910,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4188:5:9","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":2420,"src":"4149:44:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1911,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1887,"src":"4196:8:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4149:55:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1913,"nodeType":"ExpressionStatement","src":"4149:55:9"}]},"documentation":{"id":1885,"nodeType":"StructuredDocumentation","src":"3918:71:9","text":" @dev Stores a new address in the EIP1967 admin slot."},"id":1915,"implemented":true,"kind":"function","modifiers":[],"name":"_setAdmin","nameLocation":"4003:9:9","nodeType":"FunctionDefinition","parameters":{"id":1888,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1887,"mutability":"mutable","name":"newAdmin","nameLocation":"4021:8:9","nodeType":"VariableDeclaration","scope":1915,"src":"4013:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1886,"name":"address","nodeType":"ElementaryTypeName","src":"4013:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4012:18:9"},"returnParameters":{"id":1889,"nodeType":"ParameterList","parameters":[],"src":"4039:0:9"},"scope":2048,"src":"3994:217:9","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":1931,"nodeType":"Block","src":"4379:85:9","statements":[{"eventCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":1922,"name":"getAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1884,"src":"4407:8:9","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1923,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4407:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1924,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1918,"src":"4419:8:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1921,"name":"AdminChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1766,"src":"4394:12:9","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":1925,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4394:34:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1926,"nodeType":"EmitStatement","src":"4389:39:9"},{"expression":{"arguments":[{"id":1928,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1918,"src":"4448:8:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1927,"name":"_setAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1915,"src":"4438:9:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":1929,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4438:19:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1930,"nodeType":"ExpressionStatement","src":"4438:19:9"}]},"documentation":{"id":1916,"nodeType":"StructuredDocumentation","src":"4217:109:9","text":" @dev Changes the admin of the proxy.\n Emits an {IERC1967-AdminChanged} event."},"id":1932,"implemented":true,"kind":"function","modifiers":[],"name":"changeAdmin","nameLocation":"4340:11:9","nodeType":"FunctionDefinition","parameters":{"id":1919,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1918,"mutability":"mutable","name":"newAdmin","nameLocation":"4360:8:9","nodeType":"VariableDeclaration","scope":1932,"src":"4352:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1917,"name":"address","nodeType":"ElementaryTypeName","src":"4352:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4351:18:9"},"returnParameters":{"id":1920,"nodeType":"ParameterList","parameters":[],"src":"4379:0:9"},"scope":2048,"src":"4331:133:9","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"constant":true,"documentation":{"id":1933,"nodeType":"StructuredDocumentation","src":"4470:201:9","text":" @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\n This is the keccak-256 hash of \"eip1967.proxy.beacon\" subtracted by 1."},"id":1936,"mutability":"constant","name":"BEACON_SLOT","nameLocation":"4767:11:9","nodeType":"VariableDeclaration","scope":2048,"src":"4741:106:9","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1934,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4741:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307861336630616437346535343233616562666438306433656634333436353738333335613961373261656165653539666636636233353832623335313333643530","id":1935,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4781:66:9","typeDescriptions":{"typeIdentifier":"t_rational_74152234768234802001998023604048924213078445070507226371336425913862612794704_by_1","typeString":"int_const 7415...(69 digits omitted)...4704"},"value":"0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50"},"visibility":"internal"},{"body":{"id":1948,"nodeType":"Block","src":"4963:69:9","statements":[{"expression":{"expression":{"arguments":[{"id":1944,"name":"BEACON_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1936,"src":"5007:11:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":1942,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2525,"src":"4980:11:9","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$2525_$","typeString":"type(library StorageSlot)"}},"id":1943,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4992:14:9","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":2447,"src":"4980:26:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$2421_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":1945,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4980:39:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$2421_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":1946,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5020:5:9","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":2420,"src":"4980:45:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1941,"id":1947,"nodeType":"Return","src":"4973:52:9"}]},"documentation":{"id":1937,"nodeType":"StructuredDocumentation","src":"4854:51:9","text":" @dev Returns the current beacon."},"id":1949,"implemented":true,"kind":"function","modifiers":[],"name":"getBeacon","nameLocation":"4919:9:9","nodeType":"FunctionDefinition","parameters":{"id":1938,"nodeType":"ParameterList","parameters":[],"src":"4928:2:9"},"returnParameters":{"id":1941,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1940,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1949,"src":"4954:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1939,"name":"address","nodeType":"ElementaryTypeName","src":"4954:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4953:9:9"},"scope":2048,"src":"4910:122:9","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1994,"nodeType":"Block","src":"5161:390:9","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1959,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":1955,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1952,"src":"5175:9:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1956,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5185:4:9","memberName":"code","nodeType":"MemberAccess","src":"5175:14:9","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1957,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5190:6:9","memberName":"length","nodeType":"MemberAccess","src":"5175:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1958,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5200:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5175:26:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1965,"nodeType":"IfStatement","src":"5171:95:9","trueBody":{"id":1964,"nodeType":"Block","src":"5203:63:9","statements":[{"errorCall":{"arguments":[{"id":1961,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1952,"src":"5245:9:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1960,"name":"ERC1967InvalidBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1790,"src":"5224:20:9","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":1962,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5224:31:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1963,"nodeType":"RevertStatement","src":"5217:38:9"}]}},{"expression":{"id":1973,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":1969,"name":"BEACON_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1936,"src":"5303:11:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":1966,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2525,"src":"5276:11:9","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$2525_$","typeString":"type(library StorageSlot)"}},"id":1968,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5288:14:9","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":2447,"src":"5276:26:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$2421_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":1970,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5276:39:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$2421_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":1971,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5316:5:9","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":2420,"src":"5276:45:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1972,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1952,"src":"5324:9:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5276:57:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1974,"nodeType":"ExpressionStatement","src":"5276:57:9"},{"assignments":[1976],"declarations":[{"constant":false,"id":1976,"mutability":"mutable","name":"beaconImplementation","nameLocation":"5352:20:9","nodeType":"VariableDeclaration","scope":1994,"src":"5344:28:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1975,"name":"address","nodeType":"ElementaryTypeName","src":"5344:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":1982,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":1978,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1952,"src":"5383:9:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1977,"name":"IBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2058,"src":"5375:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBeacon_$2058_$","typeString":"type(contract IBeacon)"}},"id":1979,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5375:18:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBeacon_$2058","typeString":"contract IBeacon"}},"id":1980,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5394:14:9","memberName":"implementation","nodeType":"MemberAccess","referencedDeclaration":2057,"src":"5375:33:9","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":1981,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5375:35:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"5344:66:9"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1987,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":1983,"name":"beaconImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1976,"src":"5424:20:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1984,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5445:4:9","memberName":"code","nodeType":"MemberAccess","src":"5424:25:9","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1985,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5450:6:9","memberName":"length","nodeType":"MemberAccess","src":"5424:32:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1986,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5460:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5424:37:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1993,"nodeType":"IfStatement","src":"5420:125:9","trueBody":{"id":1992,"nodeType":"Block","src":"5463:82:9","statements":[{"errorCall":{"arguments":[{"id":1989,"name":"beaconImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1976,"src":"5513:20:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1988,"name":"ERC1967InvalidImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1780,"src":"5484:28:9","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":1990,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5484:50:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1991,"nodeType":"RevertStatement","src":"5477:57:9"}]}}]},"documentation":{"id":1950,"nodeType":"StructuredDocumentation","src":"5038:71:9","text":" @dev Stores a new beacon in the EIP1967 beacon slot."},"id":1995,"implemented":true,"kind":"function","modifiers":[],"name":"_setBeacon","nameLocation":"5123:10:9","nodeType":"FunctionDefinition","parameters":{"id":1953,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1952,"mutability":"mutable","name":"newBeacon","nameLocation":"5142:9:9","nodeType":"VariableDeclaration","scope":1995,"src":"5134:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1951,"name":"address","nodeType":"ElementaryTypeName","src":"5134:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5133:19:9"},"returnParameters":{"id":1954,"nodeType":"ParameterList","parameters":[],"src":"5161:0:9"},"scope":2048,"src":"5114:437:9","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":2032,"nodeType":"Block","src":"6155:254:9","statements":[{"expression":{"arguments":[{"id":2004,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1998,"src":"6176:9:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2003,"name":"_setBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1995,"src":"6165:10:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":2005,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6165:21:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2006,"nodeType":"ExpressionStatement","src":"6165:21:9"},{"eventCall":{"arguments":[{"id":2008,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1998,"src":"6216:9:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2007,"name":"BeaconUpgraded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1771,"src":"6201:14:9","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":2009,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6201:25:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2010,"nodeType":"EmitStatement","src":"6196:30:9"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2014,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2011,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2000,"src":"6241:4:9","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2012,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6246:6:9","memberName":"length","nodeType":"MemberAccess","src":"6241:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2013,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6255:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6241:15:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2030,"nodeType":"Block","src":"6360:43:9","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":2027,"name":"_checkNonPayable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2047,"src":"6374:16:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":2028,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6374:18:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2029,"nodeType":"ExpressionStatement","src":"6374:18:9"}]},"id":2031,"nodeType":"IfStatement","src":"6237:166:9","trueBody":{"id":2026,"nodeType":"Block","src":"6258:96:9","statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":2019,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1998,"src":"6309:9:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2018,"name":"IBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2058,"src":"6301:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBeacon_$2058_$","typeString":"type(contract IBeacon)"}},"id":2020,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6301:18:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBeacon_$2058","typeString":"contract IBeacon"}},"id":2021,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6320:14:9","memberName":"implementation","nodeType":"MemberAccess","referencedDeclaration":2057,"src":"6301:33:9","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":2022,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6301:35:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2023,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2000,"src":"6338:4:9","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":2015,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2415,"src":"6272:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Address_$2415_$","typeString":"type(library Address)"}},"id":2017,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6280:20:9","memberName":"functionDelegateCall","nodeType":"MemberAccess","referencedDeclaration":2334,"src":"6272:28:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory) returns (bytes memory)"}},"id":2024,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6272:71:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2025,"nodeType":"ExpressionStatement","src":"6272:71:9"}]}}]},"documentation":{"id":1996,"nodeType":"StructuredDocumentation","src":"5557:514:9","text":" @dev Change the beacon and trigger a setup call if data is nonempty.\n This function is payable only if the setup call is performed, otherwise `msg.value` is rejected\n to avoid stuck value in the contract.\n Emits an {IERC1967-BeaconUpgraded} event.\n CAUTION: Invoking this function has no effect on an instance of {BeaconProxy} since v5, since\n it uses an immutable beacon without looking at the value of the ERC-1967 beacon slot for\n efficiency."},"id":2033,"implemented":true,"kind":"function","modifiers":[],"name":"upgradeBeaconToAndCall","nameLocation":"6085:22:9","nodeType":"FunctionDefinition","parameters":{"id":2001,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1998,"mutability":"mutable","name":"newBeacon","nameLocation":"6116:9:9","nodeType":"VariableDeclaration","scope":2033,"src":"6108:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1997,"name":"address","nodeType":"ElementaryTypeName","src":"6108:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2000,"mutability":"mutable","name":"data","nameLocation":"6140:4:9","nodeType":"VariableDeclaration","scope":2033,"src":"6127:17:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1999,"name":"bytes","nodeType":"ElementaryTypeName","src":"6127:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6107:38:9"},"returnParameters":{"id":2002,"nodeType":"ParameterList","parameters":[],"src":"6155:0:9"},"scope":2048,"src":"6076:333:9","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2046,"nodeType":"Block","src":"6634:86:9","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2040,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2037,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6648:3:9","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2038,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6652:5:9","memberName":"value","nodeType":"MemberAccess","src":"6648:9:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2039,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6660:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6648:13:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2045,"nodeType":"IfStatement","src":"6644:70:9","trueBody":{"id":2044,"nodeType":"Block","src":"6663:51:9","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2041,"name":"ERC1967NonPayable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1793,"src":"6684:17:9","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":2042,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6684:19:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2043,"nodeType":"RevertStatement","src":"6677:26:9"}]}}]},"documentation":{"id":2034,"nodeType":"StructuredDocumentation","src":"6415:178:9","text":" @dev Reverts if `msg.value` is not zero. It can be used to avoid `msg.value` stuck in the contract\n if an upgrade doesn't perform an initialization call."},"id":2047,"implemented":true,"kind":"function","modifiers":[],"name":"_checkNonPayable","nameLocation":"6607:16:9","nodeType":"FunctionDefinition","parameters":{"id":2035,"nodeType":"ParameterList","parameters":[],"src":"6623:2:9"},"returnParameters":{"id":2036,"nodeType":"ParameterList","parameters":[],"src":"6634:0:9"},"scope":2048,"src":"6598:122:9","stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"scope":2049,"src":"449:6273:9","usedErrors":[1780,1785,1790,1793],"usedEvents":[1759,1766,1771]}],"src":"114:6609:9"},"id":9},"@openzeppelin/contracts/proxy/beacon/IBeacon.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/proxy/beacon/IBeacon.sol","exportedSymbols":{"IBeacon":[2058]},"id":2059,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2050,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"108:24:10"},{"abstract":false,"baseContracts":[],"canonicalName":"IBeacon","contractDependencies":[],"contractKind":"interface","documentation":{"id":2051,"nodeType":"StructuredDocumentation","src":"134:79:10","text":" @dev This is the interface that {BeaconProxy} expects of its beacon."},"fullyImplemented":false,"id":2058,"linearizedBaseContracts":[2058],"name":"IBeacon","nameLocation":"224:7:10","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":2052,"nodeType":"StructuredDocumentation","src":"238:168:10","text":" @dev Must return an address that can be used as a delegate call target.\n {UpgradeableBeacon} will check that this address is a contract."},"functionSelector":"5c60da1b","id":2057,"implemented":false,"kind":"function","modifiers":[],"name":"implementation","nameLocation":"420:14:10","nodeType":"FunctionDefinition","parameters":{"id":2053,"nodeType":"ParameterList","parameters":[],"src":"434:2:10"},"returnParameters":{"id":2056,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2055,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2057,"src":"460:7:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2054,"name":"address","nodeType":"ElementaryTypeName","src":"460:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"459:9:10"},"scope":2058,"src":"411:58:10","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":2059,"src":"214:257:10","usedErrors":[],"usedEvents":[]}],"src":"108:364:10"},"id":10},"@openzeppelin/contracts/token/ERC20/IERC20.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","exportedSymbols":{"IERC20":[2136]},"id":2137,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2060,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"106:24:11"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC20","contractDependencies":[],"contractKind":"interface","documentation":{"id":2061,"nodeType":"StructuredDocumentation","src":"132:70:11","text":" @dev Interface of the ERC20 standard as defined in the EIP."},"fullyImplemented":false,"id":2136,"linearizedBaseContracts":[2136],"name":"IERC20","nameLocation":"213:6:11","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":2062,"nodeType":"StructuredDocumentation","src":"226:158:11","text":" @dev Emitted when `value` tokens are moved from one account (`from`) to\n another (`to`).\n Note that `value` may be zero."},"eventSelector":"ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","id":2070,"name":"Transfer","nameLocation":"395:8:11","nodeType":"EventDefinition","parameters":{"id":2069,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2064,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"420:4:11","nodeType":"VariableDeclaration","scope":2070,"src":"404:20:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2063,"name":"address","nodeType":"ElementaryTypeName","src":"404:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2066,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"442:2:11","nodeType":"VariableDeclaration","scope":2070,"src":"426:18:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2065,"name":"address","nodeType":"ElementaryTypeName","src":"426:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2068,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"454:5:11","nodeType":"VariableDeclaration","scope":2070,"src":"446:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2067,"name":"uint256","nodeType":"ElementaryTypeName","src":"446:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"403:57:11"},"src":"389:72:11"},{"anonymous":false,"documentation":{"id":2071,"nodeType":"StructuredDocumentation","src":"467:148:11","text":" @dev Emitted when the allowance of a `spender` for an `owner` is set by\n a call to {approve}. `value` is the new allowance."},"eventSelector":"8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925","id":2079,"name":"Approval","nameLocation":"626:8:11","nodeType":"EventDefinition","parameters":{"id":2078,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2073,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"651:5:11","nodeType":"VariableDeclaration","scope":2079,"src":"635:21:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2072,"name":"address","nodeType":"ElementaryTypeName","src":"635:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2075,"indexed":true,"mutability":"mutable","name":"spender","nameLocation":"674:7:11","nodeType":"VariableDeclaration","scope":2079,"src":"658:23:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2074,"name":"address","nodeType":"ElementaryTypeName","src":"658:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2077,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"691:5:11","nodeType":"VariableDeclaration","scope":2079,"src":"683:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2076,"name":"uint256","nodeType":"ElementaryTypeName","src":"683:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"634:63:11"},"src":"620:78:11"},{"documentation":{"id":2080,"nodeType":"StructuredDocumentation","src":"704:65:11","text":" @dev Returns the value of tokens in existence."},"functionSelector":"18160ddd","id":2085,"implemented":false,"kind":"function","modifiers":[],"name":"totalSupply","nameLocation":"783:11:11","nodeType":"FunctionDefinition","parameters":{"id":2081,"nodeType":"ParameterList","parameters":[],"src":"794:2:11"},"returnParameters":{"id":2084,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2083,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2085,"src":"820:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2082,"name":"uint256","nodeType":"ElementaryTypeName","src":"820:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"819:9:11"},"scope":2136,"src":"774:55:11","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2086,"nodeType":"StructuredDocumentation","src":"835:71:11","text":" @dev Returns the value of tokens owned by `account`."},"functionSelector":"70a08231","id":2093,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"920:9:11","nodeType":"FunctionDefinition","parameters":{"id":2089,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2088,"mutability":"mutable","name":"account","nameLocation":"938:7:11","nodeType":"VariableDeclaration","scope":2093,"src":"930:15:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2087,"name":"address","nodeType":"ElementaryTypeName","src":"930:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"929:17:11"},"returnParameters":{"id":2092,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2091,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2093,"src":"970:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2090,"name":"uint256","nodeType":"ElementaryTypeName","src":"970:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"969:9:11"},"scope":2136,"src":"911:68:11","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2094,"nodeType":"StructuredDocumentation","src":"985:213:11","text":" @dev Moves a `value` amount of tokens from the caller's account to `to`.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."},"functionSelector":"a9059cbb","id":2103,"implemented":false,"kind":"function","modifiers":[],"name":"transfer","nameLocation":"1212:8:11","nodeType":"FunctionDefinition","parameters":{"id":2099,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2096,"mutability":"mutable","name":"to","nameLocation":"1229:2:11","nodeType":"VariableDeclaration","scope":2103,"src":"1221:10:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2095,"name":"address","nodeType":"ElementaryTypeName","src":"1221:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2098,"mutability":"mutable","name":"value","nameLocation":"1241:5:11","nodeType":"VariableDeclaration","scope":2103,"src":"1233:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2097,"name":"uint256","nodeType":"ElementaryTypeName","src":"1233:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1220:27:11"},"returnParameters":{"id":2102,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2101,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2103,"src":"1266:4:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2100,"name":"bool","nodeType":"ElementaryTypeName","src":"1266:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1265:6:11"},"scope":2136,"src":"1203:69:11","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2104,"nodeType":"StructuredDocumentation","src":"1278:264:11","text":" @dev Returns the remaining number of tokens that `spender` will be\n allowed to spend on behalf of `owner` through {transferFrom}. This is\n zero by default.\n This value changes when {approve} or {transferFrom} are called."},"functionSelector":"dd62ed3e","id":2113,"implemented":false,"kind":"function","modifiers":[],"name":"allowance","nameLocation":"1556:9:11","nodeType":"FunctionDefinition","parameters":{"id":2109,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2106,"mutability":"mutable","name":"owner","nameLocation":"1574:5:11","nodeType":"VariableDeclaration","scope":2113,"src":"1566:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2105,"name":"address","nodeType":"ElementaryTypeName","src":"1566:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2108,"mutability":"mutable","name":"spender","nameLocation":"1589:7:11","nodeType":"VariableDeclaration","scope":2113,"src":"1581:15:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2107,"name":"address","nodeType":"ElementaryTypeName","src":"1581:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1565:32:11"},"returnParameters":{"id":2112,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2111,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2113,"src":"1621:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2110,"name":"uint256","nodeType":"ElementaryTypeName","src":"1621:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1620:9:11"},"scope":2136,"src":"1547:83:11","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2114,"nodeType":"StructuredDocumentation","src":"1636:667:11","text":" @dev Sets a `value` amount of tokens as the allowance of `spender` over the\n caller's tokens.\n Returns a boolean value indicating whether the operation succeeded.\n IMPORTANT: Beware that changing an allowance with this method brings the risk\n that someone may use both the old and the new allowance by unfortunate\n transaction ordering. One possible solution to mitigate this race\n condition is to first reduce the spender's allowance to 0 and set the\n desired value afterwards:\n https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n Emits an {Approval} event."},"functionSelector":"095ea7b3","id":2123,"implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"2317:7:11","nodeType":"FunctionDefinition","parameters":{"id":2119,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2116,"mutability":"mutable","name":"spender","nameLocation":"2333:7:11","nodeType":"VariableDeclaration","scope":2123,"src":"2325:15:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2115,"name":"address","nodeType":"ElementaryTypeName","src":"2325:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2118,"mutability":"mutable","name":"value","nameLocation":"2350:5:11","nodeType":"VariableDeclaration","scope":2123,"src":"2342:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2117,"name":"uint256","nodeType":"ElementaryTypeName","src":"2342:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2324:32:11"},"returnParameters":{"id":2122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2121,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2123,"src":"2375:4:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2120,"name":"bool","nodeType":"ElementaryTypeName","src":"2375:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2374:6:11"},"scope":2136,"src":"2308:73:11","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2124,"nodeType":"StructuredDocumentation","src":"2387:297:11","text":" @dev Moves a `value` amount of tokens from `from` to `to` using the\n allowance mechanism. `value` is then deducted from the caller's\n allowance.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."},"functionSelector":"23b872dd","id":2135,"implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"2698:12:11","nodeType":"FunctionDefinition","parameters":{"id":2131,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2126,"mutability":"mutable","name":"from","nameLocation":"2719:4:11","nodeType":"VariableDeclaration","scope":2135,"src":"2711:12:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2125,"name":"address","nodeType":"ElementaryTypeName","src":"2711:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2128,"mutability":"mutable","name":"to","nameLocation":"2733:2:11","nodeType":"VariableDeclaration","scope":2135,"src":"2725:10:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2127,"name":"address","nodeType":"ElementaryTypeName","src":"2725:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2130,"mutability":"mutable","name":"value","nameLocation":"2745:5:11","nodeType":"VariableDeclaration","scope":2135,"src":"2737:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2129,"name":"uint256","nodeType":"ElementaryTypeName","src":"2737:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2710:41:11"},"returnParameters":{"id":2134,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2133,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2135,"src":"2770:4:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2132,"name":"bool","nodeType":"ElementaryTypeName","src":"2770:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2769:6:11"},"scope":2136,"src":"2689:87:11","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":2137,"src":"203:2575:11","usedErrors":[],"usedEvents":[2070,2079]}],"src":"106:2673:11"},"id":11},"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","exportedSymbols":{"IERC20":[2136],"IERC20Metadata":[2162]},"id":2163,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2138,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"125:24:12"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"../IERC20.sol","id":2140,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2163,"sourceUnit":2137,"src":"151:37:12","symbolAliases":[{"foreign":{"id":2139,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"159:6:12","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":2142,"name":"IERC20","nameLocations":["305:6:12"],"nodeType":"IdentifierPath","referencedDeclaration":2136,"src":"305:6:12"},"id":2143,"nodeType":"InheritanceSpecifier","src":"305:6:12"}],"canonicalName":"IERC20Metadata","contractDependencies":[],"contractKind":"interface","documentation":{"id":2141,"nodeType":"StructuredDocumentation","src":"190:86:12","text":" @dev Interface for the optional metadata functions from the ERC20 standard."},"fullyImplemented":false,"id":2162,"linearizedBaseContracts":[2162,2136],"name":"IERC20Metadata","nameLocation":"287:14:12","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":2144,"nodeType":"StructuredDocumentation","src":"318:54:12","text":" @dev Returns the name of the token."},"functionSelector":"06fdde03","id":2149,"implemented":false,"kind":"function","modifiers":[],"name":"name","nameLocation":"386:4:12","nodeType":"FunctionDefinition","parameters":{"id":2145,"nodeType":"ParameterList","parameters":[],"src":"390:2:12"},"returnParameters":{"id":2148,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2147,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2149,"src":"416:13:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2146,"name":"string","nodeType":"ElementaryTypeName","src":"416:6:12","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"415:15:12"},"scope":2162,"src":"377:54:12","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2150,"nodeType":"StructuredDocumentation","src":"437:56:12","text":" @dev Returns the symbol of the token."},"functionSelector":"95d89b41","id":2155,"implemented":false,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"507:6:12","nodeType":"FunctionDefinition","parameters":{"id":2151,"nodeType":"ParameterList","parameters":[],"src":"513:2:12"},"returnParameters":{"id":2154,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2153,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2155,"src":"539:13:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2152,"name":"string","nodeType":"ElementaryTypeName","src":"539:6:12","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"538:15:12"},"scope":2162,"src":"498:56:12","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2156,"nodeType":"StructuredDocumentation","src":"560:65:12","text":" @dev Returns the decimals places of the token."},"functionSelector":"313ce567","id":2161,"implemented":false,"kind":"function","modifiers":[],"name":"decimals","nameLocation":"639:8:12","nodeType":"FunctionDefinition","parameters":{"id":2157,"nodeType":"ParameterList","parameters":[],"src":"647:2:12"},"returnParameters":{"id":2160,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2159,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2161,"src":"673:5:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":2158,"name":"uint8","nodeType":"ElementaryTypeName","src":"673:5:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"672:7:12"},"scope":2162,"src":"630:50:12","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":2163,"src":"277:405:12","usedErrors":[],"usedEvents":[2070,2079]}],"src":"125:558:12"},"id":12},"@openzeppelin/contracts/utils/Address.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Address.sol","exportedSymbols":{"Address":[2415]},"id":2416,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2164,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"101:24:13"},{"abstract":false,"baseContracts":[],"canonicalName":"Address","contractDependencies":[],"contractKind":"library","documentation":{"id":2165,"nodeType":"StructuredDocumentation","src":"127:67:13","text":" @dev Collection of functions related to the address type"},"fullyImplemented":true,"id":2415,"linearizedBaseContracts":[2415],"name":"Address","nameLocation":"203:7:13","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":2166,"nodeType":"StructuredDocumentation","src":"217:94:13","text":" @dev The ETH balance of the account is not enough to perform the operation."},"errorSelector":"cd786059","id":2170,"name":"AddressInsufficientBalance","nameLocation":"322:26:13","nodeType":"ErrorDefinition","parameters":{"id":2169,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2168,"mutability":"mutable","name":"account","nameLocation":"357:7:13","nodeType":"VariableDeclaration","scope":2170,"src":"349:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2167,"name":"address","nodeType":"ElementaryTypeName","src":"349:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"348:17:13"},"src":"316:50:13"},{"documentation":{"id":2171,"nodeType":"StructuredDocumentation","src":"372:75:13","text":" @dev There's no code at `target` (it is not a contract)."},"errorSelector":"9996b315","id":2175,"name":"AddressEmptyCode","nameLocation":"458:16:13","nodeType":"ErrorDefinition","parameters":{"id":2174,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2173,"mutability":"mutable","name":"target","nameLocation":"483:6:13","nodeType":"VariableDeclaration","scope":2175,"src":"475:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2172,"name":"address","nodeType":"ElementaryTypeName","src":"475:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"474:16:13"},"src":"452:39:13"},{"documentation":{"id":2176,"nodeType":"StructuredDocumentation","src":"497:89:13","text":" @dev A call to an address target failed. The target may have reverted."},"errorSelector":"1425ea42","id":2178,"name":"FailedInnerCall","nameLocation":"597:15:13","nodeType":"ErrorDefinition","parameters":{"id":2177,"nodeType":"ParameterList","parameters":[],"src":"612:2:13"},"src":"591:24:13"},{"body":{"id":2218,"nodeType":"Block","src":"1602:260:13","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":2188,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1624:4:13","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$2415","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$2415","typeString":"library Address"}],"id":2187,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1616:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2186,"name":"address","nodeType":"ElementaryTypeName","src":"1616:7:13","typeDescriptions":{}}},"id":2189,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1616:13:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2190,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1630:7:13","memberName":"balance","nodeType":"MemberAccess","src":"1616:21:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":2191,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2183,"src":"1640:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1616:30:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2201,"nodeType":"IfStatement","src":"1612:109:13","trueBody":{"id":2200,"nodeType":"Block","src":"1648:73:13","statements":[{"errorCall":{"arguments":[{"arguments":[{"id":2196,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1704:4:13","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$2415","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$2415","typeString":"library Address"}],"id":2195,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1696:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2194,"name":"address","nodeType":"ElementaryTypeName","src":"1696:7:13","typeDescriptions":{}}},"id":2197,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1696:13:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2193,"name":"AddressInsufficientBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2170,"src":"1669:26:13","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2198,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1669:41:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2199,"nodeType":"RevertStatement","src":"1662:48:13"}]}},{"assignments":[2203,null],"declarations":[{"constant":false,"id":2203,"mutability":"mutable","name":"success","nameLocation":"1737:7:13","nodeType":"VariableDeclaration","scope":2218,"src":"1732:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2202,"name":"bool","nodeType":"ElementaryTypeName","src":"1732:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":2210,"initialValue":{"arguments":[{"hexValue":"","id":2208,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1780:2:13","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"id":2204,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2181,"src":"1750:9:13","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":2205,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1760:4:13","memberName":"call","nodeType":"MemberAccess","src":"1750:14:13","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":2207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":2206,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2183,"src":"1772:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"1750:29:13","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":2209,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1750:33:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"1731:52:13"},{"condition":{"id":2212,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"1797:8:13","subExpression":{"id":2211,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2203,"src":"1798:7:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2217,"nodeType":"IfStatement","src":"1793:63:13","trueBody":{"id":2216,"nodeType":"Block","src":"1807:49:13","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2213,"name":"FailedInnerCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2178,"src":"1828:15:13","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":2214,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1828:17:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2215,"nodeType":"RevertStatement","src":"1821:24:13"}]}}]},"documentation":{"id":2179,"nodeType":"StructuredDocumentation","src":"621:905:13","text":" @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n `recipient`, forwarding all available gas and reverting on errors.\n https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n of certain opcodes, possibly making contracts go over the 2300 gas limit\n imposed by `transfer`, making them unable to receive funds via\n `transfer`. {sendValue} removes this limitation.\n https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n IMPORTANT: because control is transferred to `recipient`, care must be\n taken to not create reentrancy vulnerabilities. Consider using\n {ReentrancyGuard} or the\n https://solidity.readthedocs.io/en/v0.8.20/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]."},"id":2219,"implemented":true,"kind":"function","modifiers":[],"name":"sendValue","nameLocation":"1540:9:13","nodeType":"FunctionDefinition","parameters":{"id":2184,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2181,"mutability":"mutable","name":"recipient","nameLocation":"1566:9:13","nodeType":"VariableDeclaration","scope":2219,"src":"1550:25:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":2180,"name":"address","nodeType":"ElementaryTypeName","src":"1550:15:13","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"},{"constant":false,"id":2183,"mutability":"mutable","name":"amount","nameLocation":"1585:6:13","nodeType":"VariableDeclaration","scope":2219,"src":"1577:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2182,"name":"uint256","nodeType":"ElementaryTypeName","src":"1577:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1549:43:13"},"returnParameters":{"id":2185,"nodeType":"ParameterList","parameters":[],"src":"1602:0:13"},"scope":2415,"src":"1531:331:13","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2235,"nodeType":"Block","src":"2794:62:13","statements":[{"expression":{"arguments":[{"id":2230,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2222,"src":"2833:6:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2231,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2224,"src":"2841:4:13","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"30","id":2232,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2847:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2229,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2282,"src":"2811:21:13","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256) returns (bytes memory)"}},"id":2233,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2811:38:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":2228,"id":2234,"nodeType":"Return","src":"2804:45:13"}]},"documentation":{"id":2220,"nodeType":"StructuredDocumentation","src":"1868:832:13","text":" @dev Performs a Solidity function call using a low level `call`. A\n plain `call` is an unsafe replacement for a function call: use this\n function instead.\n If `target` reverts with a revert reason or custom error, it is bubbled\n up by this function (like regular Solidity function calls). However, if\n the call reverted with no returned reason, this function reverts with a\n {FailedInnerCall} error.\n Returns the raw returned data. To convert to the expected return value,\n use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n Requirements:\n - `target` must be a contract.\n - calling `target` with `data` must not revert."},"id":2236,"implemented":true,"kind":"function","modifiers":[],"name":"functionCall","nameLocation":"2714:12:13","nodeType":"FunctionDefinition","parameters":{"id":2225,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2222,"mutability":"mutable","name":"target","nameLocation":"2735:6:13","nodeType":"VariableDeclaration","scope":2236,"src":"2727:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2221,"name":"address","nodeType":"ElementaryTypeName","src":"2727:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2224,"mutability":"mutable","name":"data","nameLocation":"2756:4:13","nodeType":"VariableDeclaration","scope":2236,"src":"2743:17:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2223,"name":"bytes","nodeType":"ElementaryTypeName","src":"2743:5:13","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2726:35:13"},"returnParameters":{"id":2228,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2227,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2236,"src":"2780:12:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2226,"name":"bytes","nodeType":"ElementaryTypeName","src":"2780:5:13","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2779:14:13"},"scope":2415,"src":"2705:151:13","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2281,"nodeType":"Block","src":"3293:279:13","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2254,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":2250,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3315:4:13","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$2415","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$2415","typeString":"library Address"}],"id":2249,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3307:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2248,"name":"address","nodeType":"ElementaryTypeName","src":"3307:7:13","typeDescriptions":{}}},"id":2251,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3307:13:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2252,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3321:7:13","memberName":"balance","nodeType":"MemberAccess","src":"3307:21:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":2253,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2243,"src":"3331:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3307:29:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2263,"nodeType":"IfStatement","src":"3303:108:13","trueBody":{"id":2262,"nodeType":"Block","src":"3338:73:13","statements":[{"errorCall":{"arguments":[{"arguments":[{"id":2258,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3394:4:13","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$2415","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$2415","typeString":"library Address"}],"id":2257,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3386:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2256,"name":"address","nodeType":"ElementaryTypeName","src":"3386:7:13","typeDescriptions":{}}},"id":2259,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3386:13:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2255,"name":"AddressInsufficientBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2170,"src":"3359:26:13","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2260,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3359:41:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2261,"nodeType":"RevertStatement","src":"3352:48:13"}]}},{"assignments":[2265,2267],"declarations":[{"constant":false,"id":2265,"mutability":"mutable","name":"success","nameLocation":"3426:7:13","nodeType":"VariableDeclaration","scope":2281,"src":"3421:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2264,"name":"bool","nodeType":"ElementaryTypeName","src":"3421:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2267,"mutability":"mutable","name":"returndata","nameLocation":"3448:10:13","nodeType":"VariableDeclaration","scope":2281,"src":"3435:23:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2266,"name":"bytes","nodeType":"ElementaryTypeName","src":"3435:5:13","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":2274,"initialValue":{"arguments":[{"id":2272,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2241,"src":"3488:4:13","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":2268,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2239,"src":"3462:6:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3469:4:13","memberName":"call","nodeType":"MemberAccess","src":"3462:11:13","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":2271,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":2270,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2243,"src":"3481:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"3462:25:13","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":2273,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3462:31:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"3420:73:13"},{"expression":{"arguments":[{"id":2276,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2239,"src":"3537:6:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2277,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2265,"src":"3545:7:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":2278,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2267,"src":"3554:10:13","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2275,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2374,"src":"3510:26:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory) view returns (bytes memory)"}},"id":2279,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3510:55:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":2247,"id":2280,"nodeType":"Return","src":"3503:62:13"}]},"documentation":{"id":2237,"nodeType":"StructuredDocumentation","src":"2862:313:13","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but also transferring `value` wei to `target`.\n Requirements:\n - the calling contract must have an ETH balance of at least `value`.\n - the called Solidity function must be `payable`."},"id":2282,"implemented":true,"kind":"function","modifiers":[],"name":"functionCallWithValue","nameLocation":"3189:21:13","nodeType":"FunctionDefinition","parameters":{"id":2244,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2239,"mutability":"mutable","name":"target","nameLocation":"3219:6:13","nodeType":"VariableDeclaration","scope":2282,"src":"3211:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2238,"name":"address","nodeType":"ElementaryTypeName","src":"3211:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2241,"mutability":"mutable","name":"data","nameLocation":"3240:4:13","nodeType":"VariableDeclaration","scope":2282,"src":"3227:17:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2240,"name":"bytes","nodeType":"ElementaryTypeName","src":"3227:5:13","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":2243,"mutability":"mutable","name":"value","nameLocation":"3254:5:13","nodeType":"VariableDeclaration","scope":2282,"src":"3246:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2242,"name":"uint256","nodeType":"ElementaryTypeName","src":"3246:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3210:50:13"},"returnParameters":{"id":2247,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2246,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2282,"src":"3279:12:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2245,"name":"bytes","nodeType":"ElementaryTypeName","src":"3279:5:13","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3278:14:13"},"scope":2415,"src":"3180:392:13","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2307,"nodeType":"Block","src":"3811:154:13","statements":[{"assignments":[2293,2295],"declarations":[{"constant":false,"id":2293,"mutability":"mutable","name":"success","nameLocation":"3827:7:13","nodeType":"VariableDeclaration","scope":2307,"src":"3822:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2292,"name":"bool","nodeType":"ElementaryTypeName","src":"3822:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2295,"mutability":"mutable","name":"returndata","nameLocation":"3849:10:13","nodeType":"VariableDeclaration","scope":2307,"src":"3836:23:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2294,"name":"bytes","nodeType":"ElementaryTypeName","src":"3836:5:13","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":2300,"initialValue":{"arguments":[{"id":2298,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2287,"src":"3881:4:13","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":2296,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2285,"src":"3863:6:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2297,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3870:10:13","memberName":"staticcall","nodeType":"MemberAccess","src":"3863:17:13","typeDescriptions":{"typeIdentifier":"t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) view returns (bool,bytes memory)"}},"id":2299,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3863:23:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"3821:65:13"},{"expression":{"arguments":[{"id":2302,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2285,"src":"3930:6:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2303,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2293,"src":"3938:7:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":2304,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2295,"src":"3947:10:13","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2301,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2374,"src":"3903:26:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory) view returns (bytes memory)"}},"id":2305,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3903:55:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":2291,"id":2306,"nodeType":"Return","src":"3896:62:13"}]},"documentation":{"id":2283,"nodeType":"StructuredDocumentation","src":"3578:128:13","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a static call."},"id":2308,"implemented":true,"kind":"function","modifiers":[],"name":"functionStaticCall","nameLocation":"3720:18:13","nodeType":"FunctionDefinition","parameters":{"id":2288,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2285,"mutability":"mutable","name":"target","nameLocation":"3747:6:13","nodeType":"VariableDeclaration","scope":2308,"src":"3739:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2284,"name":"address","nodeType":"ElementaryTypeName","src":"3739:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2287,"mutability":"mutable","name":"data","nameLocation":"3768:4:13","nodeType":"VariableDeclaration","scope":2308,"src":"3755:17:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2286,"name":"bytes","nodeType":"ElementaryTypeName","src":"3755:5:13","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3738:35:13"},"returnParameters":{"id":2291,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2290,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2308,"src":"3797:12:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2289,"name":"bytes","nodeType":"ElementaryTypeName","src":"3797:5:13","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3796:14:13"},"scope":2415,"src":"3711:254:13","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":2333,"nodeType":"Block","src":"4203:156:13","statements":[{"assignments":[2319,2321],"declarations":[{"constant":false,"id":2319,"mutability":"mutable","name":"success","nameLocation":"4219:7:13","nodeType":"VariableDeclaration","scope":2333,"src":"4214:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2318,"name":"bool","nodeType":"ElementaryTypeName","src":"4214:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2321,"mutability":"mutable","name":"returndata","nameLocation":"4241:10:13","nodeType":"VariableDeclaration","scope":2333,"src":"4228:23:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2320,"name":"bytes","nodeType":"ElementaryTypeName","src":"4228:5:13","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":2326,"initialValue":{"arguments":[{"id":2324,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2313,"src":"4275:4:13","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":2322,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2311,"src":"4255:6:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4262:12:13","memberName":"delegatecall","nodeType":"MemberAccess","src":"4255:19:13","typeDescriptions":{"typeIdentifier":"t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) returns (bool,bytes memory)"}},"id":2325,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4255:25:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"4213:67:13"},{"expression":{"arguments":[{"id":2328,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2311,"src":"4324:6:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2329,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2319,"src":"4332:7:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":2330,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2321,"src":"4341:10:13","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2327,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2374,"src":"4297:26:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory) view returns (bytes memory)"}},"id":2331,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4297:55:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":2317,"id":2332,"nodeType":"Return","src":"4290:62:13"}]},"documentation":{"id":2309,"nodeType":"StructuredDocumentation","src":"3971:130:13","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a delegate call."},"id":2334,"implemented":true,"kind":"function","modifiers":[],"name":"functionDelegateCall","nameLocation":"4115:20:13","nodeType":"FunctionDefinition","parameters":{"id":2314,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2311,"mutability":"mutable","name":"target","nameLocation":"4144:6:13","nodeType":"VariableDeclaration","scope":2334,"src":"4136:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2310,"name":"address","nodeType":"ElementaryTypeName","src":"4136:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2313,"mutability":"mutable","name":"data","nameLocation":"4165:4:13","nodeType":"VariableDeclaration","scope":2334,"src":"4152:17:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2312,"name":"bytes","nodeType":"ElementaryTypeName","src":"4152:5:13","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4135:35:13"},"returnParameters":{"id":2317,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2316,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2334,"src":"4189:12:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2315,"name":"bytes","nodeType":"ElementaryTypeName","src":"4189:5:13","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4188:14:13"},"scope":2415,"src":"4106:253:13","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2373,"nodeType":"Block","src":"4783:424:13","statements":[{"condition":{"id":2347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4797:8:13","subExpression":{"id":2346,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2339,"src":"4798:7:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2371,"nodeType":"Block","src":"4857:344:13","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2362,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2356,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2353,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2341,"src":"5045:10:13","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2354,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5056:6:13","memberName":"length","nodeType":"MemberAccess","src":"5045:17:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2355,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5066:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5045:22:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2361,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":2357,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2337,"src":"5071:6:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2358,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5078:4:13","memberName":"code","nodeType":"MemberAccess","src":"5071:11:13","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2359,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5083:6:13","memberName":"length","nodeType":"MemberAccess","src":"5071:18:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2360,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5093:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5071:23:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5045:49:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2368,"nodeType":"IfStatement","src":"5041:119:13","trueBody":{"id":2367,"nodeType":"Block","src":"5096:64:13","statements":[{"errorCall":{"arguments":[{"id":2364,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2337,"src":"5138:6:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2363,"name":"AddressEmptyCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2175,"src":"5121:16:13","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2365,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5121:24:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2366,"nodeType":"RevertStatement","src":"5114:31:13"}]}},{"expression":{"id":2369,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2341,"src":"5180:10:13","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":2345,"id":2370,"nodeType":"Return","src":"5173:17:13"}]},"id":2372,"nodeType":"IfStatement","src":"4793:408:13","trueBody":{"id":2352,"nodeType":"Block","src":"4807:44:13","statements":[{"expression":{"arguments":[{"id":2349,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2341,"src":"4829:10:13","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2348,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2414,"src":"4821:7:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory) pure"}},"id":2350,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4821:19:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2351,"nodeType":"ExpressionStatement","src":"4821:19:13"}]}}]},"documentation":{"id":2335,"nodeType":"StructuredDocumentation","src":"4365:255:13","text":" @dev Tool to verify that a low level call to smart-contract was successful, and reverts if the target\n was not a contract or bubbling up the revert reason (falling back to {FailedInnerCall}) in case of an\n unsuccessful call."},"id":2374,"implemented":true,"kind":"function","modifiers":[],"name":"verifyCallResultFromTarget","nameLocation":"4634:26:13","nodeType":"FunctionDefinition","parameters":{"id":2342,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2337,"mutability":"mutable","name":"target","nameLocation":"4678:6:13","nodeType":"VariableDeclaration","scope":2374,"src":"4670:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2336,"name":"address","nodeType":"ElementaryTypeName","src":"4670:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2339,"mutability":"mutable","name":"success","nameLocation":"4699:7:13","nodeType":"VariableDeclaration","scope":2374,"src":"4694:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2338,"name":"bool","nodeType":"ElementaryTypeName","src":"4694:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2341,"mutability":"mutable","name":"returndata","nameLocation":"4729:10:13","nodeType":"VariableDeclaration","scope":2374,"src":"4716:23:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2340,"name":"bytes","nodeType":"ElementaryTypeName","src":"4716:5:13","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4660:85:13"},"returnParameters":{"id":2345,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2344,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2374,"src":"4769:12:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2343,"name":"bytes","nodeType":"ElementaryTypeName","src":"4769:5:13","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4768:14:13"},"scope":2415,"src":"4625:582:13","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":2395,"nodeType":"Block","src":"5509:122:13","statements":[{"condition":{"id":2385,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"5523:8:13","subExpression":{"id":2384,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2377,"src":"5524:7:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2393,"nodeType":"Block","src":"5583:42:13","statements":[{"expression":{"id":2391,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2379,"src":"5604:10:13","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":2383,"id":2392,"nodeType":"Return","src":"5597:17:13"}]},"id":2394,"nodeType":"IfStatement","src":"5519:106:13","trueBody":{"id":2390,"nodeType":"Block","src":"5533:44:13","statements":[{"expression":{"arguments":[{"id":2387,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2379,"src":"5555:10:13","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2386,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2414,"src":"5547:7:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory) pure"}},"id":2388,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5547:19:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2389,"nodeType":"ExpressionStatement","src":"5547:19:13"}]}}]},"documentation":{"id":2375,"nodeType":"StructuredDocumentation","src":"5213:189:13","text":" @dev Tool to verify that a low level call was successful, and reverts if it wasn't, either by bubbling the\n revert reason or with a default {FailedInnerCall} error."},"id":2396,"implemented":true,"kind":"function","modifiers":[],"name":"verifyCallResult","nameLocation":"5416:16:13","nodeType":"FunctionDefinition","parameters":{"id":2380,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2377,"mutability":"mutable","name":"success","nameLocation":"5438:7:13","nodeType":"VariableDeclaration","scope":2396,"src":"5433:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2376,"name":"bool","nodeType":"ElementaryTypeName","src":"5433:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2379,"mutability":"mutable","name":"returndata","nameLocation":"5460:10:13","nodeType":"VariableDeclaration","scope":2396,"src":"5447:23:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2378,"name":"bytes","nodeType":"ElementaryTypeName","src":"5447:5:13","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5432:39:13"},"returnParameters":{"id":2383,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2382,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2396,"src":"5495:12:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2381,"name":"bytes","nodeType":"ElementaryTypeName","src":"5495:5:13","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5494:14:13"},"scope":2415,"src":"5407:224:13","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2413,"nodeType":"Block","src":"5798:461:13","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2405,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2402,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2399,"src":"5874:10:13","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2403,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5885:6:13","memberName":"length","nodeType":"MemberAccess","src":"5874:17:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2404,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5894:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5874:21:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2411,"nodeType":"Block","src":"6204:49:13","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2408,"name":"FailedInnerCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2178,"src":"6225:15:13","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":2409,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6225:17:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2410,"nodeType":"RevertStatement","src":"6218:24:13"}]},"id":2412,"nodeType":"IfStatement","src":"5870:383:13","trueBody":{"id":2407,"nodeType":"Block","src":"5897:301:13","statements":[{"AST":{"nativeSrc":"6055:133:13","nodeType":"YulBlock","src":"6055:133:13","statements":[{"nativeSrc":"6073:40:13","nodeType":"YulVariableDeclaration","src":"6073:40:13","value":{"arguments":[{"name":"returndata","nativeSrc":"6102:10:13","nodeType":"YulIdentifier","src":"6102:10:13"}],"functionName":{"name":"mload","nativeSrc":"6096:5:13","nodeType":"YulIdentifier","src":"6096:5:13"},"nativeSrc":"6096:17:13","nodeType":"YulFunctionCall","src":"6096:17:13"},"variables":[{"name":"returndata_size","nativeSrc":"6077:15:13","nodeType":"YulTypedName","src":"6077:15:13","type":""}]},{"expression":{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"6141:2:13","nodeType":"YulLiteral","src":"6141:2:13","type":"","value":"32"},{"name":"returndata","nativeSrc":"6145:10:13","nodeType":"YulIdentifier","src":"6145:10:13"}],"functionName":{"name":"add","nativeSrc":"6137:3:13","nodeType":"YulIdentifier","src":"6137:3:13"},"nativeSrc":"6137:19:13","nodeType":"YulFunctionCall","src":"6137:19:13"},{"name":"returndata_size","nativeSrc":"6158:15:13","nodeType":"YulIdentifier","src":"6158:15:13"}],"functionName":{"name":"revert","nativeSrc":"6130:6:13","nodeType":"YulIdentifier","src":"6130:6:13"},"nativeSrc":"6130:44:13","nodeType":"YulFunctionCall","src":"6130:44:13"},"nativeSrc":"6130:44:13","nodeType":"YulExpressionStatement","src":"6130:44:13"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"cancun","externalReferences":[{"declaration":2399,"isOffset":false,"isSlot":false,"src":"6102:10:13","valueSize":1},{"declaration":2399,"isOffset":false,"isSlot":false,"src":"6145:10:13","valueSize":1}],"id":2406,"nodeType":"InlineAssembly","src":"6046:142:13"}]}}]},"documentation":{"id":2397,"nodeType":"StructuredDocumentation","src":"5637:101:13","text":" @dev Reverts with returndata if present. Otherwise reverts with {FailedInnerCall}."},"id":2414,"implemented":true,"kind":"function","modifiers":[],"name":"_revert","nameLocation":"5752:7:13","nodeType":"FunctionDefinition","parameters":{"id":2400,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2399,"mutability":"mutable","name":"returndata","nameLocation":"5773:10:13","nodeType":"VariableDeclaration","scope":2414,"src":"5760:23:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2398,"name":"bytes","nodeType":"ElementaryTypeName","src":"5760:5:13","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5759:25:13"},"returnParameters":{"id":2401,"nodeType":"ParameterList","parameters":[],"src":"5798:0:13"},"scope":2415,"src":"5743:516:13","stateMutability":"pure","virtual":false,"visibility":"private"}],"scope":2416,"src":"195:6066:13","usedErrors":[2170,2175,2178],"usedEvents":[]}],"src":"101:6161:13"},"id":13},"@openzeppelin/contracts/utils/StorageSlot.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/StorageSlot.sol","exportedSymbols":{"StorageSlot":[2525]},"id":2526,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2417,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"193:24:14"},{"abstract":false,"baseContracts":[],"canonicalName":"StorageSlot","contractDependencies":[],"contractKind":"library","documentation":{"id":2418,"nodeType":"StructuredDocumentation","src":"219:1025:14","text":" @dev Library for reading and writing primitive types to specific storage slots.\n Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\n This library helps with reading and writing to such slots without the need for inline assembly.\n The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\n Example usage to set ERC1967 implementation slot:\n ```solidity\n contract ERC1967 {\n     bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n     function _getImplementation() internal view returns (address) {\n         return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\n     }\n     function _setImplementation(address newImplementation) internal {\n         require(newImplementation.code.length > 0);\n         StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\n     }\n }\n ```"},"fullyImplemented":true,"id":2525,"linearizedBaseContracts":[2525],"name":"StorageSlot","nameLocation":"1253:11:14","nodeType":"ContractDefinition","nodes":[{"canonicalName":"StorageSlot.AddressSlot","id":2421,"members":[{"constant":false,"id":2420,"mutability":"mutable","name":"value","nameLocation":"1308:5:14","nodeType":"VariableDeclaration","scope":2421,"src":"1300:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2419,"name":"address","nodeType":"ElementaryTypeName","src":"1300:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"name":"AddressSlot","nameLocation":"1278:11:14","nodeType":"StructDefinition","scope":2525,"src":"1271:49:14","visibility":"public"},{"canonicalName":"StorageSlot.BooleanSlot","id":2424,"members":[{"constant":false,"id":2423,"mutability":"mutable","name":"value","nameLocation":"1360:5:14","nodeType":"VariableDeclaration","scope":2424,"src":"1355:10:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2422,"name":"bool","nodeType":"ElementaryTypeName","src":"1355:4:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"BooleanSlot","nameLocation":"1333:11:14","nodeType":"StructDefinition","scope":2525,"src":"1326:46:14","visibility":"public"},{"canonicalName":"StorageSlot.Bytes32Slot","id":2427,"members":[{"constant":false,"id":2426,"mutability":"mutable","name":"value","nameLocation":"1415:5:14","nodeType":"VariableDeclaration","scope":2427,"src":"1407:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2425,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1407:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"name":"Bytes32Slot","nameLocation":"1385:11:14","nodeType":"StructDefinition","scope":2525,"src":"1378:49:14","visibility":"public"},{"canonicalName":"StorageSlot.Uint256Slot","id":2430,"members":[{"constant":false,"id":2429,"mutability":"mutable","name":"value","nameLocation":"1470:5:14","nodeType":"VariableDeclaration","scope":2430,"src":"1462:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2428,"name":"uint256","nodeType":"ElementaryTypeName","src":"1462:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"Uint256Slot","nameLocation":"1440:11:14","nodeType":"StructDefinition","scope":2525,"src":"1433:49:14","visibility":"public"},{"canonicalName":"StorageSlot.StringSlot","id":2433,"members":[{"constant":false,"id":2432,"mutability":"mutable","name":"value","nameLocation":"1523:5:14","nodeType":"VariableDeclaration","scope":2433,"src":"1516:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":2431,"name":"string","nodeType":"ElementaryTypeName","src":"1516:6:14","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"name":"StringSlot","nameLocation":"1495:10:14","nodeType":"StructDefinition","scope":2525,"src":"1488:47:14","visibility":"public"},{"canonicalName":"StorageSlot.BytesSlot","id":2436,"members":[{"constant":false,"id":2435,"mutability":"mutable","name":"value","nameLocation":"1574:5:14","nodeType":"VariableDeclaration","scope":2436,"src":"1568:11:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":2434,"name":"bytes","nodeType":"ElementaryTypeName","src":"1568:5:14","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"name":"BytesSlot","nameLocation":"1548:9:14","nodeType":"StructDefinition","scope":2525,"src":"1541:45:14","visibility":"public"},{"body":{"id":2446,"nodeType":"Block","src":"1768:106:14","statements":[{"AST":{"nativeSrc":"1830:38:14","nodeType":"YulBlock","src":"1830:38:14","statements":[{"nativeSrc":"1844:14:14","nodeType":"YulAssignment","src":"1844:14:14","value":{"name":"slot","nativeSrc":"1854:4:14","nodeType":"YulIdentifier","src":"1854:4:14"},"variableNames":[{"name":"r.slot","nativeSrc":"1844:6:14","nodeType":"YulIdentifier","src":"1844:6:14"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"cancun","externalReferences":[{"declaration":2443,"isOffset":false,"isSlot":true,"src":"1844:6:14","suffix":"slot","valueSize":1},{"declaration":2439,"isOffset":false,"isSlot":false,"src":"1854:4:14","valueSize":1}],"id":2445,"nodeType":"InlineAssembly","src":"1821:47:14"}]},"documentation":{"id":2437,"nodeType":"StructuredDocumentation","src":"1592:87:14","text":" @dev Returns an `AddressSlot` with member `value` located at `slot`."},"id":2447,"implemented":true,"kind":"function","modifiers":[],"name":"getAddressSlot","nameLocation":"1693:14:14","nodeType":"FunctionDefinition","parameters":{"id":2440,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2439,"mutability":"mutable","name":"slot","nameLocation":"1716:4:14","nodeType":"VariableDeclaration","scope":2447,"src":"1708:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2438,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1708:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1707:14:14"},"returnParameters":{"id":2444,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2443,"mutability":"mutable","name":"r","nameLocation":"1765:1:14","nodeType":"VariableDeclaration","scope":2447,"src":"1745:21:14","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$2421_storage_ptr","typeString":"struct StorageSlot.AddressSlot"},"typeName":{"id":2442,"nodeType":"UserDefinedTypeName","pathNode":{"id":2441,"name":"AddressSlot","nameLocations":["1745:11:14"],"nodeType":"IdentifierPath","referencedDeclaration":2421,"src":"1745:11:14"},"referencedDeclaration":2421,"src":"1745:11:14","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$2421_storage_ptr","typeString":"struct StorageSlot.AddressSlot"}},"visibility":"internal"}],"src":"1744:23:14"},"scope":2525,"src":"1684:190:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2457,"nodeType":"Block","src":"2056:106:14","statements":[{"AST":{"nativeSrc":"2118:38:14","nodeType":"YulBlock","src":"2118:38:14","statements":[{"nativeSrc":"2132:14:14","nodeType":"YulAssignment","src":"2132:14:14","value":{"name":"slot","nativeSrc":"2142:4:14","nodeType":"YulIdentifier","src":"2142:4:14"},"variableNames":[{"name":"r.slot","nativeSrc":"2132:6:14","nodeType":"YulIdentifier","src":"2132:6:14"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"cancun","externalReferences":[{"declaration":2454,"isOffset":false,"isSlot":true,"src":"2132:6:14","suffix":"slot","valueSize":1},{"declaration":2450,"isOffset":false,"isSlot":false,"src":"2142:4:14","valueSize":1}],"id":2456,"nodeType":"InlineAssembly","src":"2109:47:14"}]},"documentation":{"id":2448,"nodeType":"StructuredDocumentation","src":"1880:87:14","text":" @dev Returns an `BooleanSlot` with member `value` located at `slot`."},"id":2458,"implemented":true,"kind":"function","modifiers":[],"name":"getBooleanSlot","nameLocation":"1981:14:14","nodeType":"FunctionDefinition","parameters":{"id":2451,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2450,"mutability":"mutable","name":"slot","nameLocation":"2004:4:14","nodeType":"VariableDeclaration","scope":2458,"src":"1996:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2449,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1996:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1995:14:14"},"returnParameters":{"id":2455,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2454,"mutability":"mutable","name":"r","nameLocation":"2053:1:14","nodeType":"VariableDeclaration","scope":2458,"src":"2033:21:14","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_BooleanSlot_$2424_storage_ptr","typeString":"struct StorageSlot.BooleanSlot"},"typeName":{"id":2453,"nodeType":"UserDefinedTypeName","pathNode":{"id":2452,"name":"BooleanSlot","nameLocations":["2033:11:14"],"nodeType":"IdentifierPath","referencedDeclaration":2424,"src":"2033:11:14"},"referencedDeclaration":2424,"src":"2033:11:14","typeDescriptions":{"typeIdentifier":"t_struct$_BooleanSlot_$2424_storage_ptr","typeString":"struct StorageSlot.BooleanSlot"}},"visibility":"internal"}],"src":"2032:23:14"},"scope":2525,"src":"1972:190:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2468,"nodeType":"Block","src":"2344:106:14","statements":[{"AST":{"nativeSrc":"2406:38:14","nodeType":"YulBlock","src":"2406:38:14","statements":[{"nativeSrc":"2420:14:14","nodeType":"YulAssignment","src":"2420:14:14","value":{"name":"slot","nativeSrc":"2430:4:14","nodeType":"YulIdentifier","src":"2430:4:14"},"variableNames":[{"name":"r.slot","nativeSrc":"2420:6:14","nodeType":"YulIdentifier","src":"2420:6:14"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"cancun","externalReferences":[{"declaration":2465,"isOffset":false,"isSlot":true,"src":"2420:6:14","suffix":"slot","valueSize":1},{"declaration":2461,"isOffset":false,"isSlot":false,"src":"2430:4:14","valueSize":1}],"id":2467,"nodeType":"InlineAssembly","src":"2397:47:14"}]},"documentation":{"id":2459,"nodeType":"StructuredDocumentation","src":"2168:87:14","text":" @dev Returns an `Bytes32Slot` with member `value` located at `slot`."},"id":2469,"implemented":true,"kind":"function","modifiers":[],"name":"getBytes32Slot","nameLocation":"2269:14:14","nodeType":"FunctionDefinition","parameters":{"id":2462,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2461,"mutability":"mutable","name":"slot","nameLocation":"2292:4:14","nodeType":"VariableDeclaration","scope":2469,"src":"2284:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2460,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2284:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2283:14:14"},"returnParameters":{"id":2466,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2465,"mutability":"mutable","name":"r","nameLocation":"2341:1:14","nodeType":"VariableDeclaration","scope":2469,"src":"2321:21:14","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Slot_$2427_storage_ptr","typeString":"struct StorageSlot.Bytes32Slot"},"typeName":{"id":2464,"nodeType":"UserDefinedTypeName","pathNode":{"id":2463,"name":"Bytes32Slot","nameLocations":["2321:11:14"],"nodeType":"IdentifierPath","referencedDeclaration":2427,"src":"2321:11:14"},"referencedDeclaration":2427,"src":"2321:11:14","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Slot_$2427_storage_ptr","typeString":"struct StorageSlot.Bytes32Slot"}},"visibility":"internal"}],"src":"2320:23:14"},"scope":2525,"src":"2260:190:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2479,"nodeType":"Block","src":"2632:106:14","statements":[{"AST":{"nativeSrc":"2694:38:14","nodeType":"YulBlock","src":"2694:38:14","statements":[{"nativeSrc":"2708:14:14","nodeType":"YulAssignment","src":"2708:14:14","value":{"name":"slot","nativeSrc":"2718:4:14","nodeType":"YulIdentifier","src":"2718:4:14"},"variableNames":[{"name":"r.slot","nativeSrc":"2708:6:14","nodeType":"YulIdentifier","src":"2708:6:14"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"cancun","externalReferences":[{"declaration":2476,"isOffset":false,"isSlot":true,"src":"2708:6:14","suffix":"slot","valueSize":1},{"declaration":2472,"isOffset":false,"isSlot":false,"src":"2718:4:14","valueSize":1}],"id":2478,"nodeType":"InlineAssembly","src":"2685:47:14"}]},"documentation":{"id":2470,"nodeType":"StructuredDocumentation","src":"2456:87:14","text":" @dev Returns an `Uint256Slot` with member `value` located at `slot`."},"id":2480,"implemented":true,"kind":"function","modifiers":[],"name":"getUint256Slot","nameLocation":"2557:14:14","nodeType":"FunctionDefinition","parameters":{"id":2473,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2472,"mutability":"mutable","name":"slot","nameLocation":"2580:4:14","nodeType":"VariableDeclaration","scope":2480,"src":"2572:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2471,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2572:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2571:14:14"},"returnParameters":{"id":2477,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2476,"mutability":"mutable","name":"r","nameLocation":"2629:1:14","nodeType":"VariableDeclaration","scope":2480,"src":"2609:21:14","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Uint256Slot_$2430_storage_ptr","typeString":"struct StorageSlot.Uint256Slot"},"typeName":{"id":2475,"nodeType":"UserDefinedTypeName","pathNode":{"id":2474,"name":"Uint256Slot","nameLocations":["2609:11:14"],"nodeType":"IdentifierPath","referencedDeclaration":2430,"src":"2609:11:14"},"referencedDeclaration":2430,"src":"2609:11:14","typeDescriptions":{"typeIdentifier":"t_struct$_Uint256Slot_$2430_storage_ptr","typeString":"struct StorageSlot.Uint256Slot"}},"visibility":"internal"}],"src":"2608:23:14"},"scope":2525,"src":"2548:190:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2490,"nodeType":"Block","src":"2917:106:14","statements":[{"AST":{"nativeSrc":"2979:38:14","nodeType":"YulBlock","src":"2979:38:14","statements":[{"nativeSrc":"2993:14:14","nodeType":"YulAssignment","src":"2993:14:14","value":{"name":"slot","nativeSrc":"3003:4:14","nodeType":"YulIdentifier","src":"3003:4:14"},"variableNames":[{"name":"r.slot","nativeSrc":"2993:6:14","nodeType":"YulIdentifier","src":"2993:6:14"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"cancun","externalReferences":[{"declaration":2487,"isOffset":false,"isSlot":true,"src":"2993:6:14","suffix":"slot","valueSize":1},{"declaration":2483,"isOffset":false,"isSlot":false,"src":"3003:4:14","valueSize":1}],"id":2489,"nodeType":"InlineAssembly","src":"2970:47:14"}]},"documentation":{"id":2481,"nodeType":"StructuredDocumentation","src":"2744:86:14","text":" @dev Returns an `StringSlot` with member `value` located at `slot`."},"id":2491,"implemented":true,"kind":"function","modifiers":[],"name":"getStringSlot","nameLocation":"2844:13:14","nodeType":"FunctionDefinition","parameters":{"id":2484,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2483,"mutability":"mutable","name":"slot","nameLocation":"2866:4:14","nodeType":"VariableDeclaration","scope":2491,"src":"2858:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2482,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2858:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2857:14:14"},"returnParameters":{"id":2488,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2487,"mutability":"mutable","name":"r","nameLocation":"2914:1:14","nodeType":"VariableDeclaration","scope":2491,"src":"2895:20:14","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StringSlot_$2433_storage_ptr","typeString":"struct StorageSlot.StringSlot"},"typeName":{"id":2486,"nodeType":"UserDefinedTypeName","pathNode":{"id":2485,"name":"StringSlot","nameLocations":["2895:10:14"],"nodeType":"IdentifierPath","referencedDeclaration":2433,"src":"2895:10:14"},"referencedDeclaration":2433,"src":"2895:10:14","typeDescriptions":{"typeIdentifier":"t_struct$_StringSlot_$2433_storage_ptr","typeString":"struct StorageSlot.StringSlot"}},"visibility":"internal"}],"src":"2894:22:14"},"scope":2525,"src":"2835:188:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2501,"nodeType":"Block","src":"3225:112:14","statements":[{"AST":{"nativeSrc":"3287:44:14","nodeType":"YulBlock","src":"3287:44:14","statements":[{"nativeSrc":"3301:20:14","nodeType":"YulAssignment","src":"3301:20:14","value":{"name":"store.slot","nativeSrc":"3311:10:14","nodeType":"YulIdentifier","src":"3311:10:14"},"variableNames":[{"name":"r.slot","nativeSrc":"3301:6:14","nodeType":"YulIdentifier","src":"3301:6:14"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"cancun","externalReferences":[{"declaration":2498,"isOffset":false,"isSlot":true,"src":"3301:6:14","suffix":"slot","valueSize":1},{"declaration":2494,"isOffset":false,"isSlot":true,"src":"3311:10:14","suffix":"slot","valueSize":1}],"id":2500,"nodeType":"InlineAssembly","src":"3278:53:14"}]},"documentation":{"id":2492,"nodeType":"StructuredDocumentation","src":"3029:101:14","text":" @dev Returns an `StringSlot` representation of the string storage pointer `store`."},"id":2502,"implemented":true,"kind":"function","modifiers":[],"name":"getStringSlot","nameLocation":"3144:13:14","nodeType":"FunctionDefinition","parameters":{"id":2495,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2494,"mutability":"mutable","name":"store","nameLocation":"3173:5:14","nodeType":"VariableDeclaration","scope":2502,"src":"3158:20:14","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":2493,"name":"string","nodeType":"ElementaryTypeName","src":"3158:6:14","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3157:22:14"},"returnParameters":{"id":2499,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2498,"mutability":"mutable","name":"r","nameLocation":"3222:1:14","nodeType":"VariableDeclaration","scope":2502,"src":"3203:20:14","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StringSlot_$2433_storage_ptr","typeString":"struct StorageSlot.StringSlot"},"typeName":{"id":2497,"nodeType":"UserDefinedTypeName","pathNode":{"id":2496,"name":"StringSlot","nameLocations":["3203:10:14"],"nodeType":"IdentifierPath","referencedDeclaration":2433,"src":"3203:10:14"},"referencedDeclaration":2433,"src":"3203:10:14","typeDescriptions":{"typeIdentifier":"t_struct$_StringSlot_$2433_storage_ptr","typeString":"struct StorageSlot.StringSlot"}},"visibility":"internal"}],"src":"3202:22:14"},"scope":2525,"src":"3135:202:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2512,"nodeType":"Block","src":"3513:106:14","statements":[{"AST":{"nativeSrc":"3575:38:14","nodeType":"YulBlock","src":"3575:38:14","statements":[{"nativeSrc":"3589:14:14","nodeType":"YulAssignment","src":"3589:14:14","value":{"name":"slot","nativeSrc":"3599:4:14","nodeType":"YulIdentifier","src":"3599:4:14"},"variableNames":[{"name":"r.slot","nativeSrc":"3589:6:14","nodeType":"YulIdentifier","src":"3589:6:14"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"cancun","externalReferences":[{"declaration":2509,"isOffset":false,"isSlot":true,"src":"3589:6:14","suffix":"slot","valueSize":1},{"declaration":2505,"isOffset":false,"isSlot":false,"src":"3599:4:14","valueSize":1}],"id":2511,"nodeType":"InlineAssembly","src":"3566:47:14"}]},"documentation":{"id":2503,"nodeType":"StructuredDocumentation","src":"3343:85:14","text":" @dev Returns an `BytesSlot` with member `value` located at `slot`."},"id":2513,"implemented":true,"kind":"function","modifiers":[],"name":"getBytesSlot","nameLocation":"3442:12:14","nodeType":"FunctionDefinition","parameters":{"id":2506,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2505,"mutability":"mutable","name":"slot","nameLocation":"3463:4:14","nodeType":"VariableDeclaration","scope":2513,"src":"3455:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2504,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3455:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3454:14:14"},"returnParameters":{"id":2510,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2509,"mutability":"mutable","name":"r","nameLocation":"3510:1:14","nodeType":"VariableDeclaration","scope":2513,"src":"3492:19:14","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$2436_storage_ptr","typeString":"struct StorageSlot.BytesSlot"},"typeName":{"id":2508,"nodeType":"UserDefinedTypeName","pathNode":{"id":2507,"name":"BytesSlot","nameLocations":["3492:9:14"],"nodeType":"IdentifierPath","referencedDeclaration":2436,"src":"3492:9:14"},"referencedDeclaration":2436,"src":"3492:9:14","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$2436_storage_ptr","typeString":"struct StorageSlot.BytesSlot"}},"visibility":"internal"}],"src":"3491:21:14"},"scope":2525,"src":"3433:186:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2523,"nodeType":"Block","src":"3816:112:14","statements":[{"AST":{"nativeSrc":"3878:44:14","nodeType":"YulBlock","src":"3878:44:14","statements":[{"nativeSrc":"3892:20:14","nodeType":"YulAssignment","src":"3892:20:14","value":{"name":"store.slot","nativeSrc":"3902:10:14","nodeType":"YulIdentifier","src":"3902:10:14"},"variableNames":[{"name":"r.slot","nativeSrc":"3892:6:14","nodeType":"YulIdentifier","src":"3892:6:14"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"cancun","externalReferences":[{"declaration":2520,"isOffset":false,"isSlot":true,"src":"3892:6:14","suffix":"slot","valueSize":1},{"declaration":2516,"isOffset":false,"isSlot":true,"src":"3902:10:14","suffix":"slot","valueSize":1}],"id":2522,"nodeType":"InlineAssembly","src":"3869:53:14"}]},"documentation":{"id":2514,"nodeType":"StructuredDocumentation","src":"3625:99:14","text":" @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`."},"id":2524,"implemented":true,"kind":"function","modifiers":[],"name":"getBytesSlot","nameLocation":"3738:12:14","nodeType":"FunctionDefinition","parameters":{"id":2517,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2516,"mutability":"mutable","name":"store","nameLocation":"3765:5:14","nodeType":"VariableDeclaration","scope":2524,"src":"3751:19:14","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":2515,"name":"bytes","nodeType":"ElementaryTypeName","src":"3751:5:14","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3750:21:14"},"returnParameters":{"id":2521,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2520,"mutability":"mutable","name":"r","nameLocation":"3813:1:14","nodeType":"VariableDeclaration","scope":2524,"src":"3795:19:14","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$2436_storage_ptr","typeString":"struct StorageSlot.BytesSlot"},"typeName":{"id":2519,"nodeType":"UserDefinedTypeName","pathNode":{"id":2518,"name":"BytesSlot","nameLocations":["3795:9:14"],"nodeType":"IdentifierPath","referencedDeclaration":2436,"src":"3795:9:14"},"referencedDeclaration":2436,"src":"3795:9:14","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$2436_storage_ptr","typeString":"struct StorageSlot.BytesSlot"}},"visibility":"internal"}],"src":"3794:21:14"},"scope":2525,"src":"3729:199:14","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":2526,"src":"1245:2685:14","usedErrors":[],"usedEvents":[]}],"src":"193:3738:14"},"id":14},"contracts/interfaces/IBaluniV1Oracle.sol":{"ast":{"absolutePath":"contracts/interfaces/IBaluniV1Oracle.sol","exportedSymbols":{"IBaluniV1Oracle":[2550]},"id":2551,"license":"GNU AGPLv3","nodeType":"SourceUnit","nodes":[{"id":2527,"literals":["solidity","0.8",".25"],"nodeType":"PragmaDirective","src":"40:23:15"},{"abstract":false,"baseContracts":[],"canonicalName":"IBaluniV1Oracle","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":2550,"linearizedBaseContracts":[2550],"name":"IBaluniV1Oracle","nameLocation":"77:15:15","nodeType":"ContractDefinition","nodes":[{"functionSelector":"248391ff","id":2538,"implemented":false,"kind":"function","modifiers":[],"name":"convert","nameLocation":"109:7:15","nodeType":"FunctionDefinition","parameters":{"id":2534,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2529,"mutability":"mutable","name":"fromToken","nameLocation":"125:9:15","nodeType":"VariableDeclaration","scope":2538,"src":"117:17:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2528,"name":"address","nodeType":"ElementaryTypeName","src":"117:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2531,"mutability":"mutable","name":"toToken","nameLocation":"144:7:15","nodeType":"VariableDeclaration","scope":2538,"src":"136:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2530,"name":"address","nodeType":"ElementaryTypeName","src":"136:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2533,"mutability":"mutable","name":"amount","nameLocation":"161:6:15","nodeType":"VariableDeclaration","scope":2538,"src":"153:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2532,"name":"uint256","nodeType":"ElementaryTypeName","src":"153:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"116:52:15"},"returnParameters":{"id":2537,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2536,"mutability":"mutable","name":"valuation","nameLocation":"200:9:15","nodeType":"VariableDeclaration","scope":2538,"src":"192:17:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2535,"name":"uint256","nodeType":"ElementaryTypeName","src":"192:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"191:19:15"},"scope":2550,"src":"100:111:15","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"b27b5e75","id":2549,"implemented":false,"kind":"function","modifiers":[],"name":"convertScaled","nameLocation":"228:13:15","nodeType":"FunctionDefinition","parameters":{"id":2545,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2540,"mutability":"mutable","name":"fromToken","nameLocation":"260:9:15","nodeType":"VariableDeclaration","scope":2549,"src":"252:17:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2539,"name":"address","nodeType":"ElementaryTypeName","src":"252:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2542,"mutability":"mutable","name":"toToken","nameLocation":"288:7:15","nodeType":"VariableDeclaration","scope":2549,"src":"280:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2541,"name":"address","nodeType":"ElementaryTypeName","src":"280:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2544,"mutability":"mutable","name":"amount","nameLocation":"314:6:15","nodeType":"VariableDeclaration","scope":2549,"src":"306:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2543,"name":"uint256","nodeType":"ElementaryTypeName","src":"306:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"241:86:15"},"returnParameters":{"id":2548,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2547,"mutability":"mutable","name":"valuation","nameLocation":"359:9:15","nodeType":"VariableDeclaration","scope":2549,"src":"351:17:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2546,"name":"uint256","nodeType":"ElementaryTypeName","src":"351:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"350:19:15"},"scope":2550,"src":"219:151:15","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":2551,"src":"67:306:15","usedErrors":[],"usedEvents":[]}],"src":"40:335:15"},"id":15},"contracts/interfaces/IBaluniV1Registry.sol":{"ast":{"absolutePath":"contracts/interfaces/IBaluniV1Registry.sol","exportedSymbols":{"IBaluniV1Registry":[2784]},"id":2785,"license":"GNU AGPLv3","nodeType":"SourceUnit","nodes":[{"id":2552,"literals":["solidity","0.8",".25"],"nodeType":"PragmaDirective","src":"40:23:16"},{"abstract":false,"baseContracts":[],"canonicalName":"IBaluniV1Registry","contractDependencies":[],"contractKind":"interface","documentation":{"id":2553,"nodeType":"StructuredDocumentation","src":"67:91:16","text":" @title IBaluniV1Registry\n @dev Interface for the BaluniV1Registry contract."},"fullyImplemented":false,"id":2784,"linearizedBaseContracts":[2784],"name":"IBaluniV1Registry","nameLocation":"170:17:16","nodeType":"ContractDefinition","nodes":[{"functionSelector":"e04b677f","id":2558,"implemented":false,"kind":"function","modifiers":[],"name":"setUniswapFactory","nameLocation":"204:17:16","nodeType":"FunctionDefinition","parameters":{"id":2556,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2555,"mutability":"mutable","name":"_uniswapFactory","nameLocation":"230:15:16","nodeType":"VariableDeclaration","scope":2558,"src":"222:23:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2554,"name":"address","nodeType":"ElementaryTypeName","src":"222:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"221:25:16"},"returnParameters":{"id":2557,"nodeType":"ParameterList","parameters":[],"src":"255:0:16"},"scope":2784,"src":"195:61:16","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"bea9849e","id":2563,"implemented":false,"kind":"function","modifiers":[],"name":"setUniswapRouter","nameLocation":"273:16:16","nodeType":"FunctionDefinition","parameters":{"id":2561,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2560,"mutability":"mutable","name":"_uniswapRouter","nameLocation":"298:14:16","nodeType":"VariableDeclaration","scope":2563,"src":"290:22:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2559,"name":"address","nodeType":"ElementaryTypeName","src":"290:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"289:24:16"},"returnParameters":{"id":2562,"nodeType":"ParameterList","parameters":[],"src":"322:0:16"},"scope":2784,"src":"264:59:16","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"26158136","id":2568,"implemented":false,"kind":"function","modifiers":[],"name":"setUniswapQuoter","nameLocation":"340:16:16","nodeType":"FunctionDefinition","parameters":{"id":2566,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2565,"mutability":"mutable","name":"_uniswapQuoter","nameLocation":"365:14:16","nodeType":"VariableDeclaration","scope":2568,"src":"357:22:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2564,"name":"address","nodeType":"ElementaryTypeName","src":"357:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"356:24:16"},"returnParameters":{"id":2567,"nodeType":"ParameterList","parameters":[],"src":"389:0:16"},"scope":2784,"src":"331:59:16","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"f1dccde7","id":2573,"implemented":false,"kind":"function","modifiers":[],"name":"setBaluniAgentFactory","nameLocation":"407:21:16","nodeType":"FunctionDefinition","parameters":{"id":2571,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2570,"mutability":"mutable","name":"_baluniAgentFactory","nameLocation":"437:19:16","nodeType":"VariableDeclaration","scope":2573,"src":"429:27:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2569,"name":"address","nodeType":"ElementaryTypeName","src":"429:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"428:29:16"},"returnParameters":{"id":2572,"nodeType":"ParameterList","parameters":[],"src":"466:0:16"},"scope":2784,"src":"398:69:16","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"588c5b70","id":2578,"implemented":false,"kind":"function","modifiers":[],"name":"setBaluniPoolPeriphery","nameLocation":"484:22:16","nodeType":"FunctionDefinition","parameters":{"id":2576,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2575,"mutability":"mutable","name":"_baluniPoolPeriphery","nameLocation":"515:20:16","nodeType":"VariableDeclaration","scope":2578,"src":"507:28:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2574,"name":"address","nodeType":"ElementaryTypeName","src":"507:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"506:30:16"},"returnParameters":{"id":2577,"nodeType":"ParameterList","parameters":[],"src":"545:0:16"},"scope":2784,"src":"475:71:16","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"c3f5df5c","id":2583,"implemented":false,"kind":"function","modifiers":[],"name":"setBaluniSwapper","nameLocation":"563:16:16","nodeType":"FunctionDefinition","parameters":{"id":2581,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2580,"mutability":"mutable","name":"_baluniSwapper","nameLocation":"588:14:16","nodeType":"VariableDeclaration","scope":2583,"src":"580:22:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2579,"name":"address","nodeType":"ElementaryTypeName","src":"580:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"579:24:16"},"returnParameters":{"id":2582,"nodeType":"ParameterList","parameters":[],"src":"612:0:16"},"scope":2784,"src":"554:59:16","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"f5b84f64","id":2588,"implemented":false,"kind":"function","modifiers":[],"name":"setBaluniOracle","nameLocation":"630:15:16","nodeType":"FunctionDefinition","parameters":{"id":2586,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2585,"mutability":"mutable","name":"_baluniOracle","nameLocation":"654:13:16","nodeType":"VariableDeclaration","scope":2588,"src":"646:21:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2584,"name":"address","nodeType":"ElementaryTypeName","src":"646:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"645:23:16"},"returnParameters":{"id":2587,"nodeType":"ParameterList","parameters":[],"src":"677:0:16"},"scope":2784,"src":"621:57:16","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"f98977a9","id":2593,"implemented":false,"kind":"function","modifiers":[],"name":"setBaluniPoolRegistry","nameLocation":"695:21:16","nodeType":"FunctionDefinition","parameters":{"id":2591,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2590,"mutability":"mutable","name":"_baluniPoolRegistry","nameLocation":"725:19:16","nodeType":"VariableDeclaration","scope":2593,"src":"717:27:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2589,"name":"address","nodeType":"ElementaryTypeName","src":"717:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"716:29:16"},"returnParameters":{"id":2592,"nodeType":"ParameterList","parameters":[],"src":"754:0:16"},"scope":2784,"src":"686:69:16","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"d7e53673","id":2598,"implemented":false,"kind":"function","modifiers":[],"name":"setBaluniDCAVaultRegistry","nameLocation":"772:25:16","nodeType":"FunctionDefinition","parameters":{"id":2596,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2595,"mutability":"mutable","name":"_baluniPoolRegistry","nameLocation":"806:19:16","nodeType":"VariableDeclaration","scope":2598,"src":"798:27:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2594,"name":"address","nodeType":"ElementaryTypeName","src":"798:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"797:29:16"},"returnParameters":{"id":2597,"nodeType":"ParameterList","parameters":[],"src":"835:0:16"},"scope":2784,"src":"763:73:16","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"0241bffa","id":2603,"implemented":false,"kind":"function","modifiers":[],"name":"setBaluniRebalancer","nameLocation":"853:19:16","nodeType":"FunctionDefinition","parameters":{"id":2601,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2600,"mutability":"mutable","name":"_baluniRebalancer","nameLocation":"881:17:16","nodeType":"VariableDeclaration","scope":2603,"src":"873:25:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2599,"name":"address","nodeType":"ElementaryTypeName","src":"873:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"872:27:16"},"returnParameters":{"id":2602,"nodeType":"ParameterList","parameters":[],"src":"908:0:16"},"scope":2784,"src":"844:65:16","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"400fb668","id":2608,"implemented":false,"kind":"function","modifiers":[],"name":"setBaluniRouter","nameLocation":"926:15:16","nodeType":"FunctionDefinition","parameters":{"id":2606,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2605,"mutability":"mutable","name":"_baluniRouter","nameLocation":"950:13:16","nodeType":"VariableDeclaration","scope":2608,"src":"942:21:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2604,"name":"address","nodeType":"ElementaryTypeName","src":"942:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"941:23:16"},"returnParameters":{"id":2607,"nodeType":"ParameterList","parameters":[],"src":"973:0:16"},"scope":2784,"src":"917:57:16","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"6c43274c","id":2613,"implemented":false,"kind":"function","modifiers":[],"name":"setBaluniRegistry","nameLocation":"991:17:16","nodeType":"FunctionDefinition","parameters":{"id":2611,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2610,"mutability":"mutable","name":"_baluniRegistry","nameLocation":"1017:15:16","nodeType":"VariableDeclaration","scope":2613,"src":"1009:23:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2609,"name":"address","nodeType":"ElementaryTypeName","src":"1009:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1008:25:16"},"returnParameters":{"id":2612,"nodeType":"ParameterList","parameters":[],"src":"1042:0:16"},"scope":2784,"src":"982:61:16","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"b6fe9cc7","id":2618,"implemented":false,"kind":"function","modifiers":[],"name":"setWNATIVE","nameLocation":"1060:10:16","nodeType":"FunctionDefinition","parameters":{"id":2616,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2615,"mutability":"mutable","name":"_WNATIVE","nameLocation":"1079:8:16","nodeType":"VariableDeclaration","scope":2618,"src":"1071:16:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2614,"name":"address","nodeType":"ElementaryTypeName","src":"1071:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1070:18:16"},"returnParameters":{"id":2617,"nodeType":"ParameterList","parameters":[],"src":"1097:0:16"},"scope":2784,"src":"1051:47:16","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"b3e089a2","id":2623,"implemented":false,"kind":"function","modifiers":[],"name":"setUSDC","nameLocation":"1115:7:16","nodeType":"FunctionDefinition","parameters":{"id":2621,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2620,"mutability":"mutable","name":"_USDC","nameLocation":"1131:5:16","nodeType":"VariableDeclaration","scope":2623,"src":"1123:13:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2619,"name":"address","nodeType":"ElementaryTypeName","src":"1123:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1122:15:16"},"returnParameters":{"id":2622,"nodeType":"ParameterList","parameters":[],"src":"1146:0:16"},"scope":2784,"src":"1106:41:16","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"2da52442","id":2628,"implemented":false,"kind":"function","modifiers":[],"name":"setREBALANCE_THRESHOLD","nameLocation":"1164:22:16","nodeType":"FunctionDefinition","parameters":{"id":2626,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2625,"mutability":"mutable","name":"_REBALANCE_THRESHOLD","nameLocation":"1195:20:16","nodeType":"VariableDeclaration","scope":2628,"src":"1187:28:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2624,"name":"uint256","nodeType":"ElementaryTypeName","src":"1187:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1186:30:16"},"returnParameters":{"id":2627,"nodeType":"ParameterList","parameters":[],"src":"1225:0:16"},"scope":2784,"src":"1155:71:16","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"f0f44260","id":2633,"implemented":false,"kind":"function","modifiers":[],"name":"setTreasury","nameLocation":"1243:11:16","nodeType":"FunctionDefinition","parameters":{"id":2631,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2630,"mutability":"mutable","name":"_treasury","nameLocation":"1263:9:16","nodeType":"VariableDeclaration","scope":2633,"src":"1255:17:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2629,"name":"address","nodeType":"ElementaryTypeName","src":"1255:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1254:19:16"},"returnParameters":{"id":2632,"nodeType":"ParameterList","parameters":[],"src":"1282:0:16"},"scope":2784,"src":"1234:49:16","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"c08f786b","id":2638,"implemented":false,"kind":"function","modifiers":[],"name":"set1inchSpotAgg","nameLocation":"1300:15:16","nodeType":"FunctionDefinition","parameters":{"id":2636,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2635,"mutability":"mutable","name":"__1inchSpotAgg","nameLocation":"1324:14:16","nodeType":"VariableDeclaration","scope":2638,"src":"1316:22:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2634,"name":"address","nodeType":"ElementaryTypeName","src":"1316:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1315:24:16"},"returnParameters":{"id":2637,"nodeType":"ParameterList","parameters":[],"src":"1348:0:16"},"scope":2784,"src":"1291:58:16","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"9e6453f8","id":2643,"implemented":false,"kind":"function","modifiers":[],"name":"setBPS_FEE","nameLocation":"1366:10:16","nodeType":"FunctionDefinition","parameters":{"id":2641,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2640,"mutability":"mutable","name":"__BPS_FEE","nameLocation":"1385:9:16","nodeType":"VariableDeclaration","scope":2643,"src":"1377:17:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2639,"name":"uint256","nodeType":"ElementaryTypeName","src":"1377:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1376:19:16"},"returnParameters":{"id":2642,"nodeType":"ParameterList","parameters":[],"src":"1404:0:16"},"scope":2784,"src":"1357:48:16","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"ba535c54","id":2648,"implemented":false,"kind":"function","modifiers":[],"name":"setBaluniYearnVaultRegistry","nameLocation":"1422:27:16","nodeType":"FunctionDefinition","parameters":{"id":2646,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2645,"mutability":"mutable","name":"_baluniYearnVaultRegistry","nameLocation":"1458:25:16","nodeType":"VariableDeclaration","scope":2648,"src":"1450:33:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2644,"name":"address","nodeType":"ElementaryTypeName","src":"1450:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1449:35:16"},"returnParameters":{"id":2647,"nodeType":"ParameterList","parameters":[],"src":"1493:0:16"},"scope":2784,"src":"1413:81:16","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"8ffc0673","id":2653,"implemented":false,"kind":"function","modifiers":[],"name":"setBaluniPoolZap","nameLocation":"1511:16:16","nodeType":"FunctionDefinition","parameters":{"id":2651,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2650,"mutability":"mutable","name":"_baluniPoolZap","nameLocation":"1536:14:16","nodeType":"VariableDeclaration","scope":2653,"src":"1528:22:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2649,"name":"address","nodeType":"ElementaryTypeName","src":"1528:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1527:24:16"},"returnParameters":{"id":2652,"nodeType":"ParameterList","parameters":[],"src":"1560:0:16"},"scope":2784,"src":"1502:59:16","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"a23dccee","id":2658,"implemented":false,"kind":"function","modifiers":[],"name":"setBaluniHyperPoolZap","nameLocation":"1578:21:16","nodeType":"FunctionDefinition","parameters":{"id":2656,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2655,"mutability":"mutable","name":"_baluniHyperPoolZap","nameLocation":"1608:19:16","nodeType":"VariableDeclaration","scope":2658,"src":"1600:27:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2654,"name":"address","nodeType":"ElementaryTypeName","src":"1600:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1599:29:16"},"returnParameters":{"id":2657,"nodeType":"ParameterList","parameters":[],"src":"1637:0:16"},"scope":2784,"src":"1569:69:16","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"b0a70975","id":2663,"implemented":false,"kind":"function","modifiers":[],"name":"getUniswapQuoter","nameLocation":"1655:16:16","nodeType":"FunctionDefinition","parameters":{"id":2659,"nodeType":"ParameterList","parameters":[],"src":"1671:2:16"},"returnParameters":{"id":2662,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2661,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2663,"src":"1697:7:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2660,"name":"address","nodeType":"ElementaryTypeName","src":"1697:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1696:9:16"},"scope":2784,"src":"1646:60:16","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"3e6dfa36","id":2668,"implemented":false,"kind":"function","modifiers":[],"name":"getUniswapFactory","nameLocation":"1723:17:16","nodeType":"FunctionDefinition","parameters":{"id":2664,"nodeType":"ParameterList","parameters":[],"src":"1740:2:16"},"returnParameters":{"id":2667,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2666,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2668,"src":"1766:7:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2665,"name":"address","nodeType":"ElementaryTypeName","src":"1766:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1765:9:16"},"scope":2784,"src":"1714:61:16","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"524900b5","id":2673,"implemented":false,"kind":"function","modifiers":[],"name":"getUniswapRouter","nameLocation":"1792:16:16","nodeType":"FunctionDefinition","parameters":{"id":2669,"nodeType":"ParameterList","parameters":[],"src":"1808:2:16"},"returnParameters":{"id":2672,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2671,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2673,"src":"1834:7:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2670,"name":"address","nodeType":"ElementaryTypeName","src":"1834:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1833:9:16"},"scope":2784,"src":"1783:60:16","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"82755ebb","id":2678,"implemented":false,"kind":"function","modifiers":[],"name":"getBaluniSwapper","nameLocation":"1860:16:16","nodeType":"FunctionDefinition","parameters":{"id":2674,"nodeType":"ParameterList","parameters":[],"src":"1876:2:16"},"returnParameters":{"id":2677,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2676,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2678,"src":"1902:7:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2675,"name":"address","nodeType":"ElementaryTypeName","src":"1902:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1901:9:16"},"scope":2784,"src":"1851:60:16","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"bb3ba04c","id":2683,"implemented":false,"kind":"function","modifiers":[],"name":"getBaluniOracle","nameLocation":"1928:15:16","nodeType":"FunctionDefinition","parameters":{"id":2679,"nodeType":"ParameterList","parameters":[],"src":"1943:2:16"},"returnParameters":{"id":2682,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2681,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2683,"src":"1969:7:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2680,"name":"address","nodeType":"ElementaryTypeName","src":"1969:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1968:9:16"},"scope":2784,"src":"1919:59:16","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"f5d2d998","id":2688,"implemented":false,"kind":"function","modifiers":[],"name":"getBaluniAgentFactory","nameLocation":"1995:21:16","nodeType":"FunctionDefinition","parameters":{"id":2684,"nodeType":"ParameterList","parameters":[],"src":"2016:2:16"},"returnParameters":{"id":2687,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2686,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2688,"src":"2042:7:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2685,"name":"address","nodeType":"ElementaryTypeName","src":"2042:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2041:9:16"},"scope":2784,"src":"1986:65:16","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"1acb6141","id":2693,"implemented":false,"kind":"function","modifiers":[],"name":"getBaluniPoolPeriphery","nameLocation":"2068:22:16","nodeType":"FunctionDefinition","parameters":{"id":2689,"nodeType":"ParameterList","parameters":[],"src":"2090:2:16"},"returnParameters":{"id":2692,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2691,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2693,"src":"2116:7:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2690,"name":"address","nodeType":"ElementaryTypeName","src":"2116:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2115:9:16"},"scope":2784,"src":"2059:66:16","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"ffa08e95","id":2698,"implemented":false,"kind":"function","modifiers":[],"name":"getBaluniDCAVaultRegistry","nameLocation":"2142:25:16","nodeType":"FunctionDefinition","parameters":{"id":2694,"nodeType":"ParameterList","parameters":[],"src":"2167:2:16"},"returnParameters":{"id":2697,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2696,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2698,"src":"2193:7:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2695,"name":"address","nodeType":"ElementaryTypeName","src":"2193:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2192:9:16"},"scope":2784,"src":"2133:69:16","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"32569e02","id":2703,"implemented":false,"kind":"function","modifiers":[],"name":"getBaluniPoolRegistry","nameLocation":"2219:21:16","nodeType":"FunctionDefinition","parameters":{"id":2699,"nodeType":"ParameterList","parameters":[],"src":"2240:2:16"},"returnParameters":{"id":2702,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2701,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2703,"src":"2266:7:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2700,"name":"address","nodeType":"ElementaryTypeName","src":"2266:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2265:9:16"},"scope":2784,"src":"2210:65:16","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"cff49d68","id":2708,"implemented":false,"kind":"function","modifiers":[],"name":"getBaluniRebalancer","nameLocation":"2292:19:16","nodeType":"FunctionDefinition","parameters":{"id":2704,"nodeType":"ParameterList","parameters":[],"src":"2311:2:16"},"returnParameters":{"id":2707,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2706,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2708,"src":"2337:7:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2705,"name":"address","nodeType":"ElementaryTypeName","src":"2337:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2336:9:16"},"scope":2784,"src":"2283:63:16","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"04cc7325","id":2713,"implemented":false,"kind":"function","modifiers":[],"name":"getBaluniRouter","nameLocation":"2363:15:16","nodeType":"FunctionDefinition","parameters":{"id":2709,"nodeType":"ParameterList","parameters":[],"src":"2378:2:16"},"returnParameters":{"id":2712,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2711,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2713,"src":"2404:7:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2710,"name":"address","nodeType":"ElementaryTypeName","src":"2404:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2403:9:16"},"scope":2784,"src":"2354:59:16","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"c9aba8ae","id":2718,"implemented":false,"kind":"function","modifiers":[],"name":"getBaluniRegistry","nameLocation":"2430:17:16","nodeType":"FunctionDefinition","parameters":{"id":2714,"nodeType":"ParameterList","parameters":[],"src":"2447:2:16"},"returnParameters":{"id":2717,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2716,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2718,"src":"2473:7:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2715,"name":"address","nodeType":"ElementaryTypeName","src":"2473:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2472:9:16"},"scope":2784,"src":"2421:61:16","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"6c9c0078","id":2723,"implemented":false,"kind":"function","modifiers":[],"name":"getWNATIVE","nameLocation":"2499:10:16","nodeType":"FunctionDefinition","parameters":{"id":2719,"nodeType":"ParameterList","parameters":[],"src":"2509:2:16"},"returnParameters":{"id":2722,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2721,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2723,"src":"2535:7:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2720,"name":"address","nodeType":"ElementaryTypeName","src":"2535:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2534:9:16"},"scope":2784,"src":"2490:54:16","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"1bf01e9b","id":2728,"implemented":false,"kind":"function","modifiers":[],"name":"getUSDC","nameLocation":"2561:7:16","nodeType":"FunctionDefinition","parameters":{"id":2724,"nodeType":"ParameterList","parameters":[],"src":"2568:2:16"},"returnParameters":{"id":2727,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2726,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2728,"src":"2594:7:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2725,"name":"address","nodeType":"ElementaryTypeName","src":"2594:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2593:9:16"},"scope":2784,"src":"2552:51:16","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"8e1c3a8a","id":2733,"implemented":false,"kind":"function","modifiers":[],"name":"get1inchSpotAgg","nameLocation":"2620:15:16","nodeType":"FunctionDefinition","parameters":{"id":2729,"nodeType":"ParameterList","parameters":[],"src":"2635:2:16"},"returnParameters":{"id":2732,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2731,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2733,"src":"2661:7:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2730,"name":"address","nodeType":"ElementaryTypeName","src":"2661:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2660:9:16"},"scope":2784,"src":"2611:59:16","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"85462d6f","id":2738,"implemented":false,"kind":"function","modifiers":[],"name":"getBPS_FEE","nameLocation":"2687:10:16","nodeType":"FunctionDefinition","parameters":{"id":2734,"nodeType":"ParameterList","parameters":[],"src":"2697:2:16"},"returnParameters":{"id":2737,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2736,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2738,"src":"2723:7:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2735,"name":"uint256","nodeType":"ElementaryTypeName","src":"2723:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2722:9:16"},"scope":2784,"src":"2678:54:16","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"9380fb6f","id":2743,"implemented":false,"kind":"function","modifiers":[],"name":"getMAX_BPS_FEE","nameLocation":"2749:14:16","nodeType":"FunctionDefinition","parameters":{"id":2739,"nodeType":"ParameterList","parameters":[],"src":"2763:2:16"},"returnParameters":{"id":2742,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2741,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2743,"src":"2789:7:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2740,"name":"uint256","nodeType":"ElementaryTypeName","src":"2789:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2788:9:16"},"scope":2784,"src":"2740:58:16","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"4f4608a2","id":2748,"implemented":false,"kind":"function","modifiers":[],"name":"getBPS_BASE","nameLocation":"2815:11:16","nodeType":"FunctionDefinition","parameters":{"id":2744,"nodeType":"ParameterList","parameters":[],"src":"2826:2:16"},"returnParameters":{"id":2747,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2746,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2748,"src":"2852:7:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2745,"name":"uint256","nodeType":"ElementaryTypeName","src":"2852:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2851:9:16"},"scope":2784,"src":"2806:55:16","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"ea233c05","id":2753,"implemented":false,"kind":"function","modifiers":[],"name":"getREBALANCE_THRESHOLD","nameLocation":"2878:22:16","nodeType":"FunctionDefinition","parameters":{"id":2749,"nodeType":"ParameterList","parameters":[],"src":"2900:2:16"},"returnParameters":{"id":2752,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2751,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2753,"src":"2926:7:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2750,"name":"uint256","nodeType":"ElementaryTypeName","src":"2926:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2925:9:16"},"scope":2784,"src":"2869:66:16","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"3b19e84a","id":2758,"implemented":false,"kind":"function","modifiers":[],"name":"getTreasury","nameLocation":"2952:11:16","nodeType":"FunctionDefinition","parameters":{"id":2754,"nodeType":"ParameterList","parameters":[],"src":"2963:2:16"},"returnParameters":{"id":2757,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2756,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2758,"src":"2989:7:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2755,"name":"address","nodeType":"ElementaryTypeName","src":"2989:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2988:9:16"},"scope":2784,"src":"2943:55:16","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"cc01e9a6","id":2763,"implemented":false,"kind":"function","modifiers":[],"name":"setStaticOracle","nameLocation":"3015:15:16","nodeType":"FunctionDefinition","parameters":{"id":2761,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2760,"mutability":"mutable","name":"_staticOracle","nameLocation":"3039:13:16","nodeType":"VariableDeclaration","scope":2763,"src":"3031:21:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2759,"name":"address","nodeType":"ElementaryTypeName","src":"3031:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3030:23:16"},"returnParameters":{"id":2762,"nodeType":"ParameterList","parameters":[],"src":"3062:0:16"},"scope":2784,"src":"3006:57:16","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"a5d2236f","id":2768,"implemented":false,"kind":"function","modifiers":[],"name":"getStaticOracle","nameLocation":"3080:15:16","nodeType":"FunctionDefinition","parameters":{"id":2764,"nodeType":"ParameterList","parameters":[],"src":"3095:2:16"},"returnParameters":{"id":2767,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2766,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2768,"src":"3121:7:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2765,"name":"address","nodeType":"ElementaryTypeName","src":"3121:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3120:9:16"},"scope":2784,"src":"3071:59:16","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"32327d1f","id":2773,"implemented":false,"kind":"function","modifiers":[],"name":"getBaluniYearnVaultRegistry","nameLocation":"3147:27:16","nodeType":"FunctionDefinition","parameters":{"id":2769,"nodeType":"ParameterList","parameters":[],"src":"3174:2:16"},"returnParameters":{"id":2772,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2771,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2773,"src":"3200:7:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2770,"name":"address","nodeType":"ElementaryTypeName","src":"3200:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3199:9:16"},"scope":2784,"src":"3138:71:16","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"040f767e","id":2778,"implemented":false,"kind":"function","modifiers":[],"name":"getBaluniPoolZap","nameLocation":"3226:16:16","nodeType":"FunctionDefinition","parameters":{"id":2774,"nodeType":"ParameterList","parameters":[],"src":"3242:2:16"},"returnParameters":{"id":2777,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2776,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2778,"src":"3268:7:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2775,"name":"address","nodeType":"ElementaryTypeName","src":"3268:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3267:9:16"},"scope":2784,"src":"3217:60:16","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"0f21717d","id":2783,"implemented":false,"kind":"function","modifiers":[],"name":"getBaluniHyperPoolZap","nameLocation":"3294:21:16","nodeType":"FunctionDefinition","parameters":{"id":2779,"nodeType":"ParameterList","parameters":[],"src":"3315:2:16"},"returnParameters":{"id":2782,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2781,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2783,"src":"3341:7:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2780,"name":"address","nodeType":"ElementaryTypeName","src":"3341:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3340:9:16"},"scope":2784,"src":"3285:65:16","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":2785,"src":"160:3193:16","usedErrors":[],"usedEvents":[]}],"src":"40:3315:16"},"id":16},"contracts/interfaces/IBaluniV1Swapper.sol":{"ast":{"absolutePath":"contracts/interfaces/IBaluniV1Swapper.sol","exportedSymbols":{"IBaluniV1Swapper":[2815]},"id":2816,"license":"GNU AGPLv3","nodeType":"SourceUnit","nodes":[{"id":2786,"literals":["solidity","0.8",".25"],"nodeType":"PragmaDirective","src":"40:23:17"},{"abstract":false,"baseContracts":[],"canonicalName":"IBaluniV1Swapper","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":2815,"linearizedBaseContracts":[2815],"name":"IBaluniV1Swapper","nameLocation":"77:16:17","nodeType":"ContractDefinition","nodes":[{"functionSelector":"2d6bc8ea","id":2799,"implemented":false,"kind":"function","modifiers":[],"name":"singleSwap","nameLocation":"110:10:17","nodeType":"FunctionDefinition","parameters":{"id":2795,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2788,"mutability":"mutable","name":"token0","nameLocation":"139:6:17","nodeType":"VariableDeclaration","scope":2799,"src":"131:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2787,"name":"address","nodeType":"ElementaryTypeName","src":"131:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2790,"mutability":"mutable","name":"token1","nameLocation":"164:6:17","nodeType":"VariableDeclaration","scope":2799,"src":"156:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2789,"name":"address","nodeType":"ElementaryTypeName","src":"156:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2792,"mutability":"mutable","name":"amount","nameLocation":"189:6:17","nodeType":"VariableDeclaration","scope":2799,"src":"181:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2791,"name":"uint256","nodeType":"ElementaryTypeName","src":"181:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2794,"mutability":"mutable","name":"receiver","nameLocation":"214:8:17","nodeType":"VariableDeclaration","scope":2799,"src":"206:16:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2793,"name":"address","nodeType":"ElementaryTypeName","src":"206:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"120:109:17"},"returnParameters":{"id":2798,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2797,"mutability":"mutable","name":"amountOut","nameLocation":"256:9:17","nodeType":"VariableDeclaration","scope":2799,"src":"248:17:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2796,"name":"uint256","nodeType":"ElementaryTypeName","src":"248:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"247:19:17"},"scope":2815,"src":"101:166:17","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"5efaaebb","id":2814,"implemented":false,"kind":"function","modifiers":[],"name":"multiHopSwap","nameLocation":"282:12:17","nodeType":"FunctionDefinition","parameters":{"id":2810,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2801,"mutability":"mutable","name":"token0","nameLocation":"313:6:17","nodeType":"VariableDeclaration","scope":2814,"src":"305:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2800,"name":"address","nodeType":"ElementaryTypeName","src":"305:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2803,"mutability":"mutable","name":"token1","nameLocation":"338:6:17","nodeType":"VariableDeclaration","scope":2814,"src":"330:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2802,"name":"address","nodeType":"ElementaryTypeName","src":"330:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2805,"mutability":"mutable","name":"token2","nameLocation":"363:6:17","nodeType":"VariableDeclaration","scope":2814,"src":"355:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2804,"name":"address","nodeType":"ElementaryTypeName","src":"355:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2807,"mutability":"mutable","name":"amount","nameLocation":"388:6:17","nodeType":"VariableDeclaration","scope":2814,"src":"380:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2806,"name":"uint256","nodeType":"ElementaryTypeName","src":"380:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2809,"mutability":"mutable","name":"receiver","nameLocation":"413:8:17","nodeType":"VariableDeclaration","scope":2814,"src":"405:16:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2808,"name":"address","nodeType":"ElementaryTypeName","src":"405:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"294:134:17"},"returnParameters":{"id":2813,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2812,"mutability":"mutable","name":"amountOut","nameLocation":"455:9:17","nodeType":"VariableDeclaration","scope":2814,"src":"447:17:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2811,"name":"uint256","nodeType":"ElementaryTypeName","src":"447:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"446:19:17"},"scope":2815,"src":"273:193:17","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":2816,"src":"67:402:17","usedErrors":[],"usedEvents":[]}],"src":"40:431:17"},"id":17},"contracts/interfaces/IBaluniV1YearnVault.sol":{"ast":{"absolutePath":"contracts/interfaces/IBaluniV1YearnVault.sol","exportedSymbols":{"IBaluniV1YearnVault":[2881]},"id":2882,"license":"GNU AGPLv3","nodeType":"SourceUnit","nodes":[{"id":2817,"literals":["solidity","0.8",".25"],"nodeType":"PragmaDirective","src":"40:23:18"},{"abstract":false,"baseContracts":[],"canonicalName":"IBaluniV1YearnVault","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":2881,"linearizedBaseContracts":[2881],"name":"IBaluniV1YearnVault","nameLocation":"77:19:18","nodeType":"ContractDefinition","nodes":[{"functionSelector":"cdf456e1","id":2822,"implemented":false,"kind":"function","modifiers":[],"name":"baseAsset","nameLocation":"113:9:18","nodeType":"FunctionDefinition","parameters":{"id":2818,"nodeType":"ParameterList","parameters":[],"src":"122:2:18"},"returnParameters":{"id":2821,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2820,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2822,"src":"148:7:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2819,"name":"address","nodeType":"ElementaryTypeName","src":"148:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"147:9:18"},"scope":2881,"src":"104:53:18","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"9db5df46","id":2827,"implemented":false,"kind":"function","modifiers":[],"name":"yearnVault","nameLocation":"172:10:18","nodeType":"FunctionDefinition","parameters":{"id":2823,"nodeType":"ParameterList","parameters":[],"src":"182:2:18"},"returnParameters":{"id":2826,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2825,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2827,"src":"208:7:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2824,"name":"address","nodeType":"ElementaryTypeName","src":"208:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"207:9:18"},"scope":2881,"src":"163:54:18","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"fdf262b7","id":2832,"implemented":false,"kind":"function","modifiers":[],"name":"quoteAsset","nameLocation":"232:10:18","nodeType":"FunctionDefinition","parameters":{"id":2828,"nodeType":"ParameterList","parameters":[],"src":"242:2:18"},"returnParameters":{"id":2831,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2830,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2832,"src":"268:7:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2829,"name":"address","nodeType":"ElementaryTypeName","src":"268:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"267:9:18"},"scope":2881,"src":"223:54:18","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"7b103999","id":2837,"implemented":false,"kind":"function","modifiers":[],"name":"registry","nameLocation":"292:8:18","nodeType":"FunctionDefinition","parameters":{"id":2833,"nodeType":"ParameterList","parameters":[],"src":"300:2:18"},"returnParameters":{"id":2836,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2835,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2837,"src":"326:7:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2834,"name":"address","nodeType":"ElementaryTypeName","src":"326:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"325:9:18"},"scope":2881,"src":"283:52:18","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"36b77107","id":2842,"implemented":false,"kind":"function","modifiers":[],"name":"lastDeposit","nameLocation":"350:11:18","nodeType":"FunctionDefinition","parameters":{"id":2838,"nodeType":"ParameterList","parameters":[],"src":"361:2:18"},"returnParameters":{"id":2841,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2840,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2842,"src":"387:7:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2839,"name":"uint256","nodeType":"ElementaryTypeName","src":"387:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"386:9:18"},"scope":2881,"src":"341:55:18","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"6e553f65","id":2849,"implemented":false,"kind":"function","modifiers":[],"name":"deposit","nameLocation":"411:7:18","nodeType":"FunctionDefinition","parameters":{"id":2847,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2844,"mutability":"mutable","name":"amount","nameLocation":"427:6:18","nodeType":"VariableDeclaration","scope":2849,"src":"419:14:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2843,"name":"uint256","nodeType":"ElementaryTypeName","src":"419:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2846,"mutability":"mutable","name":"to","nameLocation":"443:2:18","nodeType":"VariableDeclaration","scope":2849,"src":"435:10:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2845,"name":"address","nodeType":"ElementaryTypeName","src":"435:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"418:28:18"},"returnParameters":{"id":2848,"nodeType":"ParameterList","parameters":[],"src":"455:0:18"},"scope":2881,"src":"402:54:18","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"00f714ce","id":2856,"implemented":false,"kind":"function","modifiers":[],"name":"withdraw","nameLocation":"471:8:18","nodeType":"FunctionDefinition","parameters":{"id":2854,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2851,"mutability":"mutable","name":"shares","nameLocation":"488:6:18","nodeType":"VariableDeclaration","scope":2856,"src":"480:14:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2850,"name":"uint256","nodeType":"ElementaryTypeName","src":"480:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2853,"mutability":"mutable","name":"to","nameLocation":"504:2:18","nodeType":"VariableDeclaration","scope":2856,"src":"496:10:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2852,"name":"address","nodeType":"ElementaryTypeName","src":"496:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"479:28:18"},"returnParameters":{"id":2855,"nodeType":"ParameterList","parameters":[],"src":"516:0:18"},"scope":2881,"src":"462:55:18","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"a6f2ae3a","id":2859,"implemented":false,"kind":"function","modifiers":[],"name":"buy","nameLocation":"532:3:18","nodeType":"FunctionDefinition","parameters":{"id":2857,"nodeType":"ParameterList","parameters":[],"src":"535:2:18"},"returnParameters":{"id":2858,"nodeType":"ParameterList","parameters":[],"src":"546:0:18"},"scope":2881,"src":"523:24:18","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"8456cb59","id":2862,"implemented":false,"kind":"function","modifiers":[],"name":"pause","nameLocation":"562:5:18","nodeType":"FunctionDefinition","parameters":{"id":2860,"nodeType":"ParameterList","parameters":[],"src":"567:2:18"},"returnParameters":{"id":2861,"nodeType":"ParameterList","parameters":[],"src":"578:0:18"},"scope":2881,"src":"553:26:18","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"3f4ba83a","id":2865,"implemented":false,"kind":"function","modifiers":[],"name":"unpause","nameLocation":"594:7:18","nodeType":"FunctionDefinition","parameters":{"id":2863,"nodeType":"ParameterList","parameters":[],"src":"601:2:18"},"returnParameters":{"id":2864,"nodeType":"ParameterList","parameters":[],"src":"612:0:18"},"scope":2881,"src":"585:28:18","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"295b9300","id":2870,"implemented":false,"kind":"function","modifiers":[],"name":"totalValuation","nameLocation":"628:14:18","nodeType":"FunctionDefinition","parameters":{"id":2866,"nodeType":"ParameterList","parameters":[],"src":"642:2:18"},"returnParameters":{"id":2869,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2868,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2870,"src":"668:7:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2867,"name":"uint256","nodeType":"ElementaryTypeName","src":"668:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"667:9:18"},"scope":2881,"src":"619:58:18","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"e73faa2d","id":2875,"implemented":false,"kind":"function","modifiers":[],"name":"unitPrice","nameLocation":"692:9:18","nodeType":"FunctionDefinition","parameters":{"id":2871,"nodeType":"ParameterList","parameters":[],"src":"701:2:18"},"returnParameters":{"id":2874,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2873,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2875,"src":"727:7:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2872,"name":"uint256","nodeType":"ElementaryTypeName","src":"727:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"726:9:18"},"scope":2881,"src":"683:53:18","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"374261ab","id":2880,"implemented":false,"kind":"function","modifiers":[],"name":"interestEarned","nameLocation":"751:14:18","nodeType":"FunctionDefinition","parameters":{"id":2876,"nodeType":"ParameterList","parameters":[],"src":"765:2:18"},"returnParameters":{"id":2879,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2878,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2880,"src":"791:7:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2877,"name":"uint256","nodeType":"ElementaryTypeName","src":"791:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"790:9:18"},"scope":2881,"src":"742:58:18","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":2882,"src":"67:736:18","usedErrors":[],"usedEvents":[]}],"src":"40:765:18"},"id":18},"contracts/interfaces/IYearnVault.sol":{"ast":{"absolutePath":"contracts/interfaces/IYearnVault.sol","exportedSymbols":{"IYearnVault":[2956]},"id":2957,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2883,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"33:23:19"},{"abstract":false,"baseContracts":[],"canonicalName":"IYearnVault","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":2956,"linearizedBaseContracts":[2956],"name":"IYearnVault","nameLocation":"70:11:19","nodeType":"ContractDefinition","nodes":[{"functionSelector":"38d52e0f","id":2888,"implemented":false,"kind":"function","modifiers":[],"name":"asset","nameLocation":"98:5:19","nodeType":"FunctionDefinition","parameters":{"id":2884,"nodeType":"ParameterList","parameters":[],"src":"103:2:19"},"returnParameters":{"id":2887,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2886,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2888,"src":"129:7:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2885,"name":"address","nodeType":"ElementaryTypeName","src":"129:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"128:9:19"},"scope":2956,"src":"89:49:19","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"70a08231","id":2895,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"155:9:19","nodeType":"FunctionDefinition","parameters":{"id":2891,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2890,"mutability":"mutable","name":"owner","nameLocation":"173:5:19","nodeType":"VariableDeclaration","scope":2895,"src":"165:13:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2889,"name":"address","nodeType":"ElementaryTypeName","src":"165:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"164:15:19"},"returnParameters":{"id":2894,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2893,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2895,"src":"203:7:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2892,"name":"uint256","nodeType":"ElementaryTypeName","src":"203:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"202:9:19"},"scope":2956,"src":"146:66:19","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"402d267d","id":2902,"implemented":false,"kind":"function","modifiers":[],"name":"maxDeposit","nameLocation":"229:10:19","nodeType":"FunctionDefinition","parameters":{"id":2898,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2897,"mutability":"mutable","name":"receiver","nameLocation":"248:8:19","nodeType":"VariableDeclaration","scope":2902,"src":"240:16:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2896,"name":"address","nodeType":"ElementaryTypeName","src":"240:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"239:18:19"},"returnParameters":{"id":2901,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2900,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2902,"src":"281:7:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2899,"name":"uint256","nodeType":"ElementaryTypeName","src":"281:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"280:9:19"},"scope":2956,"src":"220:70:19","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"ba087652","id":2913,"implemented":false,"kind":"function","modifiers":[],"name":"redeem","nameLocation":"307:6:19","nodeType":"FunctionDefinition","parameters":{"id":2909,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2904,"mutability":"mutable","name":"shares","nameLocation":"322:6:19","nodeType":"VariableDeclaration","scope":2913,"src":"314:14:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2903,"name":"uint256","nodeType":"ElementaryTypeName","src":"314:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2906,"mutability":"mutable","name":"receiver","nameLocation":"338:8:19","nodeType":"VariableDeclaration","scope":2913,"src":"330:16:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2905,"name":"address","nodeType":"ElementaryTypeName","src":"330:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2908,"mutability":"mutable","name":"owner","nameLocation":"356:5:19","nodeType":"VariableDeclaration","scope":2913,"src":"348:13:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2907,"name":"address","nodeType":"ElementaryTypeName","src":"348:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"313:49:19"},"returnParameters":{"id":2912,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2911,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2913,"src":"381:7:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2910,"name":"uint256","nodeType":"ElementaryTypeName","src":"381:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"380:9:19"},"scope":2956,"src":"298:92:19","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"6e553f65","id":2922,"implemented":false,"kind":"function","modifiers":[],"name":"deposit","nameLocation":"407:7:19","nodeType":"FunctionDefinition","parameters":{"id":2918,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2915,"mutability":"mutable","name":"assets","nameLocation":"423:6:19","nodeType":"VariableDeclaration","scope":2922,"src":"415:14:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2914,"name":"uint256","nodeType":"ElementaryTypeName","src":"415:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2917,"mutability":"mutable","name":"receiver","nameLocation":"439:8:19","nodeType":"VariableDeclaration","scope":2922,"src":"431:16:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2916,"name":"address","nodeType":"ElementaryTypeName","src":"431:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"414:34:19"},"returnParameters":{"id":2921,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2920,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2922,"src":"467:7:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2919,"name":"uint256","nodeType":"ElementaryTypeName","src":"467:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"466:9:19"},"scope":2956,"src":"398:78:19","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"01e1d114","id":2927,"implemented":false,"kind":"function","modifiers":[],"name":"totalAssets","nameLocation":"493:11:19","nodeType":"FunctionDefinition","parameters":{"id":2923,"nodeType":"ParameterList","parameters":[],"src":"504:2:19"},"returnParameters":{"id":2926,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2925,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2927,"src":"530:7:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2924,"name":"uint256","nodeType":"ElementaryTypeName","src":"530:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"529:9:19"},"scope":2956,"src":"484:55:19","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"07a2d13a","id":2934,"implemented":false,"kind":"function","modifiers":[],"name":"convertToAssets","nameLocation":"556:15:19","nodeType":"FunctionDefinition","parameters":{"id":2930,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2929,"mutability":"mutable","name":"shares","nameLocation":"580:6:19","nodeType":"VariableDeclaration","scope":2934,"src":"572:14:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2928,"name":"uint256","nodeType":"ElementaryTypeName","src":"572:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"571:16:19"},"returnParameters":{"id":2933,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2932,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2934,"src":"611:7:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2931,"name":"uint256","nodeType":"ElementaryTypeName","src":"611:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"610:9:19"},"scope":2956,"src":"547:73:19","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"c6e6f592","id":2941,"implemented":false,"kind":"function","modifiers":[],"name":"convertToShares","nameLocation":"637:15:19","nodeType":"FunctionDefinition","parameters":{"id":2937,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2936,"mutability":"mutable","name":"assets","nameLocation":"661:6:19","nodeType":"VariableDeclaration","scope":2941,"src":"653:14:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2935,"name":"uint256","nodeType":"ElementaryTypeName","src":"653:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"652:16:19"},"returnParameters":{"id":2940,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2939,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2941,"src":"692:7:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2938,"name":"uint256","nodeType":"ElementaryTypeName","src":"692:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"691:9:19"},"scope":2956,"src":"628:73:19","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"0a28a477","id":2948,"implemented":false,"kind":"function","modifiers":[],"name":"previewWithdraw","nameLocation":"718:15:19","nodeType":"FunctionDefinition","parameters":{"id":2944,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2943,"mutability":"mutable","name":"assets","nameLocation":"742:6:19","nodeType":"VariableDeclaration","scope":2948,"src":"734:14:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2942,"name":"uint256","nodeType":"ElementaryTypeName","src":"734:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"733:16:19"},"returnParameters":{"id":2947,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2946,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2948,"src":"773:7:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2945,"name":"uint256","nodeType":"ElementaryTypeName","src":"773:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"772:9:19"},"scope":2956,"src":"709:73:19","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"d905777e","id":2955,"implemented":false,"kind":"function","modifiers":[],"name":"maxRedeem","nameLocation":"799:9:19","nodeType":"FunctionDefinition","parameters":{"id":2951,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2950,"mutability":"mutable","name":"owner","nameLocation":"817:5:19","nodeType":"VariableDeclaration","scope":2955,"src":"809:13:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2949,"name":"address","nodeType":"ElementaryTypeName","src":"809:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"808:15:19"},"returnParameters":{"id":2954,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2953,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2955,"src":"847:7:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2952,"name":"uint256","nodeType":"ElementaryTypeName","src":"847:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"846:9:19"},"scope":2956,"src":"790:66:19","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":2957,"src":"60:799:19","usedErrors":[],"usedEvents":[]}],"src":"33:828:19"},"id":19},"contracts/vaults/BaluniV1YearnVault.sol":{"ast":{"absolutePath":"contracts/vaults/BaluniV1YearnVault.sol","exportedSymbols":{"BaluniV1YearnVault":[4314],"ContextUpgradeable":[1293],"ERC1967Utils":[2048],"ERC20Upgradeable":[1247],"IBaluniV1Oracle":[2550],"IBaluniV1Registry":[2784],"IBaluniV1Swapper":[2815],"IBaluniV1YearnVault":[2881],"IERC1822Proxiable":[1608],"IERC20":[2136],"IERC20Errors":[1650],"IERC20Metadata":[2162],"IYearnVault":[2956],"Initializable":[448],"OwnableUpgradeable":[194],"PausableUpgradeable":[1469],"ReentrancyGuardUpgradeable":[1598],"UUPSUpgradeable":[630]},"id":4315,"license":"GNU AGPLv3","nodeType":"SourceUnit","nodes":[{"id":2958,"literals":["solidity","0.8",".25"],"nodeType":"PragmaDirective","src":"40:23:20"},{"absolutePath":"@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol","file":"@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol","id":2959,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4315,"sourceUnit":1248,"src":"67:78:20","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol","id":2960,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4315,"sourceUnit":195,"src":"147:75:20","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol","id":2961,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4315,"sourceUnit":1599,"src":"224:82:20","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","id":2962,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4315,"sourceUnit":449,"src":"308:75:20","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol","id":2963,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4315,"sourceUnit":631,"src":"385:77:20","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol","id":2964,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4315,"sourceUnit":1470,"src":"464:75:20","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/IBaluniV1Registry.sol","file":"../interfaces/IBaluniV1Registry.sol","id":2965,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4315,"sourceUnit":2785,"src":"543:45:20","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/IYearnVault.sol","file":"../interfaces/IYearnVault.sol","id":2966,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4315,"sourceUnit":2957,"src":"590:39:20","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/IBaluniV1Swapper.sol","file":"../interfaces/IBaluniV1Swapper.sol","id":2967,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4315,"sourceUnit":2816,"src":"631:44:20","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/IBaluniV1Oracle.sol","file":"../interfaces/IBaluniV1Oracle.sol","id":2968,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4315,"sourceUnit":2551,"src":"677:43:20","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/IBaluniV1YearnVault.sol","file":"../interfaces/IBaluniV1YearnVault.sol","id":2969,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4315,"sourceUnit":2882,"src":"722:47:20","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":2970,"name":"Initializable","nameLocations":["809:13:20"],"nodeType":"IdentifierPath","referencedDeclaration":448,"src":"809:13:20"},"id":2971,"nodeType":"InheritanceSpecifier","src":"809:13:20"},{"baseName":{"id":2972,"name":"UUPSUpgradeable","nameLocations":["829:15:20"],"nodeType":"IdentifierPath","referencedDeclaration":630,"src":"829:15:20"},"id":2973,"nodeType":"InheritanceSpecifier","src":"829:15:20"},{"baseName":{"id":2974,"name":"OwnableUpgradeable","nameLocations":["851:18:20"],"nodeType":"IdentifierPath","referencedDeclaration":194,"src":"851:18:20"},"id":2975,"nodeType":"InheritanceSpecifier","src":"851:18:20"},{"baseName":{"id":2976,"name":"ERC20Upgradeable","nameLocations":["876:16:20"],"nodeType":"IdentifierPath","referencedDeclaration":1247,"src":"876:16:20"},"id":2977,"nodeType":"InheritanceSpecifier","src":"876:16:20"},{"baseName":{"id":2978,"name":"ReentrancyGuardUpgradeable","nameLocations":["899:26:20"],"nodeType":"IdentifierPath","referencedDeclaration":1598,"src":"899:26:20"},"id":2979,"nodeType":"InheritanceSpecifier","src":"899:26:20"},{"baseName":{"id":2980,"name":"PausableUpgradeable","nameLocations":["932:19:20"],"nodeType":"IdentifierPath","referencedDeclaration":1469,"src":"932:19:20"},"id":2981,"nodeType":"InheritanceSpecifier","src":"932:19:20"},{"baseName":{"id":2982,"name":"IBaluniV1YearnVault","nameLocations":["958:19:20"],"nodeType":"IdentifierPath","referencedDeclaration":2881,"src":"958:19:20"},"id":2983,"nodeType":"InheritanceSpecifier","src":"958:19:20"}],"canonicalName":"BaluniV1YearnVault","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":4314,"linearizedBaseContracts":[4314,2881,1469,1598,1247,1650,2162,2136,194,1293,630,1608,448],"name":"BaluniV1YearnVault","nameLocation":"782:18:20","nodeType":"ContractDefinition","nodes":[{"baseFunctions":[2822],"constant":false,"functionSelector":"cdf456e1","id":2985,"mutability":"mutable","name":"baseAsset","nameLocation":"1001:9:20","nodeType":"VariableDeclaration","scope":4314,"src":"986:24:20","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2984,"name":"address","nodeType":"ElementaryTypeName","src":"986:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"constant":false,"id":2988,"mutability":"mutable","name":"_yearnVault","nameLocation":"1037:11:20","nodeType":"VariableDeclaration","scope":4314,"src":"1017:31:20","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IYearnVault_$2956","typeString":"contract IYearnVault"},"typeName":{"id":2987,"nodeType":"UserDefinedTypeName","pathNode":{"id":2986,"name":"IYearnVault","nameLocations":["1017:11:20"],"nodeType":"IdentifierPath","referencedDeclaration":2956,"src":"1017:11:20"},"referencedDeclaration":2956,"src":"1017:11:20","typeDescriptions":{"typeIdentifier":"t_contract$_IYearnVault_$2956","typeString":"contract IYearnVault"}},"visibility":"private"},{"baseFunctions":[2832],"constant":false,"functionSelector":"fdf262b7","id":2990,"mutability":"mutable","name":"quoteAsset","nameLocation":"1070:10:20","nodeType":"VariableDeclaration","scope":4314,"src":"1055:25:20","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2989,"name":"address","nodeType":"ElementaryTypeName","src":"1055:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"constant":false,"id":2993,"mutability":"mutable","name":"_registry","nameLocation":"1113:9:20","nodeType":"VariableDeclaration","scope":4314,"src":"1087:35:20","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$2784","typeString":"contract IBaluniV1Registry"},"typeName":{"id":2992,"nodeType":"UserDefinedTypeName","pathNode":{"id":2991,"name":"IBaluniV1Registry","nameLocations":["1087:17:20"],"nodeType":"IdentifierPath","referencedDeclaration":2784,"src":"1087:17:20"},"referencedDeclaration":2784,"src":"1087:17:20","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$2784","typeString":"contract IBaluniV1Registry"}},"visibility":"private"},{"constant":false,"functionSelector":"f7fde10f","id":2995,"mutability":"mutable","name":"accumulatedAssetB","nameLocation":"1146:17:20","nodeType":"VariableDeclaration","scope":4314,"src":"1131:32:20","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2994,"name":"uint256","nodeType":"ElementaryTypeName","src":"1131:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"baseFunctions":[2842],"constant":false,"functionSelector":"36b77107","id":2997,"mutability":"mutable","name":"lastDeposit","nameLocation":"1185:11:20","nodeType":"VariableDeclaration","scope":4314,"src":"1170:26:20","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2996,"name":"uint256","nodeType":"ElementaryTypeName","src":"1170:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"constant":false,"functionSelector":"6560bc80","id":2999,"mutability":"mutable","name":"allTimeInterest","nameLocation":"1218:15:20","nodeType":"VariableDeclaration","scope":4314,"src":"1203:30:20","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2998,"name":"uint256","nodeType":"ElementaryTypeName","src":"1203:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"anonymous":false,"eventSelector":"1cbc5ab135991bd2b6a4b034a04aa2aa086dac1371cb9b16b8b5e2ed6b036bed","id":3007,"name":"Buy","nameLocation":"1248:3:20","nodeType":"EventDefinition","parameters":{"id":3006,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3001,"indexed":true,"mutability":"mutable","name":"sender","nameLocation":"1268:6:20","nodeType":"VariableDeclaration","scope":3007,"src":"1252:22:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3000,"name":"address","nodeType":"ElementaryTypeName","src":"1252:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3003,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"1284:6:20","nodeType":"VariableDeclaration","scope":3007,"src":"1276:14:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3002,"name":"uint256","nodeType":"ElementaryTypeName","src":"1276:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3005,"indexed":false,"mutability":"mutable","name":"interest","nameLocation":"1300:8:20","nodeType":"VariableDeclaration","scope":3007,"src":"1292:16:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3004,"name":"uint256","nodeType":"ElementaryTypeName","src":"1292:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1251:58:20"},"src":"1242:68:20"},{"body":{"id":3096,"nodeType":"Block","src":"1552:585:20","statements":[{"expression":{"arguments":[{"expression":{"id":3025,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1578:3:20","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3026,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1582:6:20","memberName":"sender","nodeType":"MemberAccess","src":"1578:10:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3024,"name":"__Ownable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54,"src":"1563:14:20","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":3027,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1563:26:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3028,"nodeType":"ExpressionStatement","src":"1563:26:20"},{"expression":{"arguments":[{"id":3030,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3009,"src":"1613:5:20","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":3031,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3011,"src":"1620:7:20","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":3029,"name":"__ERC20_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":698,"src":"1600:12:20","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":3032,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1600:28:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3033,"nodeType":"ExpressionStatement","src":"1600:28:20"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":3034,"name":"__UUPSUpgradeable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":502,"src":"1639:22:20","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":3035,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1639:24:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3036,"nodeType":"ExpressionStatement","src":"1639:24:20"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":3037,"name":"__ReentrancyGuard_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1509,"src":"1674:22:20","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":3038,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1674:24:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3039,"nodeType":"ExpressionStatement","src":"1674:24:20"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":3040,"name":"__Pausable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1345,"src":"1709:15:20","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":3041,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1709:17:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3042,"nodeType":"ExpressionStatement","src":"1709:17:20"},{"expression":{"id":3045,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3043,"name":"baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2985,"src":"1739:9:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3044,"name":"_assetA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3013,"src":"1751:7:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1739:19:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3046,"nodeType":"ExpressionStatement","src":"1739:19:20"},{"expression":{"id":3051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3047,"name":"_yearnVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2988,"src":"1769:11:20","typeDescriptions":{"typeIdentifier":"t_contract$_IYearnVault_$2956","typeString":"contract IYearnVault"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3049,"name":"_yearnVaultAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3015,"src":"1795:18:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3048,"name":"IYearnVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2956,"src":"1783:11:20","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IYearnVault_$2956_$","typeString":"type(contract IYearnVault)"}},"id":3050,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1783:31:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IYearnVault_$2956","typeString":"contract IYearnVault"}},"src":"1769:45:20","typeDescriptions":{"typeIdentifier":"t_contract$_IYearnVault_$2956","typeString":"contract IYearnVault"}},"id":3052,"nodeType":"ExpressionStatement","src":"1769:45:20"},{"expression":{"id":3055,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3053,"name":"quoteAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2990,"src":"1825:10:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3054,"name":"_assetB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3017,"src":"1838:7:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1825:20:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3056,"nodeType":"ExpressionStatement","src":"1825:20:20"},{"expression":{"id":3061,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3057,"name":"_registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2993,"src":"1856:9:20","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$2784","typeString":"contract IBaluniV1Registry"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3059,"name":"_registryAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3019,"src":"1886:16:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3058,"name":"IBaluniV1Registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2784,"src":"1868:17:20","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaluniV1Registry_$2784_$","typeString":"type(contract IBaluniV1Registry)"}},"id":3060,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1868:35:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$2784","typeString":"contract IBaluniV1Registry"}},"src":"1856:47:20","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$2784","typeString":"contract IBaluniV1Registry"}},"id":3062,"nodeType":"ExpressionStatement","src":"1856:47:20"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3069,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3064,"name":"baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2985,"src":"1924:9:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":3067,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1945:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3066,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1937:7:20","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3065,"name":"address","nodeType":"ElementaryTypeName","src":"1937:7:20","typeDescriptions":{}}},"id":3068,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1937:10:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1924:23:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e76616c6964206173736574412061646472657373","id":3070,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1949:24:20","typeDescriptions":{"typeIdentifier":"t_stringliteral_f9fc9be991fb15edd8b6c78e603f09bcc597989ed5b6a9e284f87c92e42b3b89","typeString":"literal_string \"Invalid assetA address\""},"value":"Invalid assetA address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f9fc9be991fb15edd8b6c78e603f09bcc597989ed5b6a9e284f87c92e42b3b89","typeString":"literal_string \"Invalid assetA address\""}],"id":3063,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1916:7:20","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3071,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1916:58:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3072,"nodeType":"ExpressionStatement","src":"1916:58:20"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3082,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":3076,"name":"_yearnVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2988,"src":"2001:11:20","typeDescriptions":{"typeIdentifier":"t_contract$_IYearnVault_$2956","typeString":"contract IYearnVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IYearnVault_$2956","typeString":"contract IYearnVault"}],"id":3075,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1993:7:20","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3074,"name":"address","nodeType":"ElementaryTypeName","src":"1993:7:20","typeDescriptions":{}}},"id":3077,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1993:20:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":3080,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2025:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3079,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2017:7:20","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3078,"name":"address","nodeType":"ElementaryTypeName","src":"2017:7:20","typeDescriptions":{}}},"id":3081,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2017:10:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1993:34:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e76616c696420596561726e205661756c742061646472657373","id":3083,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2029:29:20","typeDescriptions":{"typeIdentifier":"t_stringliteral_89141ec2c606ec003f6f5f1768c23192e8ad9a256043aab9d456c1693f9c79ae","typeString":"literal_string \"Invalid Yearn Vault address\""},"value":"Invalid Yearn Vault address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_89141ec2c606ec003f6f5f1768c23192e8ad9a256043aab9d456c1693f9c79ae","typeString":"literal_string \"Invalid Yearn Vault address\""}],"id":3073,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1985:7:20","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3084,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1985:74:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3085,"nodeType":"ExpressionStatement","src":"1985:74:20"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3092,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3087,"name":"quoteAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2990,"src":"2078:10:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":3090,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2100:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3089,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2092:7:20","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3088,"name":"address","nodeType":"ElementaryTypeName","src":"2092:7:20","typeDescriptions":{}}},"id":3091,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2092:10:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2078:24:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e76616c6964206173736574422061646472657373","id":3093,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2104:24:20","typeDescriptions":{"typeIdentifier":"t_stringliteral_53fb86809bff5dc62f76bc95bbc7b572a1cc94bf1175d9568e8046d7847ef4ec","typeString":"literal_string \"Invalid assetB address\""},"value":"Invalid assetB address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_53fb86809bff5dc62f76bc95bbc7b572a1cc94bf1175d9568e8046d7847ef4ec","typeString":"literal_string \"Invalid assetB address\""}],"id":3086,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2070:7:20","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3094,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2070:59:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3095,"nodeType":"ExpressionStatement","src":"2070:59:20"}]},"functionSelector":"e56f2fe4","id":3097,"implemented":true,"kind":"function","modifiers":[{"id":3022,"kind":"modifierInvocation","modifierName":{"id":3021,"name":"initializer","nameLocations":["1540:11:20"],"nodeType":"IdentifierPath","referencedDeclaration":302,"src":"1540:11:20"},"nodeType":"ModifierInvocation","src":"1540:11:20"}],"name":"initialize","nameLocation":"1327:10:20","nodeType":"FunctionDefinition","parameters":{"id":3020,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3009,"mutability":"mutable","name":"_name","nameLocation":"1362:5:20","nodeType":"VariableDeclaration","scope":3097,"src":"1348:19:20","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":3008,"name":"string","nodeType":"ElementaryTypeName","src":"1348:6:20","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":3011,"mutability":"mutable","name":"_symbol","nameLocation":"1392:7:20","nodeType":"VariableDeclaration","scope":3097,"src":"1378:21:20","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":3010,"name":"string","nodeType":"ElementaryTypeName","src":"1378:6:20","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":3013,"mutability":"mutable","name":"_assetA","nameLocation":"1418:7:20","nodeType":"VariableDeclaration","scope":3097,"src":"1410:15:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3012,"name":"address","nodeType":"ElementaryTypeName","src":"1410:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3015,"mutability":"mutable","name":"_yearnVaultAddress","nameLocation":"1444:18:20","nodeType":"VariableDeclaration","scope":3097,"src":"1436:26:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3014,"name":"address","nodeType":"ElementaryTypeName","src":"1436:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3017,"mutability":"mutable","name":"_assetB","nameLocation":"1481:7:20","nodeType":"VariableDeclaration","scope":3097,"src":"1473:15:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3016,"name":"address","nodeType":"ElementaryTypeName","src":"1473:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3019,"mutability":"mutable","name":"_registryAddress","nameLocation":"1507:16:20","nodeType":"VariableDeclaration","scope":3097,"src":"1499:24:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3018,"name":"address","nodeType":"ElementaryTypeName","src":"1499:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1337:193:20"},"returnParameters":{"id":3023,"nodeType":"ParameterList","parameters":[],"src":"1552:0:20"},"scope":4314,"src":"1318:819:20","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":3189,"nodeType":"Block","src":"2419:585:20","statements":[{"expression":{"arguments":[{"expression":{"id":3118,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2445:3:20","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3119,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2449:6:20","memberName":"sender","nodeType":"MemberAccess","src":"2445:10:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3117,"name":"__Ownable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54,"src":"2430:14:20","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":3120,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2430:26:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3121,"nodeType":"ExpressionStatement","src":"2430:26:20"},{"expression":{"arguments":[{"id":3123,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3099,"src":"2480:5:20","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":3124,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3101,"src":"2487:7:20","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":3122,"name":"__ERC20_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":698,"src":"2467:12:20","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":3125,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2467:28:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3126,"nodeType":"ExpressionStatement","src":"2467:28:20"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":3127,"name":"__UUPSUpgradeable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":502,"src":"2506:22:20","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":3128,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2506:24:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3129,"nodeType":"ExpressionStatement","src":"2506:24:20"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":3130,"name":"__ReentrancyGuard_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1509,"src":"2541:22:20","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":3131,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2541:24:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3132,"nodeType":"ExpressionStatement","src":"2541:24:20"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":3133,"name":"__Pausable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1345,"src":"2576:15:20","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":3134,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2576:17:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3135,"nodeType":"ExpressionStatement","src":"2576:17:20"},{"expression":{"id":3138,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3136,"name":"baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2985,"src":"2606:9:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3137,"name":"_assetA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3103,"src":"2618:7:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2606:19:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3139,"nodeType":"ExpressionStatement","src":"2606:19:20"},{"expression":{"id":3144,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3140,"name":"_yearnVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2988,"src":"2636:11:20","typeDescriptions":{"typeIdentifier":"t_contract$_IYearnVault_$2956","typeString":"contract IYearnVault"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3142,"name":"_yearnVaultAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3105,"src":"2662:18:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3141,"name":"IYearnVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2956,"src":"2650:11:20","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IYearnVault_$2956_$","typeString":"type(contract IYearnVault)"}},"id":3143,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2650:31:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IYearnVault_$2956","typeString":"contract IYearnVault"}},"src":"2636:45:20","typeDescriptions":{"typeIdentifier":"t_contract$_IYearnVault_$2956","typeString":"contract IYearnVault"}},"id":3145,"nodeType":"ExpressionStatement","src":"2636:45:20"},{"expression":{"id":3148,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3146,"name":"quoteAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2990,"src":"2692:10:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3147,"name":"_assetB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3107,"src":"2705:7:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2692:20:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3149,"nodeType":"ExpressionStatement","src":"2692:20:20"},{"expression":{"id":3154,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3150,"name":"_registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2993,"src":"2723:9:20","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$2784","typeString":"contract IBaluniV1Registry"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3152,"name":"_registryAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3109,"src":"2753:16:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3151,"name":"IBaluniV1Registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2784,"src":"2735:17:20","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaluniV1Registry_$2784_$","typeString":"type(contract IBaluniV1Registry)"}},"id":3153,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2735:35:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$2784","typeString":"contract IBaluniV1Registry"}},"src":"2723:47:20","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$2784","typeString":"contract IBaluniV1Registry"}},"id":3155,"nodeType":"ExpressionStatement","src":"2723:47:20"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3157,"name":"baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2985,"src":"2791:9:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":3160,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2812:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3159,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2804:7:20","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3158,"name":"address","nodeType":"ElementaryTypeName","src":"2804:7:20","typeDescriptions":{}}},"id":3161,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2804:10:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2791:23:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e76616c6964206173736574412061646472657373","id":3163,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2816:24:20","typeDescriptions":{"typeIdentifier":"t_stringliteral_f9fc9be991fb15edd8b6c78e603f09bcc597989ed5b6a9e284f87c92e42b3b89","typeString":"literal_string \"Invalid assetA address\""},"value":"Invalid assetA address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f9fc9be991fb15edd8b6c78e603f09bcc597989ed5b6a9e284f87c92e42b3b89","typeString":"literal_string \"Invalid assetA address\""}],"id":3156,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2783:7:20","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3164,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2783:58:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3165,"nodeType":"ExpressionStatement","src":"2783:58:20"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3175,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":3169,"name":"_yearnVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2988,"src":"2868:11:20","typeDescriptions":{"typeIdentifier":"t_contract$_IYearnVault_$2956","typeString":"contract IYearnVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IYearnVault_$2956","typeString":"contract IYearnVault"}],"id":3168,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2860:7:20","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3167,"name":"address","nodeType":"ElementaryTypeName","src":"2860:7:20","typeDescriptions":{}}},"id":3170,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2860:20:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":3173,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2892:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3172,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2884:7:20","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3171,"name":"address","nodeType":"ElementaryTypeName","src":"2884:7:20","typeDescriptions":{}}},"id":3174,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2884:10:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2860:34:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e76616c696420596561726e205661756c742061646472657373","id":3176,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2896:29:20","typeDescriptions":{"typeIdentifier":"t_stringliteral_89141ec2c606ec003f6f5f1768c23192e8ad9a256043aab9d456c1693f9c79ae","typeString":"literal_string \"Invalid Yearn Vault address\""},"value":"Invalid Yearn Vault address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_89141ec2c606ec003f6f5f1768c23192e8ad9a256043aab9d456c1693f9c79ae","typeString":"literal_string \"Invalid Yearn Vault address\""}],"id":3166,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2852:7:20","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3177,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2852:74:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3178,"nodeType":"ExpressionStatement","src":"2852:74:20"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3185,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3180,"name":"quoteAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2990,"src":"2945:10:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":3183,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2967:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3182,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2959:7:20","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3181,"name":"address","nodeType":"ElementaryTypeName","src":"2959:7:20","typeDescriptions":{}}},"id":3184,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2959:10:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2945:24:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e76616c6964206173736574422061646472657373","id":3186,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2971:24:20","typeDescriptions":{"typeIdentifier":"t_stringliteral_53fb86809bff5dc62f76bc95bbc7b572a1cc94bf1175d9568e8046d7847ef4ec","typeString":"literal_string \"Invalid assetB address\""},"value":"Invalid assetB address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_53fb86809bff5dc62f76bc95bbc7b572a1cc94bf1175d9568e8046d7847ef4ec","typeString":"literal_string \"Invalid assetB address\""}],"id":3179,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2937:7:20","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3187,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2937:59:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3188,"nodeType":"ExpressionStatement","src":"2937:59:20"}]},"functionSelector":"88696f62","id":3190,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":3114,"name":"_version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3111,"src":"2409:8:20","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"id":3115,"kind":"modifierInvocation","modifierName":{"id":3113,"name":"reinitializer","nameLocations":["2395:13:20"],"nodeType":"IdentifierPath","referencedDeclaration":349,"src":"2395:13:20"},"nodeType":"ModifierInvocation","src":"2395:23:20"}],"name":"reinitialize","nameLocation":"2154:12:20","nodeType":"FunctionDefinition","parameters":{"id":3112,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3099,"mutability":"mutable","name":"_name","nameLocation":"2191:5:20","nodeType":"VariableDeclaration","scope":3190,"src":"2177:19:20","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":3098,"name":"string","nodeType":"ElementaryTypeName","src":"2177:6:20","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":3101,"mutability":"mutable","name":"_symbol","nameLocation":"2221:7:20","nodeType":"VariableDeclaration","scope":3190,"src":"2207:21:20","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":3100,"name":"string","nodeType":"ElementaryTypeName","src":"2207:6:20","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":3103,"mutability":"mutable","name":"_assetA","nameLocation":"2247:7:20","nodeType":"VariableDeclaration","scope":3190,"src":"2239:15:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3102,"name":"address","nodeType":"ElementaryTypeName","src":"2239:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3105,"mutability":"mutable","name":"_yearnVaultAddress","nameLocation":"2273:18:20","nodeType":"VariableDeclaration","scope":3190,"src":"2265:26:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3104,"name":"address","nodeType":"ElementaryTypeName","src":"2265:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3107,"mutability":"mutable","name":"_assetB","nameLocation":"2310:7:20","nodeType":"VariableDeclaration","scope":3190,"src":"2302:15:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3106,"name":"address","nodeType":"ElementaryTypeName","src":"2302:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3109,"mutability":"mutable","name":"_registryAddress","nameLocation":"2336:16:20","nodeType":"VariableDeclaration","scope":3190,"src":"2328:24:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3108,"name":"address","nodeType":"ElementaryTypeName","src":"2328:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3111,"mutability":"mutable","name":"_version","nameLocation":"2370:8:20","nodeType":"VariableDeclaration","scope":3190,"src":"2363:15:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":3110,"name":"uint64","nodeType":"ElementaryTypeName","src":"2363:6:20","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"2166:219:20"},"returnParameters":{"id":3116,"nodeType":"ParameterList","parameters":[],"src":"2419:0:20"},"scope":4314,"src":"2145:859:20","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[584],"body":{"id":3198,"nodeType":"Block","src":"3094:2:20","statements":[]},"id":3199,"implemented":true,"kind":"function","modifiers":[{"id":3196,"kind":"modifierInvocation","modifierName":{"id":3195,"name":"onlyOwner","nameLocations":["3084:9:20"],"nodeType":"IdentifierPath","referencedDeclaration":89,"src":"3084:9:20"},"nodeType":"ModifierInvocation","src":"3084:9:20"}],"name":"_authorizeUpgrade","nameLocation":"3021:17:20","nodeType":"FunctionDefinition","overrides":{"id":3194,"nodeType":"OverrideSpecifier","overrides":[],"src":"3075:8:20"},"parameters":{"id":3193,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3192,"mutability":"mutable","name":"newImplementation","nameLocation":"3047:17:20","nodeType":"VariableDeclaration","scope":3199,"src":"3039:25:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3191,"name":"address","nodeType":"ElementaryTypeName","src":"3039:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3038:27:20"},"returnParameters":{"id":3197,"nodeType":"ParameterList","parameters":[],"src":"3094:0:20"},"scope":4314,"src":"3012:84:20","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[2849],"body":{"id":3391,"nodeType":"Block","src":"3194:1354:20","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3214,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3212,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3201,"src":"3213:6:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3213,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3222:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3213:10:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416d6f756e74206d7573742062652067726561746572207468616e207a65726f","id":3215,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3225:34:20","typeDescriptions":{"typeIdentifier":"t_stringliteral_335ff2e4b249975444723ab3dc1716db90a7dff95cbce35a34ad25055762f887","typeString":"literal_string \"Amount must be greater than zero\""},"value":"Amount must be greater than zero"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_335ff2e4b249975444723ab3dc1716db90a7dff95cbce35a34ad25055762f887","typeString":"literal_string \"Amount must be greater than zero\""}],"id":3211,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3205:7:20","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3216,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3205:55:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3217,"nodeType":"ExpressionStatement","src":"3205:55:20"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":3218,"name":"_processInterest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3574,"src":"3273:16:20","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":3219,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3273:18:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3220,"nodeType":"ExpressionStatement","src":"3273:18:20"},{"expression":{"arguments":[{"expression":{"id":3225,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3335:3:20","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3226,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3339:6:20","memberName":"sender","nodeType":"MemberAccess","src":"3335:10:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":3229,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3355:4:20","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1YearnVault_$4314","typeString":"contract BaluniV1YearnVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1YearnVault_$4314","typeString":"contract BaluniV1YearnVault"}],"id":3228,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3347:7:20","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3227,"name":"address","nodeType":"ElementaryTypeName","src":"3347:7:20","typeDescriptions":{}}},"id":3230,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3347:13:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3231,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3201,"src":"3362:6:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":3222,"name":"baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2985,"src":"3311:9:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3221,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"3304:6:20","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2136_$","typeString":"type(contract IERC20)"}},"id":3223,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3304:17:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2136","typeString":"contract IERC20"}},"id":3224,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3322:12:20","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":2135,"src":"3304:30:20","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":3232,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3304:65:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3233,"nodeType":"ExpressionStatement","src":"3304:65:20"},{"assignments":[3235],"declarations":[{"constant":false,"id":3235,"mutability":"mutable","name":"baluniRouter","nameLocation":"3390:12:20","nodeType":"VariableDeclaration","scope":3391,"src":"3382:20:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3234,"name":"address","nodeType":"ElementaryTypeName","src":"3382:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":3239,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":3236,"name":"_registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2993,"src":"3405:9:20","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$2784","typeString":"contract IBaluniV1Registry"}},"id":3237,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3415:15:20","memberName":"getBaluniRouter","nodeType":"MemberAccess","referencedDeclaration":2713,"src":"3405:25:20","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":3238,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3405:27:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"3382:50:20"},{"assignments":[3241],"declarations":[{"constant":false,"id":3241,"mutability":"mutable","name":"treasury","nameLocation":"3451:8:20","nodeType":"VariableDeclaration","scope":3391,"src":"3443:16:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3240,"name":"address","nodeType":"ElementaryTypeName","src":"3443:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":3245,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":3242,"name":"_registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2993,"src":"3462:9:20","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$2784","typeString":"contract IBaluniV1Registry"}},"id":3243,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3472:11:20","memberName":"getTreasury","nodeType":"MemberAccess","referencedDeclaration":2758,"src":"3462:21:20","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":3244,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3462:23:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"3443:42:20"},{"assignments":[3247],"declarations":[{"constant":false,"id":3247,"mutability":"mutable","name":"hairCut","nameLocation":"3503:7:20","nodeType":"VariableDeclaration","scope":3391,"src":"3498:12:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3246,"name":"uint","nodeType":"ElementaryTypeName","src":"3498:4:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3251,"initialValue":{"arguments":[{"id":3249,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3201,"src":"3522:6:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3248,"name":"_haircut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3806,"src":"3513:8:20","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":3250,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3513:16:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3498:31:20"},{"assignments":[3253],"declarations":[{"constant":false,"id":3253,"mutability":"mutable","name":"hairCut2","nameLocation":"3545:8:20","nodeType":"VariableDeclaration","scope":3391,"src":"3540:13:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3252,"name":"uint","nodeType":"ElementaryTypeName","src":"3540:4:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3257,"initialValue":{"arguments":[{"id":3255,"name":"hairCut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3247,"src":"3565:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3254,"name":"_haircut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3806,"src":"3556:8:20","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":3256,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3556:17:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3540:33:20"},{"expression":{"arguments":[{"id":3262,"name":"baluniRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3235,"src":"3613:12:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3265,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3263,"name":"hairCut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3247,"src":"3627:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":3264,"name":"hairCut2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3253,"src":"3637:8:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3627:18:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":3259,"name":"baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2985,"src":"3593:9:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3258,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"3586:6:20","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2136_$","typeString":"type(contract IERC20)"}},"id":3260,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3586:17:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2136","typeString":"contract IERC20"}},"id":3261,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3604:8:20","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":2103,"src":"3586:26:20","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":3266,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3586:60:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3267,"nodeType":"ExpressionStatement","src":"3586:60:20"},{"expression":{"arguments":[{"id":3272,"name":"treasury","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3241,"src":"3684:8:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3273,"name":"hairCut2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3253,"src":"3694:8:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":3269,"name":"baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2985,"src":"3664:9:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3268,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"3657:6:20","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2136_$","typeString":"type(contract IERC20)"}},"id":3270,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3657:17:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2136","typeString":"contract IERC20"}},"id":3271,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3675:8:20","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":2103,"src":"3657:26:20","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":3274,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3657:46:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3275,"nodeType":"ExpressionStatement","src":"3657:46:20"},{"assignments":[3277],"declarations":[{"constant":false,"id":3277,"mutability":"mutable","name":"amountAfter","nameLocation":"3724:11:20","nodeType":"VariableDeclaration","scope":3391,"src":"3716:19:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3276,"name":"uint256","nodeType":"ElementaryTypeName","src":"3716:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3281,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3280,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3278,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3201,"src":"3738:6:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":3279,"name":"hairCut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3247,"src":"3747:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3738:16:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3716:38:20"},{"expression":{"arguments":[{"arguments":[{"id":3288,"name":"_yearnVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2988,"src":"3801:11:20","typeDescriptions":{"typeIdentifier":"t_contract$_IYearnVault_$2956","typeString":"contract IYearnVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IYearnVault_$2956","typeString":"contract IYearnVault"}],"id":3287,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3793:7:20","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3286,"name":"address","nodeType":"ElementaryTypeName","src":"3793:7:20","typeDescriptions":{}}},"id":3289,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3793:20:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3290,"name":"amountAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3277,"src":"3815:11:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":3283,"name":"baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2985,"src":"3774:9:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3282,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"3767:6:20","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2136_$","typeString":"type(contract IERC20)"}},"id":3284,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3767:17:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2136","typeString":"contract IERC20"}},"id":3285,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3785:7:20","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":2123,"src":"3767:25:20","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":3291,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3767:60:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3292,"nodeType":"ExpressionStatement","src":"3767:60:20"},{"expression":{"arguments":[{"id":3296,"name":"amountAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3277,"src":"3858:11:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":3299,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3879:4:20","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1YearnVault_$4314","typeString":"contract BaluniV1YearnVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1YearnVault_$4314","typeString":"contract BaluniV1YearnVault"}],"id":3298,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3871:7:20","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3297,"name":"address","nodeType":"ElementaryTypeName","src":"3871:7:20","typeDescriptions":{}}},"id":3300,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3871:13:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":3293,"name":"_yearnVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2988,"src":"3838:11:20","typeDescriptions":{"typeIdentifier":"t_contract$_IYearnVault_$2956","typeString":"contract IYearnVault"}},"id":3295,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3850:7:20","memberName":"deposit","nodeType":"MemberAccess","referencedDeclaration":2922,"src":"3838:19:20","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$_t_address_$returns$_t_uint256_$","typeString":"function (uint256,address) external returns (uint256)"}},"id":3301,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3838:47:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3302,"nodeType":"ExpressionStatement","src":"3838:47:20"},{"assignments":[3304],"declarations":[{"constant":false,"id":3304,"mutability":"mutable","name":"baseDecimal","nameLocation":"3904:11:20","nodeType":"VariableDeclaration","scope":3391,"src":"3898:17:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":3303,"name":"uint8","nodeType":"ElementaryTypeName","src":"3898:5:20","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":3310,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":3306,"name":"baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2985,"src":"3933:9:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3305,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2162,"src":"3918:14:20","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$2162_$","typeString":"type(contract IERC20Metadata)"}},"id":3307,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3918:25:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$2162","typeString":"contract IERC20Metadata"}},"id":3308,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3944:8:20","memberName":"decimals","nodeType":"MemberAccess","referencedDeclaration":2161,"src":"3918:34:20","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint8_$","typeString":"function () view external returns (uint8)"}},"id":3309,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3918:36:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"3898:56:20"},{"assignments":[3312],"declarations":[{"constant":false,"id":3312,"mutability":"mutable","name":"yearnDecimal","nameLocation":"3971:12:20","nodeType":"VariableDeclaration","scope":3391,"src":"3965:18:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":3311,"name":"uint8","nodeType":"ElementaryTypeName","src":"3965:5:20","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":3321,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"arguments":[{"id":3316,"name":"_yearnVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2988,"src":"4009:11:20","typeDescriptions":{"typeIdentifier":"t_contract$_IYearnVault_$2956","typeString":"contract IYearnVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IYearnVault_$2956","typeString":"contract IYearnVault"}],"id":3315,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4001:7:20","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3314,"name":"address","nodeType":"ElementaryTypeName","src":"4001:7:20","typeDescriptions":{}}},"id":3317,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4001:20:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3313,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2162,"src":"3986:14:20","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$2162_$","typeString":"type(contract IERC20Metadata)"}},"id":3318,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3986:36:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$2162","typeString":"contract IERC20Metadata"}},"id":3319,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4023:8:20","memberName":"decimals","nodeType":"MemberAccess","referencedDeclaration":2161,"src":"3986:45:20","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint8_$","typeString":"function () view external returns (uint8)"}},"id":3320,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3986:47:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"3965:68:20"},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":3324,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3322,"name":"baseDecimal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3304,"src":"4050:11:20","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":3323,"name":"yearnDecimal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3312,"src":"4064:12:20","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"4050:26:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":3348,"nodeType":"Block","src":"4173:89:20","statements":[{"expression":{"id":3346,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3337,"name":"amountAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3277,"src":"4188:11:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3345,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3338,"name":"amountAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3277,"src":"4202:11:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3344,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":3339,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4216:2:20","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":3342,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3340,"name":"yearnDecimal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3312,"src":"4223:12:20","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":3341,"name":"baseDecimal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3304,"src":"4238:11:20","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"4223:26:20","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":3343,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4222:28:20","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"4216:34:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4202:48:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4188:62:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3347,"nodeType":"ExpressionStatement","src":"4188:62:20"}]},"id":3349,"nodeType":"IfStatement","src":"4046:216:20","trueBody":{"id":3336,"nodeType":"Block","src":"4078:89:20","statements":[{"expression":{"id":3334,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3325,"name":"amountAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3277,"src":"4093:11:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3333,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3326,"name":"amountAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3277,"src":"4107:11:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3332,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":3327,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4121:2:20","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":3330,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3328,"name":"baseDecimal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3304,"src":"4128:11:20","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":3329,"name":"yearnDecimal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3312,"src":"4142:12:20","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"4128:26:20","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":3331,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4127:28:20","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"4121:34:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4107:48:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4093:62:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3335,"nodeType":"ExpressionStatement","src":"4093:62:20"}]}},{"assignments":[3351],"declarations":[{"constant":false,"id":3351,"mutability":"mutable","name":"amountScaled","nameLocation":"4282:12:20","nodeType":"VariableDeclaration","scope":3391,"src":"4274:20:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3350,"name":"uint256","nodeType":"ElementaryTypeName","src":"4274:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3360,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3359,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3352,"name":"amountAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3277,"src":"4297:11:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3358,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":3353,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4311:2:20","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":3356,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3138","id":3354,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4318:2:20","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":3355,"name":"yearnDecimal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3312,"src":"4323:12:20","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"4318:17:20","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":3357,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4317:19:20","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"4311:25:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4297:39:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4274:62:20"},{"expression":{"arguments":[{"id":3362,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3203,"src":"4355:2:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3363,"name":"amountScaled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3351,"src":"4359:12:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3361,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1079,"src":"4349:5:20","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":3364,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4349:23:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3365,"nodeType":"ExpressionStatement","src":"4349:23:20"},{"expression":{"id":3377,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3366,"name":"lastDeposit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2997,"src":"4385:11:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"arguments":[{"id":3373,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4457:4:20","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1YearnVault_$4314","typeString":"contract BaluniV1YearnVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1YearnVault_$4314","typeString":"contract BaluniV1YearnVault"}],"id":3372,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4449:7:20","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3371,"name":"address","nodeType":"ElementaryTypeName","src":"4449:7:20","typeDescriptions":{}}},"id":3374,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4449:13:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":3369,"name":"_yearnVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2988,"src":"4427:11:20","typeDescriptions":{"typeIdentifier":"t_contract$_IYearnVault_$2956","typeString":"contract IYearnVault"}},"id":3370,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4439:9:20","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":2895,"src":"4427:21:20","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":3375,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4427:36:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3367,"name":"_yearnVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2988,"src":"4399:11:20","typeDescriptions":{"typeIdentifier":"t_contract$_IYearnVault_$2956","typeString":"contract IYearnVault"}},"id":3368,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4411:15:20","memberName":"convertToAssets","nodeType":"MemberAccess","referencedDeclaration":2934,"src":"4399:27:20","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view external returns (uint256)"}},"id":3376,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4399:65:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4385:79:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3378,"nodeType":"ExpressionStatement","src":"4385:79:20"},{"expression":{"id":3389,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3379,"name":"accumulatedAssetB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2995,"src":"4477:17:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":3386,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4534:4:20","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1YearnVault_$4314","typeString":"contract BaluniV1YearnVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1YearnVault_$4314","typeString":"contract BaluniV1YearnVault"}],"id":3385,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4526:7:20","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3384,"name":"address","nodeType":"ElementaryTypeName","src":"4526:7:20","typeDescriptions":{}}},"id":3387,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4526:13:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":3381,"name":"quoteAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2990,"src":"4504:10:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3380,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"4497:6:20","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2136_$","typeString":"type(contract IERC20)"}},"id":3382,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4497:18:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2136","typeString":"contract IERC20"}},"id":3383,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4516:9:20","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":2093,"src":"4497:28:20","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":3388,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4497:43:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4477:63:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3390,"nodeType":"ExpressionStatement","src":"4477:63:20"}]},"functionSelector":"6e553f65","id":3392,"implemented":true,"kind":"function","modifiers":[{"id":3207,"kind":"modifierInvocation","modifierName":{"id":3206,"name":"nonReentrant","nameLocations":["3167:12:20"],"nodeType":"IdentifierPath","referencedDeclaration":1538,"src":"3167:12:20"},"nodeType":"ModifierInvocation","src":"3167:12:20"},{"id":3209,"kind":"modifierInvocation","modifierName":{"id":3208,"name":"whenNotPaused","nameLocations":["3180:13:20"],"nodeType":"IdentifierPath","referencedDeclaration":1371,"src":"3180:13:20"},"nodeType":"ModifierInvocation","src":"3180:13:20"}],"name":"deposit","nameLocation":"3113:7:20","nodeType":"FunctionDefinition","overrides":{"id":3205,"nodeType":"OverrideSpecifier","overrides":[],"src":"3158:8:20"},"parameters":{"id":3204,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3201,"mutability":"mutable","name":"amount","nameLocation":"3129:6:20","nodeType":"VariableDeclaration","scope":3392,"src":"3121:14:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3200,"name":"uint256","nodeType":"ElementaryTypeName","src":"3121:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3203,"mutability":"mutable","name":"to","nameLocation":"3145:2:20","nodeType":"VariableDeclaration","scope":3392,"src":"3137:10:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3202,"name":"address","nodeType":"ElementaryTypeName","src":"3137:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3120:28:20"},"returnParameters":{"id":3210,"nodeType":"ParameterList","parameters":[],"src":"3194:0:20"},"scope":4314,"src":"3104:1444:20","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":3494,"nodeType":"Block","src":"4581:791:20","statements":[{"assignments":[3396],"declarations":[{"constant":false,"id":3396,"mutability":"mutable","name":"totalAssets","nameLocation":"4600:11:20","nodeType":"VariableDeclaration","scope":3494,"src":"4592:19:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3395,"name":"uint256","nodeType":"ElementaryTypeName","src":"4592:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3407,"initialValue":{"arguments":[{"arguments":[{"arguments":[{"id":3403,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4672:4:20","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1YearnVault_$4314","typeString":"contract BaluniV1YearnVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1YearnVault_$4314","typeString":"contract BaluniV1YearnVault"}],"id":3402,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4664:7:20","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3401,"name":"address","nodeType":"ElementaryTypeName","src":"4664:7:20","typeDescriptions":{}}},"id":3404,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4664:13:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":3399,"name":"_yearnVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2988,"src":"4642:11:20","typeDescriptions":{"typeIdentifier":"t_contract$_IYearnVault_$2956","typeString":"contract IYearnVault"}},"id":3400,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4654:9:20","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":2895,"src":"4642:21:20","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":3405,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4642:36:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3397,"name":"_yearnVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2988,"src":"4614:11:20","typeDescriptions":{"typeIdentifier":"t_contract$_IYearnVault_$2956","typeString":"contract IYearnVault"}},"id":3398,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4626:15:20","memberName":"convertToAssets","nodeType":"MemberAccess","referencedDeclaration":2934,"src":"4614:27:20","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view external returns (uint256)"}},"id":3406,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4614:65:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4592:87:20"},{"assignments":[3409],"declarations":[{"constant":false,"id":3409,"mutability":"mutable","name":"interest","nameLocation":"4698:8:20","nodeType":"VariableDeclaration","scope":3494,"src":"4690:16:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3408,"name":"uint256","nodeType":"ElementaryTypeName","src":"4690:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3418,"initialValue":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3412,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3410,"name":"totalAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3396,"src":"4709:11:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":3411,"name":"lastDeposit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2997,"src":"4723:11:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4709:25:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":3416,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4765:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":3417,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"4709:57:20","trueExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3415,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3413,"name":"totalAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3396,"src":"4737:11:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":3414,"name":"lastDeposit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2997,"src":"4751:11:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4737:25:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4690:76:20"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3422,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3420,"name":"interest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3409,"src":"4785:8:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3421,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4796:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4785:12:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"42616c756e695631795661756c743a204e6f20696e74657265737420617661696c61626c65","id":3423,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4799:39:20","typeDescriptions":{"typeIdentifier":"t_stringliteral_5a2aae2d17adf319835d1d5e7cf18b37e3e2f2096577dc0ce875faec48f9a25a","typeString":"literal_string \"BaluniV1yVault: No interest available\""},"value":"BaluniV1yVault: No interest available"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5a2aae2d17adf319835d1d5e7cf18b37e3e2f2096577dc0ce875faec48f9a25a","typeString":"literal_string \"BaluniV1yVault: No interest available\""}],"id":3419,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4777:7:20","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3424,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4777:62:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3425,"nodeType":"ExpressionStatement","src":"4777:62:20"},{"assignments":[3427],"declarations":[{"constant":false,"id":3427,"mutability":"mutable","name":"sharesToRedeem","nameLocation":"4860:14:20","nodeType":"VariableDeclaration","scope":3494,"src":"4852:22:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3426,"name":"uint256","nodeType":"ElementaryTypeName","src":"4852:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3432,"initialValue":{"arguments":[{"id":3430,"name":"interest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3409,"src":"4905:8:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3428,"name":"_yearnVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2988,"src":"4877:11:20","typeDescriptions":{"typeIdentifier":"t_contract$_IYearnVault_$2956","typeString":"contract IYearnVault"}},"id":3429,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4889:15:20","memberName":"convertToShares","nodeType":"MemberAccess","referencedDeclaration":2941,"src":"4877:27:20","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view external returns (uint256)"}},"id":3431,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4877:37:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4852:62:20"},{"assignments":[3434],"declarations":[{"constant":false,"id":3434,"mutability":"mutable","name":"amountOut","nameLocation":"4933:9:20","nodeType":"VariableDeclaration","scope":3494,"src":"4925:17:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3433,"name":"uint256","nodeType":"ElementaryTypeName","src":"4925:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3447,"initialValue":{"arguments":[{"id":3437,"name":"sharesToRedeem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3427,"src":"4964:14:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":3440,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4988:4:20","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1YearnVault_$4314","typeString":"contract BaluniV1YearnVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1YearnVault_$4314","typeString":"contract BaluniV1YearnVault"}],"id":3439,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4980:7:20","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3438,"name":"address","nodeType":"ElementaryTypeName","src":"4980:7:20","typeDescriptions":{}}},"id":3441,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4980:13:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":3444,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5003:4:20","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1YearnVault_$4314","typeString":"contract BaluniV1YearnVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1YearnVault_$4314","typeString":"contract BaluniV1YearnVault"}],"id":3443,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4995:7:20","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3442,"name":"address","nodeType":"ElementaryTypeName","src":"4995:7:20","typeDescriptions":{}}},"id":3445,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4995:13:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":3435,"name":"_yearnVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2988,"src":"4945:11:20","typeDescriptions":{"typeIdentifier":"t_contract$_IYearnVault_$2956","typeString":"contract IYearnVault"}},"id":3436,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4957:6:20","memberName":"redeem","nodeType":"MemberAccess","referencedDeclaration":2913,"src":"4945:18:20","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (uint256,address,address) external returns (uint256)"}},"id":3446,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4945:64:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4925:84:20"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3451,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3449,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3434,"src":"5030:9:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3450,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5042:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5030:13:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"42616c756e695631795661756c743a2052656465656d204661696c6564","id":3452,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5045:31:20","typeDescriptions":{"typeIdentifier":"t_stringliteral_df2ebb4d199325e76f7966b4aa783d4644729570ebb2dcefef37eefd936f4949","typeString":"literal_string \"BaluniV1yVault: Redeem Failed\""},"value":"BaluniV1yVault: Redeem Failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_df2ebb4d199325e76f7966b4aa783d4644729570ebb2dcefef37eefd936f4949","typeString":"literal_string \"BaluniV1yVault: Redeem Failed\""}],"id":3448,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5022:7:20","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3453,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5022:55:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3454,"nodeType":"ExpressionStatement","src":"5022:55:20"},{"assignments":[3457],"declarations":[{"constant":false,"id":3457,"mutability":"mutable","name":"swapper","nameLocation":"5107:7:20","nodeType":"VariableDeclaration","scope":3494,"src":"5090:24:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Swapper_$2815","typeString":"contract IBaluniV1Swapper"},"typeName":{"id":3456,"nodeType":"UserDefinedTypeName","pathNode":{"id":3455,"name":"IBaluniV1Swapper","nameLocations":["5090:16:20"],"nodeType":"IdentifierPath","referencedDeclaration":2815,"src":"5090:16:20"},"referencedDeclaration":2815,"src":"5090:16:20","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Swapper_$2815","typeString":"contract IBaluniV1Swapper"}},"visibility":"internal"}],"id":3463,"initialValue":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":3459,"name":"_registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2993,"src":"5134:9:20","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$2784","typeString":"contract IBaluniV1Registry"}},"id":3460,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5144:16:20","memberName":"getBaluniSwapper","nodeType":"MemberAccess","referencedDeclaration":2678,"src":"5134:26:20","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":3461,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5134:28:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3458,"name":"IBaluniV1Swapper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2815,"src":"5117:16:20","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaluniV1Swapper_$2815_$","typeString":"type(contract IBaluniV1Swapper)"}},"id":3462,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5117:46:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Swapper_$2815","typeString":"contract IBaluniV1Swapper"}},"nodeType":"VariableDeclarationStatement","src":"5090:73:20"},{"expression":{"arguments":[{"arguments":[{"id":3470,"name":"swapper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3457,"src":"5210:7:20","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Swapper_$2815","typeString":"contract IBaluniV1Swapper"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IBaluniV1Swapper_$2815","typeString":"contract IBaluniV1Swapper"}],"id":3469,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5202:7:20","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3468,"name":"address","nodeType":"ElementaryTypeName","src":"5202:7:20","typeDescriptions":{}}},"id":3471,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5202:16:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3472,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3434,"src":"5220:9:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":3465,"name":"baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2985,"src":"5183:9:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3464,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"5176:6:20","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2136_$","typeString":"type(contract IERC20)"}},"id":3466,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5176:17:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2136","typeString":"contract IERC20"}},"id":3467,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5194:7:20","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":2123,"src":"5176:25:20","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":3473,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5176:54:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3474,"nodeType":"ExpressionStatement","src":"5176:54:20"},{"expression":{"arguments":[{"id":3478,"name":"baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2985,"src":"5262:9:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3479,"name":"quoteAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2990,"src":"5273:10:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3480,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3434,"src":"5285:9:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":3483,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5304:4:20","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1YearnVault_$4314","typeString":"contract BaluniV1YearnVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1YearnVault_$4314","typeString":"contract BaluniV1YearnVault"}],"id":3482,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5296:7:20","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3481,"name":"address","nodeType":"ElementaryTypeName","src":"5296:7:20","typeDescriptions":{}}},"id":3484,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5296:13:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":3475,"name":"swapper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3457,"src":"5243:7:20","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Swapper_$2815","typeString":"contract IBaluniV1Swapper"}},"id":3477,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5251:10:20","memberName":"singleSwap","nodeType":"MemberAccess","referencedDeclaration":2799,"src":"5243:18:20","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address,uint256,address) external returns (uint256)"}},"id":3485,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5243:67:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3486,"nodeType":"ExpressionStatement","src":"5243:67:20"},{"eventCall":{"arguments":[{"expression":{"id":3488,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5332:3:20","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3489,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5336:6:20","memberName":"sender","nodeType":"MemberAccess","src":"5332:10:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3490,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3434,"src":"5344:9:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3491,"name":"interest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3409,"src":"5355:8:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3487,"name":"Buy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3007,"src":"5328:3:20","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,uint256,uint256)"}},"id":3492,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5328:36:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3493,"nodeType":"EmitStatement","src":"5323:41:20"}]},"id":3495,"implemented":true,"kind":"function","modifiers":[],"name":"_buy","nameLocation":"4565:4:20","nodeType":"FunctionDefinition","parameters":{"id":3393,"nodeType":"ParameterList","parameters":[],"src":"4569:2:20"},"returnParameters":{"id":3394,"nodeType":"ParameterList","parameters":[],"src":"4581:0:20"},"scope":4314,"src":"4556:816:20","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[2859],"body":{"id":3506,"nodeType":"Block","src":"5440:25:20","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":3503,"name":"_buy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3495,"src":"5451:4:20","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":3504,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5451:6:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3505,"nodeType":"ExpressionStatement","src":"5451:6:20"}]},"functionSelector":"a6f2ae3a","id":3507,"implemented":true,"kind":"function","modifiers":[{"id":3499,"kind":"modifierInvocation","modifierName":{"id":3498,"name":"nonReentrant","nameLocations":["5413:12:20"],"nodeType":"IdentifierPath","referencedDeclaration":1538,"src":"5413:12:20"},"nodeType":"ModifierInvocation","src":"5413:12:20"},{"id":3501,"kind":"modifierInvocation","modifierName":{"id":3500,"name":"whenNotPaused","nameLocations":["5426:13:20"],"nodeType":"IdentifierPath","referencedDeclaration":1371,"src":"5426:13:20"},"nodeType":"ModifierInvocation","src":"5426:13:20"}],"name":"buy","nameLocation":"5389:3:20","nodeType":"FunctionDefinition","overrides":{"id":3497,"nodeType":"OverrideSpecifier","overrides":[],"src":"5404:8:20"},"parameters":{"id":3496,"nodeType":"ParameterList","parameters":[],"src":"5392:2:20"},"returnParameters":{"id":3502,"nodeType":"ParameterList","parameters":[],"src":"5440:0:20"},"scope":4314,"src":"5380:85:20","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":3573,"nodeType":"Block","src":"5510:452:20","statements":[{"assignments":[3511],"declarations":[{"constant":false,"id":3511,"mutability":"mutable","name":"totalAssets","nameLocation":"5529:11:20","nodeType":"VariableDeclaration","scope":3573,"src":"5521:19:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3510,"name":"uint256","nodeType":"ElementaryTypeName","src":"5521:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3522,"initialValue":{"arguments":[{"arguments":[{"arguments":[{"id":3518,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5601:4:20","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1YearnVault_$4314","typeString":"contract BaluniV1YearnVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1YearnVault_$4314","typeString":"contract BaluniV1YearnVault"}],"id":3517,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5593:7:20","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3516,"name":"address","nodeType":"ElementaryTypeName","src":"5593:7:20","typeDescriptions":{}}},"id":3519,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5593:13:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":3514,"name":"_yearnVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2988,"src":"5571:11:20","typeDescriptions":{"typeIdentifier":"t_contract$_IYearnVault_$2956","typeString":"contract IYearnVault"}},"id":3515,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5583:9:20","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":2895,"src":"5571:21:20","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":3520,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5571:36:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3512,"name":"_yearnVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2988,"src":"5543:11:20","typeDescriptions":{"typeIdentifier":"t_contract$_IYearnVault_$2956","typeString":"contract IYearnVault"}},"id":3513,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5555:15:20","memberName":"convertToAssets","nodeType":"MemberAccess","referencedDeclaration":2934,"src":"5543:27:20","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view external returns (uint256)"}},"id":3521,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5543:65:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5521:87:20"},{"assignments":[3524],"declarations":[{"constant":false,"id":3524,"mutability":"mutable","name":"interest","nameLocation":"5627:8:20","nodeType":"VariableDeclaration","scope":3573,"src":"5619:16:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3523,"name":"uint256","nodeType":"ElementaryTypeName","src":"5619:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3533,"initialValue":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3527,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3525,"name":"totalAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3511,"src":"5638:11:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":3526,"name":"lastDeposit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2997,"src":"5652:11:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5638:25:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":3531,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5694:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":3532,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"5638:57:20","trueExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3530,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3528,"name":"totalAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3511,"src":"5666:11:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":3529,"name":"lastDeposit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2997,"src":"5680:11:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5666:25:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5619:76:20"},{"assignments":[3535],"declarations":[{"constant":false,"id":3535,"mutability":"mutable","name":"baseDecimal","nameLocation":"5712:11:20","nodeType":"VariableDeclaration","scope":3573,"src":"5706:17:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":3534,"name":"uint8","nodeType":"ElementaryTypeName","src":"5706:5:20","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":3541,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":3537,"name":"baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2985,"src":"5741:9:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3536,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2162,"src":"5726:14:20","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$2162_$","typeString":"type(contract IERC20Metadata)"}},"id":3538,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5726:25:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$2162","typeString":"contract IERC20Metadata"}},"id":3539,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5752:8:20","memberName":"decimals","nodeType":"MemberAccess","referencedDeclaration":2161,"src":"5726:34:20","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint8_$","typeString":"function () view external returns (uint8)"}},"id":3540,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5726:36:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"5706:56:20"},{"assignments":[3543],"declarations":[{"constant":false,"id":3543,"mutability":"mutable","name":"limit","nameLocation":"5778:5:20","nodeType":"VariableDeclaration","scope":3573,"src":"5773:10:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3542,"name":"uint","nodeType":"ElementaryTypeName","src":"5773:4:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3552,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":3544,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5786:1:20","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3550,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":3545,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5790:2:20","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":3548,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3546,"name":"baseDecimal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3535,"src":"5797:11:20","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"32","id":3547,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5811:1:20","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"5797:15:20","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":3549,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5796:17:20","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"5790:23:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5786:27:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5773:40:20"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3555,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3553,"name":"interest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3524,"src":"5828:8:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":3554,"name":"limit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3543,"src":"5839:5:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5828:16:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3560,"nodeType":"IfStatement","src":"5824:55:20","trueBody":{"id":3559,"nodeType":"Block","src":"5846:33:20","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":3556,"name":"_buy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3495,"src":"5861:4:20","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":3557,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5861:6:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3558,"nodeType":"ExpressionStatement","src":"5861:6:20"}]}},{"expression":{"id":3571,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3561,"name":"accumulatedAssetB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2995,"src":"5891:17:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":3568,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5948:4:20","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1YearnVault_$4314","typeString":"contract BaluniV1YearnVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1YearnVault_$4314","typeString":"contract BaluniV1YearnVault"}],"id":3567,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5940:7:20","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3566,"name":"address","nodeType":"ElementaryTypeName","src":"5940:7:20","typeDescriptions":{}}},"id":3569,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5940:13:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":3563,"name":"quoteAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2990,"src":"5918:10:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3562,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"5911:6:20","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2136_$","typeString":"type(contract IERC20)"}},"id":3564,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5911:18:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2136","typeString":"contract IERC20"}},"id":3565,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5930:9:20","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":2093,"src":"5911:28:20","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":3570,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5911:43:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5891:63:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3572,"nodeType":"ExpressionStatement","src":"5891:63:20"}]},"id":3574,"implemented":true,"kind":"function","modifiers":[],"name":"_processInterest","nameLocation":"5482:16:20","nodeType":"FunctionDefinition","parameters":{"id":3508,"nodeType":"ParameterList","parameters":[],"src":"5498:2:20"},"returnParameters":{"id":3509,"nodeType":"ParameterList","parameters":[],"src":"5510:0:20"},"scope":4314,"src":"5473:489:20","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[2862],"body":{"id":3583,"nodeType":"Block","src":"6015:27:20","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":3580,"name":"_pause","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1444,"src":"6026:6:20","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":3581,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6026:8:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3582,"nodeType":"ExpressionStatement","src":"6026:8:20"}]},"functionSelector":"8456cb59","id":3584,"implemented":true,"kind":"function","modifiers":[{"id":3578,"kind":"modifierInvocation","modifierName":{"id":3577,"name":"onlyOwner","nameLocations":["6005:9:20"],"nodeType":"IdentifierPath","referencedDeclaration":89,"src":"6005:9:20"},"nodeType":"ModifierInvocation","src":"6005:9:20"}],"name":"pause","nameLocation":"5979:5:20","nodeType":"FunctionDefinition","overrides":{"id":3576,"nodeType":"OverrideSpecifier","overrides":[],"src":"5996:8:20"},"parameters":{"id":3575,"nodeType":"ParameterList","parameters":[],"src":"5984:2:20"},"returnParameters":{"id":3579,"nodeType":"ParameterList","parameters":[],"src":"6015:0:20"},"scope":4314,"src":"5970:72:20","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[2865],"body":{"id":3593,"nodeType":"Block","src":"6097:29:20","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":3590,"name":"_unpause","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1468,"src":"6108:8:20","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":3591,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6108:10:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3592,"nodeType":"ExpressionStatement","src":"6108:10:20"}]},"functionSelector":"3f4ba83a","id":3594,"implemented":true,"kind":"function","modifiers":[{"id":3588,"kind":"modifierInvocation","modifierName":{"id":3587,"name":"onlyOwner","nameLocations":["6087:9:20"],"nodeType":"IdentifierPath","referencedDeclaration":89,"src":"6087:9:20"},"nodeType":"ModifierInvocation","src":"6087:9:20"}],"name":"unpause","nameLocation":"6059:7:20","nodeType":"FunctionDefinition","overrides":{"id":3586,"nodeType":"OverrideSpecifier","overrides":[],"src":"6078:8:20"},"parameters":{"id":3585,"nodeType":"ParameterList","parameters":[],"src":"6066:2:20"},"returnParameters":{"id":3589,"nodeType":"ParameterList","parameters":[],"src":"6097:0:20"},"scope":4314,"src":"6050:76:20","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[2870],"body":{"id":3698,"nodeType":"Block","src":"6199:807:20","statements":[{"assignments":[3602],"declarations":[{"constant":false,"id":3602,"mutability":"mutable","name":"oracle","nameLocation":"6226:6:20","nodeType":"VariableDeclaration","scope":3698,"src":"6210:22:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Oracle_$2550","typeString":"contract IBaluniV1Oracle"},"typeName":{"id":3601,"nodeType":"UserDefinedTypeName","pathNode":{"id":3600,"name":"IBaluniV1Oracle","nameLocations":["6210:15:20"],"nodeType":"IdentifierPath","referencedDeclaration":2550,"src":"6210:15:20"},"referencedDeclaration":2550,"src":"6210:15:20","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Oracle_$2550","typeString":"contract IBaluniV1Oracle"}},"visibility":"internal"}],"id":3608,"initialValue":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":3604,"name":"_registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2993,"src":"6251:9:20","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$2784","typeString":"contract IBaluniV1Registry"}},"id":3605,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6261:15:20","memberName":"getBaluniOracle","nodeType":"MemberAccess","referencedDeclaration":2683,"src":"6251:25:20","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":3606,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6251:27:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3603,"name":"IBaluniV1Oracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2550,"src":"6235:15:20","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaluniV1Oracle_$2550_$","typeString":"type(contract IBaluniV1Oracle)"}},"id":3607,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6235:44:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Oracle_$2550","typeString":"contract IBaluniV1Oracle"}},"nodeType":"VariableDeclarationStatement","src":"6210:69:20"},{"assignments":[3610],"declarations":[{"constant":false,"id":3610,"mutability":"mutable","name":"USDC","nameLocation":"6298:4:20","nodeType":"VariableDeclaration","scope":3698,"src":"6290:12:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3609,"name":"address","nodeType":"ElementaryTypeName","src":"6290:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":3614,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":3611,"name":"_registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2993,"src":"6305:9:20","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$2784","typeString":"contract IBaluniV1Registry"}},"id":3612,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6315:7:20","memberName":"getUSDC","nodeType":"MemberAccess","referencedDeclaration":2728,"src":"6305:17:20","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":3613,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6305:19:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"6290:34:20"},{"assignments":[3616],"declarations":[{"constant":false,"id":3616,"mutability":"mutable","name":"valuation","nameLocation":"6343:9:20","nodeType":"VariableDeclaration","scope":3698,"src":"6335:17:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3615,"name":"uint256","nodeType":"ElementaryTypeName","src":"6335:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3618,"initialValue":{"hexValue":"30","id":3617,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6355:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"6335:21:20"},{"assignments":[3620],"declarations":[{"constant":false,"id":3620,"mutability":"mutable","name":"yearnBalance","nameLocation":"6374:12:20","nodeType":"VariableDeclaration","scope":3698,"src":"6369:17:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3619,"name":"uint","nodeType":"ElementaryTypeName","src":"6369:4:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3628,"initialValue":{"arguments":[{"arguments":[{"id":3625,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"6419:4:20","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1YearnVault_$4314","typeString":"contract BaluniV1YearnVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1YearnVault_$4314","typeString":"contract BaluniV1YearnVault"}],"id":3624,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6411:7:20","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3623,"name":"address","nodeType":"ElementaryTypeName","src":"6411:7:20","typeDescriptions":{}}},"id":3626,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6411:13:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":3621,"name":"_yearnVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2988,"src":"6389:11:20","typeDescriptions":{"typeIdentifier":"t_contract$_IYearnVault_$2956","typeString":"contract IYearnVault"}},"id":3622,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6401:9:20","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":2895,"src":"6389:21:20","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":3627,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6389:36:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6369:56:20"},{"assignments":[3630],"declarations":[{"constant":false,"id":3630,"mutability":"mutable","name":"yearnBalanceConvert","nameLocation":"6441:19:20","nodeType":"VariableDeclaration","scope":3698,"src":"6436:24:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3629,"name":"uint","nodeType":"ElementaryTypeName","src":"6436:4:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3635,"initialValue":{"arguments":[{"id":3633,"name":"yearnBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3620,"src":"6491:12:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3631,"name":"_yearnVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2988,"src":"6463:11:20","typeDescriptions":{"typeIdentifier":"t_contract$_IYearnVault_$2956","typeString":"contract IYearnVault"}},"id":3632,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6475:15:20","memberName":"convertToAssets","nodeType":"MemberAccess","referencedDeclaration":2934,"src":"6463:27:20","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view external returns (uint256)"}},"id":3634,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6463:41:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6436:68:20"},{"assignments":[3637],"declarations":[{"constant":false,"id":3637,"mutability":"mutable","name":"balanceQuote","nameLocation":"6520:12:20","nodeType":"VariableDeclaration","scope":3698,"src":"6515:17:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3636,"name":"uint","nodeType":"ElementaryTypeName","src":"6515:4:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3647,"initialValue":{"arguments":[{"arguments":[{"id":3644,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"6572:4:20","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1YearnVault_$4314","typeString":"contract BaluniV1YearnVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1YearnVault_$4314","typeString":"contract BaluniV1YearnVault"}],"id":3643,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6564:7:20","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3642,"name":"address","nodeType":"ElementaryTypeName","src":"6564:7:20","typeDescriptions":{}}},"id":3645,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6564:13:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":3639,"name":"quoteAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2990,"src":"6542:10:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3638,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"6535:6:20","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2136_$","typeString":"type(contract IERC20)"}},"id":3640,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6535:18:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2136","typeString":"contract IERC20"}},"id":3641,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6554:9:20","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":2093,"src":"6535:28:20","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":3646,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6535:43:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6515:63:20"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3650,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3648,"name":"baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2985,"src":"6595:9:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":3649,"name":"USDC","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3610,"src":"6608:4:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6595:17:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3660,"nodeType":"IfStatement","src":"6591:88:20","trueBody":{"expression":{"id":3658,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3651,"name":"valuation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3616,"src":"6614:9:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"arguments":[{"id":3654,"name":"baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2985,"src":"6642:9:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3655,"name":"USDC","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3610,"src":"6653:4:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3656,"name":"yearnBalanceConvert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3630,"src":"6659:19:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3652,"name":"oracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3602,"src":"6627:6:20","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Oracle_$2550","typeString":"contract IBaluniV1Oracle"}},"id":3653,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6634:7:20","memberName":"convert","nodeType":"MemberAccess","referencedDeclaration":2538,"src":"6627:14:20","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,address,uint256) view external returns (uint256)"}},"id":3657,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6627:52:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6614:65:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3659,"nodeType":"ExpressionStatement","src":"6614:65:20"}},{"expression":{"id":3668,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3661,"name":"valuation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3616,"src":"6690:9:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"arguments":[{"id":3664,"name":"quoteAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2990,"src":"6718:10:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3665,"name":"baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2985,"src":"6730:9:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3666,"name":"balanceQuote","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3637,"src":"6741:12:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3662,"name":"oracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3602,"src":"6703:6:20","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Oracle_$2550","typeString":"contract IBaluniV1Oracle"}},"id":3663,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6710:7:20","memberName":"convert","nodeType":"MemberAccess","referencedDeclaration":2538,"src":"6703:14:20","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,address,uint256) view external returns (uint256)"}},"id":3667,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6703:51:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6690:64:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3669,"nodeType":"ExpressionStatement","src":"6690:64:20"},{"expression":{"id":3672,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3670,"name":"valuation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3616,"src":"6765:9:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":3671,"name":"yearnBalanceConvert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3630,"src":"6778:19:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6765:32:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3673,"nodeType":"ExpressionStatement","src":"6765:32:20"},{"assignments":[3675],"declarations":[{"constant":false,"id":3675,"mutability":"mutable","name":"interest","nameLocation":"6818:8:20","nodeType":"VariableDeclaration","scope":3698,"src":"6810:16:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3674,"name":"uint256","nodeType":"ElementaryTypeName","src":"6810:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3678,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":3676,"name":"interestEarned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3839,"src":"6829:14:20","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":3677,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6829:16:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6810:35:20"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3681,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3679,"name":"baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2985,"src":"6862:9:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":3680,"name":"USDC","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3610,"src":"6875:4:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6862:17:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3691,"nodeType":"IfStatement","src":"6858:77:20","trueBody":{"expression":{"id":3689,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3682,"name":"valuation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3616,"src":"6881:9:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"arguments":[{"id":3685,"name":"baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2985,"src":"6909:9:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3686,"name":"USDC","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3610,"src":"6920:4:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3687,"name":"interest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3675,"src":"6926:8:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3683,"name":"oracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3602,"src":"6894:6:20","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Oracle_$2550","typeString":"contract IBaluniV1Oracle"}},"id":3684,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6901:7:20","memberName":"convert","nodeType":"MemberAccess","referencedDeclaration":2538,"src":"6894:14:20","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,address,uint256) view external returns (uint256)"}},"id":3688,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6894:41:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6881:54:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3690,"nodeType":"ExpressionStatement","src":"6881:54:20"}},{"expression":{"id":3694,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3692,"name":"valuation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3616,"src":"6948:9:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":3693,"name":"interest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3675,"src":"6961:8:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6948:21:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3695,"nodeType":"ExpressionStatement","src":"6948:21:20"},{"expression":{"id":3696,"name":"valuation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3616,"src":"6989:9:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3599,"id":3697,"nodeType":"Return","src":"6982:16:20"}]},"functionSelector":"295b9300","id":3699,"implemented":true,"kind":"function","modifiers":[],"name":"totalValuation","nameLocation":"6143:14:20","nodeType":"FunctionDefinition","overrides":{"id":3596,"nodeType":"OverrideSpecifier","overrides":[],"src":"6172:8:20"},"parameters":{"id":3595,"nodeType":"ParameterList","parameters":[],"src":"6157:2:20"},"returnParameters":{"id":3599,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3598,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3699,"src":"6190:7:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3597,"name":"uint256","nodeType":"ElementaryTypeName","src":"6190:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6189:9:20"},"scope":4314,"src":"6134:872:20","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[2875],"body":{"id":3754,"nodeType":"Block","src":"7076:380:20","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3708,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":3705,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":783,"src":"7091:11:20","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":3706,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7091:13:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":3707,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7108:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7091:18:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3711,"nodeType":"IfStatement","src":"7087:32:20","trueBody":{"expression":{"hexValue":"30","id":3709,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7118:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":3704,"id":3710,"nodeType":"Return","src":"7111:8:20"}},{"assignments":[3713],"declarations":[{"constant":false,"id":3713,"mutability":"mutable","name":"USDC","nameLocation":"7138:4:20","nodeType":"VariableDeclaration","scope":3754,"src":"7130:12:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3712,"name":"address","nodeType":"ElementaryTypeName","src":"7130:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":3717,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":3714,"name":"_registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2993,"src":"7145:9:20","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$2784","typeString":"contract IBaluniV1Registry"}},"id":3715,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7155:7:20","memberName":"getUSDC","nodeType":"MemberAccess","referencedDeclaration":2728,"src":"7145:17:20","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":3716,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7145:19:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"7130:34:20"},{"assignments":[3719],"declarations":[{"constant":false,"id":3719,"mutability":"mutable","name":"decimals","nameLocation":"7181:8:20","nodeType":"VariableDeclaration","scope":3754,"src":"7175:14:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":3718,"name":"uint8","nodeType":"ElementaryTypeName","src":"7175:5:20","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":3725,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":3721,"name":"USDC","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3713,"src":"7207:4:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3720,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2162,"src":"7192:14:20","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$2162_$","typeString":"type(contract IERC20Metadata)"}},"id":3722,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7192:20:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$2162","typeString":"contract IERC20Metadata"}},"id":3723,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7213:8:20","memberName":"decimals","nodeType":"MemberAccess","referencedDeclaration":2161,"src":"7192:29:20","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint8_$","typeString":"function () view external returns (uint8)"}},"id":3724,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7192:31:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"7175:48:20"},{"assignments":[3727],"declarations":[{"constant":false,"id":3727,"mutability":"mutable","name":"factor","nameLocation":"7242:6:20","nodeType":"VariableDeclaration","scope":3754,"src":"7234:14:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3726,"name":"uint256","nodeType":"ElementaryTypeName","src":"7234:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3734,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3733,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":3728,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7251:2:20","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":3731,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3138","id":3729,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7258:2:20","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":3730,"name":"decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3719,"src":"7263:8:20","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"7258:13:20","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":3732,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7257:15:20","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"7251:21:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7234:38:20"},{"assignments":[3736],"declarations":[{"constant":false,"id":3736,"mutability":"mutable","name":"valuationScaledUp","nameLocation":"7291:17:20","nodeType":"VariableDeclaration","scope":3754,"src":"7283:25:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3735,"name":"uint256","nodeType":"ElementaryTypeName","src":"7283:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3741,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3740,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":3737,"name":"totalValuation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3699,"src":"7311:14:20","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":3738,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7311:16:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":3739,"name":"factor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3727,"src":"7330:6:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7311:25:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7283:53:20"},{"assignments":[3743],"declarations":[{"constant":false,"id":3743,"mutability":"mutable","name":"unitPriceScaled","nameLocation":"7355:15:20","nodeType":"VariableDeclaration","scope":3754,"src":"7347:23:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3742,"name":"uint256","nodeType":"ElementaryTypeName","src":"7347:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3751,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3750,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3746,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3744,"name":"valuationScaledUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3736,"src":"7374:17:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"31653138","id":3745,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7394:4:20","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"},"src":"7374:24:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3747,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7373:26:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":3748,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":783,"src":"7402:11:20","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":3749,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7402:13:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7373:42:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7347:68:20"},{"expression":{"id":3752,"name":"unitPriceScaled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3743,"src":"7433:15:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3704,"id":3753,"nodeType":"Return","src":"7426:22:20"}]},"functionSelector":"e73faa2d","id":3755,"implemented":true,"kind":"function","modifiers":[],"name":"unitPrice","nameLocation":"7023:9:20","nodeType":"FunctionDefinition","overrides":{"id":3701,"nodeType":"OverrideSpecifier","overrides":[],"src":"7049:8:20"},"parameters":{"id":3700,"nodeType":"ParameterList","parameters":[],"src":"7032:2:20"},"returnParameters":{"id":3704,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3703,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3755,"src":"7067:7:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3702,"name":"uint256","nodeType":"ElementaryTypeName","src":"7067:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7066:9:20"},"scope":4314,"src":"7014:442:20","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[2837],"body":{"id":3766,"nodeType":"Block","src":"7525:44:20","statements":[{"expression":{"arguments":[{"id":3763,"name":"_registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2993,"src":"7551:9:20","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$2784","typeString":"contract IBaluniV1Registry"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IBaluniV1Registry_$2784","typeString":"contract IBaluniV1Registry"}],"id":3762,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7543:7:20","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3761,"name":"address","nodeType":"ElementaryTypeName","src":"7543:7:20","typeDescriptions":{}}},"id":3764,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7543:18:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":3760,"id":3765,"nodeType":"Return","src":"7536:25:20"}]},"functionSelector":"7b103999","id":3767,"implemented":true,"kind":"function","modifiers":[],"name":"registry","nameLocation":"7473:8:20","nodeType":"FunctionDefinition","overrides":{"id":3757,"nodeType":"OverrideSpecifier","overrides":[],"src":"7498:8:20"},"parameters":{"id":3756,"nodeType":"ParameterList","parameters":[],"src":"7481:2:20"},"returnParameters":{"id":3760,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3759,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3767,"src":"7516:7:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3758,"name":"address","nodeType":"ElementaryTypeName","src":"7516:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7515:9:20"},"scope":4314,"src":"7464:105:20","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[2827],"body":{"id":3778,"nodeType":"Block","src":"7640:46:20","statements":[{"expression":{"arguments":[{"id":3775,"name":"_yearnVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2988,"src":"7666:11:20","typeDescriptions":{"typeIdentifier":"t_contract$_IYearnVault_$2956","typeString":"contract IYearnVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IYearnVault_$2956","typeString":"contract IYearnVault"}],"id":3774,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7658:7:20","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3773,"name":"address","nodeType":"ElementaryTypeName","src":"7658:7:20","typeDescriptions":{}}},"id":3776,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7658:20:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":3772,"id":3777,"nodeType":"Return","src":"7651:27:20"}]},"functionSelector":"9db5df46","id":3779,"implemented":true,"kind":"function","modifiers":[],"name":"yearnVault","nameLocation":"7586:10:20","nodeType":"FunctionDefinition","overrides":{"id":3769,"nodeType":"OverrideSpecifier","overrides":[],"src":"7613:8:20"},"parameters":{"id":3768,"nodeType":"ParameterList","parameters":[],"src":"7596:2:20"},"returnParameters":{"id":3772,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3771,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3779,"src":"7631:7:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3770,"name":"address","nodeType":"ElementaryTypeName","src":"7631:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7630:9:20"},"scope":4314,"src":"7577:109:20","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":3805,"nodeType":"Block","src":"7760:163:20","statements":[{"assignments":[3787],"declarations":[{"constant":false,"id":3787,"mutability":"mutable","name":"_BPS_FEE","nameLocation":"7779:8:20","nodeType":"VariableDeclaration","scope":3805,"src":"7771:16:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3786,"name":"uint256","nodeType":"ElementaryTypeName","src":"7771:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3791,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":3788,"name":"_registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2993,"src":"7790:9:20","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$2784","typeString":"contract IBaluniV1Registry"}},"id":3789,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7800:10:20","memberName":"getBPS_FEE","nodeType":"MemberAccess","referencedDeclaration":2738,"src":"7790:20:20","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":3790,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7790:22:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7771:41:20"},{"assignments":[3793],"declarations":[{"constant":false,"id":3793,"mutability":"mutable","name":"_BPS_BASE","nameLocation":"7831:9:20","nodeType":"VariableDeclaration","scope":3805,"src":"7823:17:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3792,"name":"uint256","nodeType":"ElementaryTypeName","src":"7823:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3797,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":3794,"name":"_registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2993,"src":"7843:9:20","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$2784","typeString":"contract IBaluniV1Registry"}},"id":3795,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7853:11:20","memberName":"getBPS_BASE","nodeType":"MemberAccess","referencedDeclaration":2748,"src":"7843:21:20","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":3796,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7843:23:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7823:43:20"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3803,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3800,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3798,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3781,"src":"7885:6:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":3799,"name":"_BPS_FEE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3787,"src":"7894:8:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7885:17:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3801,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7884:19:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":3802,"name":"_BPS_BASE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3793,"src":"7906:9:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7884:31:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3785,"id":3804,"nodeType":"Return","src":"7877:38:20"}]},"id":3806,"implemented":true,"kind":"function","modifiers":[],"name":"_haircut","nameLocation":"7703:8:20","nodeType":"FunctionDefinition","parameters":{"id":3782,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3781,"mutability":"mutable","name":"amount","nameLocation":"7720:6:20","nodeType":"VariableDeclaration","scope":3806,"src":"7712:14:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3780,"name":"uint256","nodeType":"ElementaryTypeName","src":"7712:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7711:16:20"},"returnParameters":{"id":3785,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3784,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3806,"src":"7751:7:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3783,"name":"uint256","nodeType":"ElementaryTypeName","src":"7751:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7750:9:20"},"scope":4314,"src":"7694:229:20","stateMutability":"view","virtual":false,"visibility":"internal"},{"baseFunctions":[2880],"body":{"id":3838,"nodeType":"Block","src":"7996:219:20","statements":[{"assignments":[3813],"declarations":[{"constant":false,"id":3813,"mutability":"mutable","name":"totalAssets","nameLocation":"8015:11:20","nodeType":"VariableDeclaration","scope":3838,"src":"8007:19:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3812,"name":"uint256","nodeType":"ElementaryTypeName","src":"8007:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3824,"initialValue":{"arguments":[{"arguments":[{"arguments":[{"id":3820,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"8087:4:20","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1YearnVault_$4314","typeString":"contract BaluniV1YearnVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1YearnVault_$4314","typeString":"contract BaluniV1YearnVault"}],"id":3819,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8079:7:20","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3818,"name":"address","nodeType":"ElementaryTypeName","src":"8079:7:20","typeDescriptions":{}}},"id":3821,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8079:13:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":3816,"name":"_yearnVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2988,"src":"8057:11:20","typeDescriptions":{"typeIdentifier":"t_contract$_IYearnVault_$2956","typeString":"contract IYearnVault"}},"id":3817,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8069:9:20","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":2895,"src":"8057:21:20","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":3822,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8057:36:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3814,"name":"_yearnVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2988,"src":"8029:11:20","typeDescriptions":{"typeIdentifier":"t_contract$_IYearnVault_$2956","typeString":"contract IYearnVault"}},"id":3815,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8041:15:20","memberName":"convertToAssets","nodeType":"MemberAccess","referencedDeclaration":2934,"src":"8029:27:20","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view external returns (uint256)"}},"id":3823,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8029:65:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8007:87:20"},{"assignments":[3826],"declarations":[{"constant":false,"id":3826,"mutability":"mutable","name":"interest","nameLocation":"8113:8:20","nodeType":"VariableDeclaration","scope":3838,"src":"8105:16:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3825,"name":"uint256","nodeType":"ElementaryTypeName","src":"8105:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3835,"initialValue":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3829,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3827,"name":"totalAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3813,"src":"8124:11:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":3828,"name":"lastDeposit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2997,"src":"8138:11:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8124:25:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":3833,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8180:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":3834,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"8124:57:20","trueExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3832,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3830,"name":"totalAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3813,"src":"8152:11:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":3831,"name":"lastDeposit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2997,"src":"8166:11:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8152:25:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8105:76:20"},{"expression":{"id":3836,"name":"interest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3826,"src":"8199:8:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3811,"id":3837,"nodeType":"Return","src":"8192:15:20"}]},"functionSelector":"374261ab","id":3839,"implemented":true,"kind":"function","modifiers":[],"name":"interestEarned","nameLocation":"7940:14:20","nodeType":"FunctionDefinition","overrides":{"id":3808,"nodeType":"OverrideSpecifier","overrides":[],"src":"7969:8:20"},"parameters":{"id":3807,"nodeType":"ParameterList","parameters":[],"src":"7954:2:20"},"returnParameters":{"id":3811,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3810,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3839,"src":"7987:7:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3809,"name":"uint256","nodeType":"ElementaryTypeName","src":"7987:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7986:9:20"},"scope":4314,"src":"7931:284:20","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[2856],"body":{"id":4215,"nodeType":"Block","src":"8314:3355:20","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3854,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3852,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3841,"src":"8333:6:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3853,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8342:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8333:10:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"536861726573206d7573742062652067726561746572207468616e207a65726f","id":3855,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8345:34:20","typeDescriptions":{"typeIdentifier":"t_stringliteral_f247f7c1df7c48d1adf3ebe04e09d491abca7b6e14a32a1b30359ea588b9d3d6","typeString":"literal_string \"Shares must be greater than zero\""},"value":"Shares must be greater than zero"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f247f7c1df7c48d1adf3ebe04e09d491abca7b6e14a32a1b30359ea588b9d3d6","typeString":"literal_string \"Shares must be greater than zero\""}],"id":3851,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"8325:7:20","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3856,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8325:55:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3857,"nodeType":"ExpressionStatement","src":"8325:55:20"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3864,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"expression":{"id":3860,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8409:3:20","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3861,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8413:6:20","memberName":"sender","nodeType":"MemberAccess","src":"8409:10:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3859,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":803,"src":"8399:9:20","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":3862,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8399:21:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":3863,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3841,"src":"8424:6:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8399:31:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e73756666696369656e742062616c616e6365","id":3865,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8432:22:20","typeDescriptions":{"typeIdentifier":"t_stringliteral_47533c3652efd02135ecc34b3fac8efc7b14bf0618b9392fd6e044a3d8a6eef5","typeString":"literal_string \"Insufficient balance\""},"value":"Insufficient balance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_47533c3652efd02135ecc34b3fac8efc7b14bf0618b9392fd6e044a3d8a6eef5","typeString":"literal_string \"Insufficient balance\""}],"id":3858,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"8391:7:20","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3866,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8391:64:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3867,"nodeType":"ExpressionStatement","src":"8391:64:20"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3872,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":3869,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":783,"src":"8474:11:20","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":3870,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8474:13:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3871,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8490:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8474:17:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"546f74616c20737570706c792063616e6e6f74206265207a65726f","id":3873,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8493:29:20","typeDescriptions":{"typeIdentifier":"t_stringliteral_075182a57f83974087c76763cd3bc4eedd97b16a8f6ac226f0c2ef23a69b575b","typeString":"literal_string \"Total supply cannot be zero\""},"value":"Total supply cannot be zero"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_075182a57f83974087c76763cd3bc4eedd97b16a8f6ac226f0c2ef23a69b575b","typeString":"literal_string \"Total supply cannot be zero\""}],"id":3868,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"8466:7:20","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3874,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8466:57:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3875,"nodeType":"ExpressionStatement","src":"8466:57:20"},{"assignments":[3877],"declarations":[{"constant":false,"id":3877,"mutability":"mutable","name":"yearnDecimal","nameLocation":"8542:12:20","nodeType":"VariableDeclaration","scope":4215,"src":"8536:18:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":3876,"name":"uint8","nodeType":"ElementaryTypeName","src":"8536:5:20","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":3886,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"arguments":[{"id":3881,"name":"_yearnVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2988,"src":"8580:11:20","typeDescriptions":{"typeIdentifier":"t_contract$_IYearnVault_$2956","typeString":"contract IYearnVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IYearnVault_$2956","typeString":"contract IYearnVault"}],"id":3880,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8572:7:20","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3879,"name":"address","nodeType":"ElementaryTypeName","src":"8572:7:20","typeDescriptions":{}}},"id":3882,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8572:20:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3878,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2162,"src":"8557:14:20","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$2162_$","typeString":"type(contract IERC20Metadata)"}},"id":3883,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8557:36:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$2162","typeString":"contract IERC20Metadata"}},"id":3884,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8594:8:20","memberName":"decimals","nodeType":"MemberAccess","referencedDeclaration":2161,"src":"8557:45:20","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint8_$","typeString":"function () view external returns (uint8)"}},"id":3885,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8557:47:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"8536:68:20"},{"assignments":[3888],"declarations":[{"constant":false,"id":3888,"mutability":"mutable","name":"quoteDecimal","nameLocation":"8621:12:20","nodeType":"VariableDeclaration","scope":4215,"src":"8615:18:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":3887,"name":"uint8","nodeType":"ElementaryTypeName","src":"8615:5:20","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":3894,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":3890,"name":"quoteAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2990,"src":"8651:10:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3889,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2162,"src":"8636:14:20","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$2162_$","typeString":"type(contract IERC20Metadata)"}},"id":3891,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8636:26:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$2162","typeString":"contract IERC20Metadata"}},"id":3892,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8663:8:20","memberName":"decimals","nodeType":"MemberAccess","referencedDeclaration":2161,"src":"8636:35:20","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint8_$","typeString":"function () view external returns (uint8)"}},"id":3893,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8636:37:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"8615:58:20"},{"assignments":[3896],"declarations":[{"constant":false,"id":3896,"mutability":"mutable","name":"balanceYearnVault","nameLocation":"8730:17:20","nodeType":"VariableDeclaration","scope":4215,"src":"8722:25:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3895,"name":"uint256","nodeType":"ElementaryTypeName","src":"8722:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3904,"initialValue":{"arguments":[{"arguments":[{"id":3901,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"8780:4:20","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1YearnVault_$4314","typeString":"contract BaluniV1YearnVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1YearnVault_$4314","typeString":"contract BaluniV1YearnVault"}],"id":3900,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8772:7:20","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3899,"name":"address","nodeType":"ElementaryTypeName","src":"8772:7:20","typeDescriptions":{}}},"id":3902,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8772:13:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":3897,"name":"_yearnVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2988,"src":"8750:11:20","typeDescriptions":{"typeIdentifier":"t_contract$_IYearnVault_$2956","typeString":"contract IYearnVault"}},"id":3898,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8762:9:20","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":2895,"src":"8750:21:20","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":3903,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8750:36:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8722:64:20"},{"assignments":[3906],"declarations":[{"constant":false,"id":3906,"mutability":"mutable","name":"quoteBalance","nameLocation":"8805:12:20","nodeType":"VariableDeclaration","scope":4215,"src":"8797:20:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3905,"name":"uint256","nodeType":"ElementaryTypeName","src":"8797:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3916,"initialValue":{"arguments":[{"arguments":[{"id":3913,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"8857:4:20","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1YearnVault_$4314","typeString":"contract BaluniV1YearnVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1YearnVault_$4314","typeString":"contract BaluniV1YearnVault"}],"id":3912,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8849:7:20","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3911,"name":"address","nodeType":"ElementaryTypeName","src":"8849:7:20","typeDescriptions":{}}},"id":3914,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8849:13:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":3908,"name":"quoteAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2990,"src":"8827:10:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3907,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"8820:6:20","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2136_$","typeString":"type(contract IERC20)"}},"id":3909,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8820:18:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2136","typeString":"contract IERC20"}},"id":3910,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8839:9:20","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":2093,"src":"8820:28:20","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":3915,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8820:43:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8797:66:20"},{"assignments":[3918],"declarations":[{"constant":false,"id":3918,"mutability":"mutable","name":"baseBalance","nameLocation":"8882:11:20","nodeType":"VariableDeclaration","scope":4215,"src":"8874:19:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3917,"name":"uint256","nodeType":"ElementaryTypeName","src":"8874:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3928,"initialValue":{"arguments":[{"arguments":[{"id":3925,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"8932:4:20","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1YearnVault_$4314","typeString":"contract BaluniV1YearnVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1YearnVault_$4314","typeString":"contract BaluniV1YearnVault"}],"id":3924,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8924:7:20","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3923,"name":"address","nodeType":"ElementaryTypeName","src":"8924:7:20","typeDescriptions":{}}},"id":3926,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8924:13:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":3920,"name":"baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2985,"src":"8903:9:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3919,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"8896:6:20","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2136_$","typeString":"type(contract IERC20)"}},"id":3921,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8896:17:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2136","typeString":"contract IERC20"}},"id":3922,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8914:9:20","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":2093,"src":"8896:27:20","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":3927,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8896:42:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8874:64:20"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3944,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3930,"name":"balanceYearnVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3896,"src":"9022:17:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3943,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":3933,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9048:7:20","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":3932,"name":"uint256","nodeType":"ElementaryTypeName","src":"9048:7:20","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":3931,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"9043:4:20","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3934,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9043:13:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":3935,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9057:3:20","memberName":"max","nodeType":"MemberAccess","src":"9043:17:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3941,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":3936,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9064:2:20","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":3939,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3138","id":3937,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9071:2:20","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":3938,"name":"yearnDecimal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3877,"src":"9076:12:20","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"9071:17:20","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":3940,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9070:19:20","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"9064:25:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3942,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9063:27:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9043:47:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9022:68:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"596561726e5661756c742062616c616e6365207363616c696e6720776f756c64206f766572666c6f77","id":3945,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9106:43:20","typeDescriptions":{"typeIdentifier":"t_stringliteral_ccca7ff1468d598a7b4a53b0d72e019c7ab8452a3d681fa867da7e6021bbfc25","typeString":"literal_string \"YearnVault balance scaling would overflow\""},"value":"YearnVault balance scaling would overflow"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ccca7ff1468d598a7b4a53b0d72e019c7ab8452a3d681fa867da7e6021bbfc25","typeString":"literal_string \"YearnVault balance scaling would overflow\""}],"id":3929,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"9014:7:20","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3946,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9014:136:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3947,"nodeType":"ExpressionStatement","src":"9014:136:20"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3963,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3949,"name":"quoteBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3906,"src":"9169:12:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3962,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":3952,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9190:7:20","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":3951,"name":"uint256","nodeType":"ElementaryTypeName","src":"9190:7:20","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":3950,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"9185:4:20","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3953,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9185:13:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":3954,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9199:3:20","memberName":"max","nodeType":"MemberAccess","src":"9185:17:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3960,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":3955,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9206:2:20","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":3958,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3138","id":3956,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9213:2:20","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":3957,"name":"quoteDecimal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3888,"src":"9218:12:20","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"9213:17:20","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":3959,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9212:19:20","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"9206:25:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3961,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9205:27:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9185:47:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9169:63:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"51756f74652062616c616e6365207363616c696e6720776f756c64206f766572666c6f77","id":3964,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9248:38:20","typeDescriptions":{"typeIdentifier":"t_stringliteral_8df75ae507dbaf3dad7a5532336cf0b6653a2f884906812afcc1c21c7d32d672","typeString":"literal_string \"Quote balance scaling would overflow\""},"value":"Quote balance scaling would overflow"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8df75ae507dbaf3dad7a5532336cf0b6653a2f884906812afcc1c21c7d32d672","typeString":"literal_string \"Quote balance scaling would overflow\""}],"id":3948,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"9161:7:20","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3965,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9161:126:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3966,"nodeType":"ExpressionStatement","src":"9161:126:20"},{"expression":{"id":3974,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3967,"name":"balanceYearnVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3896,"src":"9326:17:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3973,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":3968,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9347:2:20","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":3971,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3138","id":3969,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9354:2:20","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":3970,"name":"yearnDecimal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3877,"src":"9359:12:20","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"9354:17:20","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":3972,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9353:19:20","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"9347:25:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9326:46:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3975,"nodeType":"ExpressionStatement","src":"9326:46:20"},{"expression":{"id":3983,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3976,"name":"quoteBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3906,"src":"9383:12:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3982,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":3977,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9399:2:20","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":3980,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3138","id":3978,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9406:2:20","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":3979,"name":"quoteDecimal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3888,"src":"9411:12:20","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"9406:17:20","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":3981,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9405:19:20","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"9399:25:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9383:41:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3984,"nodeType":"ExpressionStatement","src":"9383:41:20"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3994,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3986,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3841,"src":"9518:6:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3993,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":3989,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9533:7:20","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":3988,"name":"uint256","nodeType":"ElementaryTypeName","src":"9533:7:20","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":3987,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"9528:4:20","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3990,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9528:13:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":3991,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9542:3:20","memberName":"max","nodeType":"MemberAccess","src":"9528:17:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":3992,"name":"balanceYearnVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3896,"src":"9548:17:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9528:37:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9518:47:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5368617265732063616c63756c6174696f6e20776f756c64206f766572666c6f77","id":3995,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9567:35:20","typeDescriptions":{"typeIdentifier":"t_stringliteral_6ab8fc4ce3762dbd01ecb51b289abf3d35a1ae045aa671894e0484b8219b8808","typeString":"literal_string \"Shares calculation would overflow\""},"value":"Shares calculation would overflow"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_6ab8fc4ce3762dbd01ecb51b289abf3d35a1ae045aa671894e0484b8219b8808","typeString":"literal_string \"Shares calculation would overflow\""}],"id":3985,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"9510:7:20","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3996,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9510:93:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3997,"nodeType":"ExpressionStatement","src":"9510:93:20"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4007,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3999,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3841,"src":"9622:6:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4006,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":4002,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9637:7:20","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":4001,"name":"uint256","nodeType":"ElementaryTypeName","src":"9637:7:20","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":4000,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"9632:4:20","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":4003,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9632:13:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":4004,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9646:3:20","memberName":"max","nodeType":"MemberAccess","src":"9632:17:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4005,"name":"quoteBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3906,"src":"9652:12:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9632:32:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9622:42:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5368617265732063616c63756c6174696f6e20776f756c64206f766572666c6f77","id":4008,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9666:35:20","typeDescriptions":{"typeIdentifier":"t_stringliteral_6ab8fc4ce3762dbd01ecb51b289abf3d35a1ae045aa671894e0484b8219b8808","typeString":"literal_string \"Shares calculation would overflow\""},"value":"Shares calculation would overflow"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_6ab8fc4ce3762dbd01ecb51b289abf3d35a1ae045aa671894e0484b8219b8808","typeString":"literal_string \"Shares calculation would overflow\""}],"id":3998,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"9614:7:20","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4009,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9614:88:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4010,"nodeType":"ExpressionStatement","src":"9614:88:20"},{"assignments":[4012],"declarations":[{"constant":false,"id":4012,"mutability":"mutable","name":"withdrawAmountA","nameLocation":"9768:15:20","nodeType":"VariableDeclaration","scope":4215,"src":"9760:23:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4011,"name":"uint256","nodeType":"ElementaryTypeName","src":"9760:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4020,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4019,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4015,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4013,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3841,"src":"9787:6:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4014,"name":"balanceYearnVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3896,"src":"9796:17:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9787:26:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4016,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9786:28:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":4017,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":783,"src":"9817:11:20","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":4018,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9817:13:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9786:44:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9760:70:20"},{"assignments":[4022],"declarations":[{"constant":false,"id":4022,"mutability":"mutable","name":"withdrawAmountB","nameLocation":"9849:15:20","nodeType":"VariableDeclaration","scope":4215,"src":"9841:23:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4021,"name":"uint256","nodeType":"ElementaryTypeName","src":"9841:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4030,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4029,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4025,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4023,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3841,"src":"9868:6:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4024,"name":"quoteBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3906,"src":"9877:12:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9868:21:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4026,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9867:23:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":4027,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":783,"src":"9893:11:20","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":4028,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9893:13:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9867:39:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9841:65:20"},{"expression":{"arguments":[{"expression":{"id":4032,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"9925:3:20","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":4033,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9929:6:20","memberName":"sender","nodeType":"MemberAccess","src":"9925:10:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4034,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3841,"src":"9937:6:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4031,"name":"_burn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1112,"src":"9919:5:20","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":4035,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9919:25:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4036,"nodeType":"ExpressionStatement","src":"9919:25:20"},{"expression":{"id":4044,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4037,"name":"withdrawAmountA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4012,"src":"9989:15:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4043,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":4038,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10008:2:20","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":4041,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3138","id":4039,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10015:2:20","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":4040,"name":"yearnDecimal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3877,"src":"10020:12:20","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"10015:17:20","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":4042,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10014:19:20","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"10008:25:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9989:44:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4045,"nodeType":"ExpressionStatement","src":"9989:44:20"},{"expression":{"id":4053,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4046,"name":"withdrawAmountB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4022,"src":"10044:15:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4052,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":4047,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10063:2:20","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":4050,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3138","id":4048,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10070:2:20","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":4049,"name":"quoteDecimal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3888,"src":"10075:12:20","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"10070:17:20","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":4051,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10069:19:20","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"10063:25:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10044:44:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4054,"nodeType":"ExpressionStatement","src":"10044:44:20"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4061,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4056,"name":"withdrawAmountA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4012,"src":"10175:15:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"arguments":[{"id":4059,"name":"balanceYearnVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3896,"src":"10222:17:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":4057,"name":"_yearnVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2988,"src":"10194:11:20","typeDescriptions":{"typeIdentifier":"t_contract$_IYearnVault_$2956","typeString":"contract IYearnVault"}},"id":4058,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10206:15:20","memberName":"convertToAssets","nodeType":"MemberAccess","referencedDeclaration":2934,"src":"10194:27:20","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view external returns (uint256)"}},"id":4060,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10194:46:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10175:65:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e73756666696369656e742061737365747320696e20596561726e205661756c74","id":4062,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10256:36:20","typeDescriptions":{"typeIdentifier":"t_stringliteral_6a5420b46d971cd4adc7c600c9ac745e4dfe1b0882c683155412840675ac8dd9","typeString":"literal_string \"Insufficient assets in Yearn Vault\""},"value":"Insufficient assets in Yearn Vault"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_6a5420b46d971cd4adc7c600c9ac745e4dfe1b0882c683155412840675ac8dd9","typeString":"literal_string \"Insufficient assets in Yearn Vault\""}],"id":4055,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"10167:7:20","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4063,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10167:126:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4064,"nodeType":"ExpressionStatement","src":"10167:126:20"},{"expression":{"arguments":[{"id":4068,"name":"withdrawAmountA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4012,"src":"10325:15:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":4071,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"10350:4:20","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1YearnVault_$4314","typeString":"contract BaluniV1YearnVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1YearnVault_$4314","typeString":"contract BaluniV1YearnVault"}],"id":4070,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10342:7:20","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4069,"name":"address","nodeType":"ElementaryTypeName","src":"10342:7:20","typeDescriptions":{}}},"id":4072,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10342:13:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":4075,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"10365:4:20","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1YearnVault_$4314","typeString":"contract BaluniV1YearnVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1YearnVault_$4314","typeString":"contract BaluniV1YearnVault"}],"id":4074,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10357:7:20","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4073,"name":"address","nodeType":"ElementaryTypeName","src":"10357:7:20","typeDescriptions":{}}},"id":4076,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10357:13:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":4065,"name":"_yearnVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2988,"src":"10306:11:20","typeDescriptions":{"typeIdentifier":"t_contract$_IYearnVault_$2956","typeString":"contract IYearnVault"}},"id":4067,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10318:6:20","memberName":"redeem","nodeType":"MemberAccess","referencedDeclaration":2913,"src":"10306:18:20","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (uint256,address,address) external returns (uint256)"}},"id":4077,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10306:65:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4078,"nodeType":"ExpressionStatement","src":"10306:65:20"},{"assignments":[4080],"declarations":[{"constant":false,"id":4080,"mutability":"mutable","name":"baseBalanceAfter","nameLocation":"10392:16:20","nodeType":"VariableDeclaration","scope":4215,"src":"10384:24:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4079,"name":"uint256","nodeType":"ElementaryTypeName","src":"10384:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4090,"initialValue":{"arguments":[{"arguments":[{"id":4087,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"10447:4:20","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1YearnVault_$4314","typeString":"contract BaluniV1YearnVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1YearnVault_$4314","typeString":"contract BaluniV1YearnVault"}],"id":4086,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10439:7:20","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4085,"name":"address","nodeType":"ElementaryTypeName","src":"10439:7:20","typeDescriptions":{}}},"id":4088,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10439:13:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":4082,"name":"baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2985,"src":"10418:9:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4081,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"10411:6:20","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2136_$","typeString":"type(contract IERC20)"}},"id":4083,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10411:17:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2136","typeString":"contract IERC20"}},"id":4084,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10429:9:20","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":2093,"src":"10411:27:20","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":4089,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10411:42:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10384:69:20"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4094,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4092,"name":"baseBalanceAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4080,"src":"10472:16:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":4093,"name":"baseBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3918,"src":"10492:11:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10472:31:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"426173652062616c616e636520636865636b206661696c6564","id":4095,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10505:27:20","typeDescriptions":{"typeIdentifier":"t_stringliteral_2c10bb6c20ddca68724a9b8bcf1a3fd00ea3c939d09d5321ef4aab4cf18ec592","typeString":"literal_string \"Base balance check failed\""},"value":"Base balance check failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2c10bb6c20ddca68724a9b8bcf1a3fd00ea3c939d09d5321ef4aab4cf18ec592","typeString":"literal_string \"Base balance check failed\""}],"id":4091,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"10464:7:20","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4096,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10464:69:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4097,"nodeType":"ExpressionStatement","src":"10464:69:20"},{"assignments":[4099],"declarations":[{"constant":false,"id":4099,"mutability":"mutable","name":"amountToSend","nameLocation":"10552:12:20","nodeType":"VariableDeclaration","scope":4215,"src":"10544:20:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4098,"name":"uint256","nodeType":"ElementaryTypeName","src":"10544:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4103,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4102,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4100,"name":"baseBalanceAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4080,"src":"10567:16:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":4101,"name":"baseBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3918,"src":"10586:11:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10567:30:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10544:53:20"},{"assignments":[4105],"declarations":[{"constant":false,"id":4105,"mutability":"mutable","name":"receiver","nameLocation":"10616:8:20","nodeType":"VariableDeclaration","scope":4215,"src":"10608:16:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4104,"name":"address","nodeType":"ElementaryTypeName","src":"10608:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":4107,"initialValue":{"id":4106,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3843,"src":"10627:2:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"10608:21:20"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4110,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4108,"name":"amountToSend","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4099,"src":"10646:12:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":4109,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10661:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10646:16:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4184,"nodeType":"IfStatement","src":"10642:742:20","trueBody":{"id":4183,"nodeType":"Block","src":"10664:720:20","statements":[{"assignments":[4112],"declarations":[{"constant":false,"id":4112,"mutability":"mutable","name":"hairCut","nameLocation":"10687:7:20","nodeType":"VariableDeclaration","scope":4183,"src":"10679:15:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4111,"name":"uint256","nodeType":"ElementaryTypeName","src":"10679:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4116,"initialValue":{"arguments":[{"id":4114,"name":"amountToSend","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4099,"src":"10706:12:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4113,"name":"_haircut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3806,"src":"10697:8:20","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":4115,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10697:22:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10679:40:20"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4120,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4118,"name":"hairCut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4112,"src":"10742:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":4119,"name":"amountToSend","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4099,"src":"10753:12:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10742:23:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"48616972637574206578636565647320616d6f756e74","id":4121,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10767:24:20","typeDescriptions":{"typeIdentifier":"t_stringliteral_83d08a31324e210a64b61b9e41ca062e33813b5f2ca236adfec41bd9784ac087","typeString":"literal_string \"Haircut exceeds amount\""},"value":"Haircut exceeds amount"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_83d08a31324e210a64b61b9e41ca062e33813b5f2ca236adfec41bd9784ac087","typeString":"literal_string \"Haircut exceeds amount\""}],"id":4117,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"10734:7:20","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4122,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10734:58:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4123,"nodeType":"ExpressionStatement","src":"10734:58:20"},{"assignments":[4125],"declarations":[{"constant":false,"id":4125,"mutability":"mutable","name":"amountAfterHaircut","nameLocation":"10829:18:20","nodeType":"VariableDeclaration","scope":4183,"src":"10821:26:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4124,"name":"uint256","nodeType":"ElementaryTypeName","src":"10821:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4129,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4128,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4126,"name":"amountToSend","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4099,"src":"10850:12:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":4127,"name":"hairCut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4112,"src":"10865:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10850:22:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10821:51:20"},{"assignments":[4131],"declarations":[{"constant":false,"id":4131,"mutability":"mutable","name":"hairCut2","nameLocation":"10895:8:20","nodeType":"VariableDeclaration","scope":4183,"src":"10887:16:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4130,"name":"uint256","nodeType":"ElementaryTypeName","src":"10887:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4135,"initialValue":{"arguments":[{"id":4133,"name":"hairCut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4112,"src":"10915:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4132,"name":"_haircut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3806,"src":"10906:8:20","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":4134,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10906:17:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10887:36:20"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4139,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4137,"name":"hairCut2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4131,"src":"10946:8:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":4138,"name":"hairCut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4112,"src":"10958:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10946:19:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5365636f6e6461727920686169726375742065786365656473207072696d6172792068616972637574","id":4140,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10967:43:20","typeDescriptions":{"typeIdentifier":"t_stringliteral_76e5ea5e74c767d4b187d60c8d1c088841d1ca2854cb0aa71c073344ff59e324","typeString":"literal_string \"Secondary haircut exceeds primary haircut\""},"value":"Secondary haircut exceeds primary haircut"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_76e5ea5e74c767d4b187d60c8d1c088841d1ca2854cb0aa71c073344ff59e324","typeString":"literal_string \"Secondary haircut exceeds primary haircut\""}],"id":4136,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"10938:7:20","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4141,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10938:73:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4142,"nodeType":"ExpressionStatement","src":"10938:73:20"},{"assignments":[4144],"declarations":[{"constant":false,"id":4144,"mutability":"mutable","name":"baluniRouter","nameLocation":"11048:12:20","nodeType":"VariableDeclaration","scope":4183,"src":"11040:20:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4143,"name":"address","nodeType":"ElementaryTypeName","src":"11040:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":4148,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":4145,"name":"_registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2993,"src":"11063:9:20","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$2784","typeString":"contract IBaluniV1Registry"}},"id":4146,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11073:15:20","memberName":"getBaluniRouter","nodeType":"MemberAccess","referencedDeclaration":2713,"src":"11063:25:20","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":4147,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11063:27:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"11040:50:20"},{"assignments":[4150],"declarations":[{"constant":false,"id":4150,"mutability":"mutable","name":"treasury","nameLocation":"11113:8:20","nodeType":"VariableDeclaration","scope":4183,"src":"11105:16:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4149,"name":"address","nodeType":"ElementaryTypeName","src":"11105:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":4154,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":4151,"name":"_registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2993,"src":"11124:9:20","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$2784","typeString":"contract IBaluniV1Registry"}},"id":4152,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11134:11:20","memberName":"getTreasury","nodeType":"MemberAccess","referencedDeclaration":2758,"src":"11124:21:20","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":4153,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11124:23:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"11105:42:20"},{"expression":{"arguments":[{"id":4159,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4105,"src":"11203:8:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4160,"name":"amountToSend","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4099,"src":"11213:12:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":4161,"name":"hairCut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4112,"src":"11228:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11213:22:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":4156,"name":"baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2985,"src":"11183:9:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4155,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"11176:6:20","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2136_$","typeString":"type(contract IERC20)"}},"id":4157,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11176:17:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2136","typeString":"contract IERC20"}},"id":4158,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11194:8:20","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":2103,"src":"11176:26:20","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":4163,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11176:60:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4164,"nodeType":"ExpressionStatement","src":"11176:60:20"},{"expression":{"arguments":[{"id":4169,"name":"baluniRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4144,"src":"11278:12:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4172,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4170,"name":"hairCut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4112,"src":"11292:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":4171,"name":"hairCut2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4131,"src":"11302:8:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11292:18:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":4166,"name":"baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2985,"src":"11258:9:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4165,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"11251:6:20","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2136_$","typeString":"type(contract IERC20)"}},"id":4167,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11251:17:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2136","typeString":"contract IERC20"}},"id":4168,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11269:8:20","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":2103,"src":"11251:26:20","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":4173,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11251:60:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4174,"nodeType":"ExpressionStatement","src":"11251:60:20"},{"expression":{"arguments":[{"id":4179,"name":"treasury","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4150,"src":"11353:8:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4180,"name":"hairCut2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4131,"src":"11363:8:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":4176,"name":"baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2985,"src":"11333:9:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4175,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"11326:6:20","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2136_$","typeString":"type(contract IERC20)"}},"id":4177,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11326:17:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2136","typeString":"contract IERC20"}},"id":4178,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11344:8:20","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":2103,"src":"11326:26:20","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":4181,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11326:46:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4182,"nodeType":"ExpressionStatement","src":"11326:46:20"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4187,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4185,"name":"withdrawAmountB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4022,"src":"11400:15:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":4186,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11418:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11400:19:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4201,"nodeType":"IfStatement","src":"11396:174:20","trueBody":{"id":4200,"nodeType":"Block","src":"11421:149:20","statements":[{"assignments":[4189],"declarations":[{"constant":false,"id":4189,"mutability":"mutable","name":"success","nameLocation":"11441:7:20","nodeType":"VariableDeclaration","scope":4200,"src":"11436:12:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4188,"name":"bool","nodeType":"ElementaryTypeName","src":"11436:4:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":4194,"initialValue":{"arguments":[{"id":4191,"name":"withdrawAmountB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4022,"src":"11468:15:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4192,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4105,"src":"11485:8:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":4190,"name":"_handleWithdrawB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4313,"src":"11451:16:20","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_address_$returns$_t_bool_$","typeString":"function (uint256,address) returns (bool)"}},"id":4193,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11451:43:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"11436:58:20"},{"expression":{"arguments":[{"id":4196,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4189,"src":"11517:7:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4661696c656420746f207472616e736665722071756f74654173736574","id":4197,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11526:31:20","typeDescriptions":{"typeIdentifier":"t_stringliteral_c766bbf94e1d4ee2c587f13da8ba24e222f68835e65af46bb7ea43e218ad9a58","typeString":"literal_string \"Failed to transfer quoteAsset\""},"value":"Failed to transfer quoteAsset"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c766bbf94e1d4ee2c587f13da8ba24e222f68835e65af46bb7ea43e218ad9a58","typeString":"literal_string \"Failed to transfer quoteAsset\""}],"id":4195,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"11509:7:20","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4198,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11509:49:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4199,"nodeType":"ExpressionStatement","src":"11509:49:20"}]}},{"expression":{"id":4213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4202,"name":"lastDeposit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2997,"src":"11582:11:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"arguments":[{"id":4209,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"11654:4:20","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1YearnVault_$4314","typeString":"contract BaluniV1YearnVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1YearnVault_$4314","typeString":"contract BaluniV1YearnVault"}],"id":4208,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11646:7:20","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4207,"name":"address","nodeType":"ElementaryTypeName","src":"11646:7:20","typeDescriptions":{}}},"id":4210,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11646:13:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":4205,"name":"_yearnVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2988,"src":"11624:11:20","typeDescriptions":{"typeIdentifier":"t_contract$_IYearnVault_$2956","typeString":"contract IYearnVault"}},"id":4206,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11636:9:20","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":2895,"src":"11624:21:20","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":4211,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11624:36:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":4203,"name":"_yearnVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2988,"src":"11596:11:20","typeDescriptions":{"typeIdentifier":"t_contract$_IYearnVault_$2956","typeString":"contract IYearnVault"}},"id":4204,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11608:15:20","memberName":"convertToAssets","nodeType":"MemberAccess","referencedDeclaration":2934,"src":"11596:27:20","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view external returns (uint256)"}},"id":4212,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11596:65:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11582:79:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4214,"nodeType":"ExpressionStatement","src":"11582:79:20"}]},"functionSelector":"00f714ce","id":4216,"implemented":true,"kind":"function","modifiers":[{"id":3847,"kind":"modifierInvocation","modifierName":{"id":3846,"name":"nonReentrant","nameLocations":["8287:12:20"],"nodeType":"IdentifierPath","referencedDeclaration":1538,"src":"8287:12:20"},"nodeType":"ModifierInvocation","src":"8287:12:20"},{"id":3849,"kind":"modifierInvocation","modifierName":{"id":3848,"name":"whenNotPaused","nameLocations":["8300:13:20"],"nodeType":"IdentifierPath","referencedDeclaration":1371,"src":"8300:13:20"},"nodeType":"ModifierInvocation","src":"8300:13:20"}],"name":"withdraw","nameLocation":"8232:8:20","nodeType":"FunctionDefinition","overrides":{"id":3845,"nodeType":"OverrideSpecifier","overrides":[],"src":"8278:8:20"},"parameters":{"id":3844,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3841,"mutability":"mutable","name":"shares","nameLocation":"8249:6:20","nodeType":"VariableDeclaration","scope":4216,"src":"8241:14:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3840,"name":"uint256","nodeType":"ElementaryTypeName","src":"8241:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3843,"mutability":"mutable","name":"to","nameLocation":"8265:2:20","nodeType":"VariableDeclaration","scope":4216,"src":"8257:10:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3842,"name":"address","nodeType":"ElementaryTypeName","src":"8257:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8240:28:20"},"returnParameters":{"id":3850,"nodeType":"ParameterList","parameters":[],"src":"8314:0:20"},"scope":4314,"src":"8223:3446:20","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":4312,"nodeType":"Block","src":"11770:857:20","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4236,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4226,"name":"withdrawAmountB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4218,"src":"11789:15:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"arguments":[{"arguments":[{"id":4233,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"11845:4:20","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1YearnVault_$4314","typeString":"contract BaluniV1YearnVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1YearnVault_$4314","typeString":"contract BaluniV1YearnVault"}],"id":4232,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11837:7:20","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4231,"name":"address","nodeType":"ElementaryTypeName","src":"11837:7:20","typeDescriptions":{}}},"id":4234,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11837:13:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":4228,"name":"quoteAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2990,"src":"11815:10:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4227,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"11808:6:20","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2136_$","typeString":"type(contract IERC20)"}},"id":4229,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11808:18:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2136","typeString":"contract IERC20"}},"id":4230,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11827:9:20","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":2093,"src":"11808:28:20","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":4235,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11808:43:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11789:62:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e73756666696369656e742071756f74652061737365742062616c616e6365","id":4237,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11867:34:20","typeDescriptions":{"typeIdentifier":"t_stringliteral_8780878e84f6472e4e5080bcf3492594eda23c72f61c3d0cdccdc869ee2d9d30","typeString":"literal_string \"Insufficient quote asset balance\""},"value":"Insufficient quote asset balance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8780878e84f6472e4e5080bcf3492594eda23c72f61c3d0cdccdc869ee2d9d30","typeString":"literal_string \"Insufficient quote asset balance\""}],"id":4225,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"11781:7:20","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4238,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11781:121:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4239,"nodeType":"ExpressionStatement","src":"11781:121:20"},{"assignments":[4241],"declarations":[{"constant":false,"id":4241,"mutability":"mutable","name":"hairCut","nameLocation":"11931:7:20","nodeType":"VariableDeclaration","scope":4312,"src":"11923:15:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4240,"name":"uint256","nodeType":"ElementaryTypeName","src":"11923:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4245,"initialValue":{"arguments":[{"id":4243,"name":"withdrawAmountB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4218,"src":"11950:15:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4242,"name":"_haircut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3806,"src":"11941:8:20","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":4244,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11941:25:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11923:43:20"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4249,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4247,"name":"hairCut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4241,"src":"11985:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":4248,"name":"withdrawAmountB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4218,"src":"11996:15:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11985:26:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"486169726375742065786365656473207769746864726177616c20616d6f756e74","id":4250,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12013:35:20","typeDescriptions":{"typeIdentifier":"t_stringliteral_4afb667d17b0530260ad206e92430288c04d9a1620064032e278e9638d69f21f","typeString":"literal_string \"Haircut exceeds withdrawal amount\""},"value":"Haircut exceeds withdrawal amount"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_4afb667d17b0530260ad206e92430288c04d9a1620064032e278e9638d69f21f","typeString":"literal_string \"Haircut exceeds withdrawal amount\""}],"id":4246,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"11977:7:20","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4251,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11977:72:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4252,"nodeType":"ExpressionStatement","src":"11977:72:20"},{"assignments":[4254],"declarations":[{"constant":false,"id":4254,"mutability":"mutable","name":"amountAfterHaircut","nameLocation":"12078:18:20","nodeType":"VariableDeclaration","scope":4312,"src":"12070:26:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4253,"name":"uint256","nodeType":"ElementaryTypeName","src":"12070:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4258,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4257,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4255,"name":"withdrawAmountB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4218,"src":"12099:15:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":4256,"name":"hairCut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4241,"src":"12117:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12099:25:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12070:54:20"},{"assignments":[4260],"declarations":[{"constant":false,"id":4260,"mutability":"mutable","name":"hairCut2","nameLocation":"12143:8:20","nodeType":"VariableDeclaration","scope":4312,"src":"12135:16:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4259,"name":"uint256","nodeType":"ElementaryTypeName","src":"12135:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4264,"initialValue":{"arguments":[{"id":4262,"name":"hairCut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4241,"src":"12163:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4261,"name":"_haircut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3806,"src":"12154:8:20","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":4263,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12154:17:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12135:36:20"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4268,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4266,"name":"hairCut2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4260,"src":"12190:8:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":4267,"name":"hairCut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4241,"src":"12202:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12190:19:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5365636f6e6461727920686169726375742065786365656473207072696d6172792068616972637574","id":4269,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12211:43:20","typeDescriptions":{"typeIdentifier":"t_stringliteral_76e5ea5e74c767d4b187d60c8d1c088841d1ca2854cb0aa71c073344ff59e324","typeString":"literal_string \"Secondary haircut exceeds primary haircut\""},"value":"Secondary haircut exceeds primary haircut"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_76e5ea5e74c767d4b187d60c8d1c088841d1ca2854cb0aa71c073344ff59e324","typeString":"literal_string \"Secondary haircut exceeds primary haircut\""}],"id":4265,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"12182:7:20","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4270,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12182:73:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4271,"nodeType":"ExpressionStatement","src":"12182:73:20"},{"assignments":[4273],"declarations":[{"constant":false,"id":4273,"mutability":"mutable","name":"baluniRouter","nameLocation":"12284:12:20","nodeType":"VariableDeclaration","scope":4312,"src":"12276:20:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4272,"name":"address","nodeType":"ElementaryTypeName","src":"12276:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":4277,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":4274,"name":"_registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2993,"src":"12299:9:20","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$2784","typeString":"contract IBaluniV1Registry"}},"id":4275,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12309:15:20","memberName":"getBaluniRouter","nodeType":"MemberAccess","referencedDeclaration":2713,"src":"12299:25:20","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":4276,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12299:27:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"12276:50:20"},{"assignments":[4279],"declarations":[{"constant":false,"id":4279,"mutability":"mutable","name":"treasury","nameLocation":"12345:8:20","nodeType":"VariableDeclaration","scope":4312,"src":"12337:16:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4278,"name":"address","nodeType":"ElementaryTypeName","src":"12337:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":4283,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":4280,"name":"_registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2993,"src":"12356:9:20","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$2784","typeString":"contract IBaluniV1Registry"}},"id":4281,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12366:11:20","memberName":"getTreasury","nodeType":"MemberAccess","referencedDeclaration":2758,"src":"12356:21:20","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":4282,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12356:23:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"12337:42:20"},{"expression":{"arguments":[{"id":4288,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4220,"src":"12428:8:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4289,"name":"amountAfterHaircut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4254,"src":"12438:18:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":4285,"name":"quoteAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2990,"src":"12407:10:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4284,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"12400:6:20","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2136_$","typeString":"type(contract IERC20)"}},"id":4286,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12400:18:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2136","typeString":"contract IERC20"}},"id":4287,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12419:8:20","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":2103,"src":"12400:27:20","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":4290,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12400:57:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4291,"nodeType":"ExpressionStatement","src":"12400:57:20"},{"expression":{"arguments":[{"id":4296,"name":"baluniRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4273,"src":"12496:12:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4299,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4297,"name":"hairCut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4241,"src":"12510:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":4298,"name":"hairCut2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4260,"src":"12520:8:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12510:18:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":4293,"name":"quoteAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2990,"src":"12475:10:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4292,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"12468:6:20","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2136_$","typeString":"type(contract IERC20)"}},"id":4294,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12468:18:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2136","typeString":"contract IERC20"}},"id":4295,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12487:8:20","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":2103,"src":"12468:27:20","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":4300,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12468:61:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4301,"nodeType":"ExpressionStatement","src":"12468:61:20"},{"expression":{"arguments":[{"id":4306,"name":"treasury","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4279,"src":"12568:8:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4307,"name":"hairCut2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4260,"src":"12578:8:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":4303,"name":"quoteAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2990,"src":"12547:10:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4302,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"12540:6:20","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2136_$","typeString":"type(contract IERC20)"}},"id":4304,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12540:18:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2136","typeString":"contract IERC20"}},"id":4305,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12559:8:20","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":2103,"src":"12540:27:20","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":4308,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12540:47:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4309,"nodeType":"ExpressionStatement","src":"12540:47:20"},{"expression":{"hexValue":"74727565","id":4310,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"12615:4:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":4224,"id":4311,"nodeType":"Return","src":"12608:11:20"}]},"id":4313,"implemented":true,"kind":"function","modifiers":[],"name":"_handleWithdrawB","nameLocation":"11686:16:20","nodeType":"FunctionDefinition","parameters":{"id":4221,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4218,"mutability":"mutable","name":"withdrawAmountB","nameLocation":"11711:15:20","nodeType":"VariableDeclaration","scope":4313,"src":"11703:23:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4217,"name":"uint256","nodeType":"ElementaryTypeName","src":"11703:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4220,"mutability":"mutable","name":"receiver","nameLocation":"11736:8:20","nodeType":"VariableDeclaration","scope":4313,"src":"11728:16:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4219,"name":"address","nodeType":"ElementaryTypeName","src":"11728:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"11702:43:20"},"returnParameters":{"id":4224,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4223,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4313,"src":"11764:4:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4222,"name":"bool","nodeType":"ElementaryTypeName","src":"11764:4:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"11763:6:20"},"scope":4314,"src":"11677:950:20","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":4315,"src":"773:11857:20","usedErrors":[30,35,211,214,475,480,1332,1335,1500,1620,1625,1630,1639,1644,1649,1780,1793,2175,2178],"usedEvents":[41,219,1324,1329,1759,2070,2079,3007]}],"src":"40:12592:20"},"id":20}},"contracts":{"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol":{"OwnableUpgradeable":{"abi":[{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"NotInitializing","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"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":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Contract module which provides a basic access control mechanism, where there is an account (an owner) that can be granted exclusive access to specific functions. The initial owner is set to the address provided by the deployer. 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.","errors":{"InvalidInitialization()":[{"details":"The contract is already initialized."}],"NotInitializing()":[{"details":"The contract is not initializing."}],"OwnableInvalidOwner(address)":[{"details":"The owner is not a valid owner account. (eg. `address(0)`)"}],"OwnableUnauthorizedAccount(address)":[{"details":"The caller account is not authorized to perform an operation."}]},"events":{"Initialized(uint64)":{"details":"Triggered when the contract has been initialized or reinitialized."}},"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. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"owner()":"8da5cb5b","renounceOwnership()":"715018a6","transferOwnership(address)":"f2fde38b"}},"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"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\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Contract module which provides a basic access control mechanism, where there is an account (an owner) that can be granted exclusive access to specific functions. The initial owner is set to the address provided by the deployer. 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.\",\"errors\":{\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"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. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":\"OwnableUpgradeable\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":20000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {ContextUpgradeable} from \\\"../utils/ContextUpgradeable.sol\\\";\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * The initial owner is set to the address provided by the deployer. This can\\n * later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract OwnableUpgradeable is Initializable, ContextUpgradeable {\\n    /// @custom:storage-location erc7201:openzeppelin.storage.Ownable\\n    struct OwnableStorage {\\n        address _owner;\\n    }\\n\\n    // keccak256(abi.encode(uint256(keccak256(\\\"openzeppelin.storage.Ownable\\\")) - 1)) & ~bytes32(uint256(0xff))\\n    bytes32 private constant OwnableStorageLocation = 0x9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300;\\n\\n    function _getOwnableStorage() private pure returns (OwnableStorage storage $) {\\n        assembly {\\n            $.slot := OwnableStorageLocation\\n        }\\n    }\\n\\n    /**\\n     * @dev The caller account is not authorized to perform an operation.\\n     */\\n    error OwnableUnauthorizedAccount(address account);\\n\\n    /**\\n     * @dev The owner is not a valid owner account. (eg. `address(0)`)\\n     */\\n    error OwnableInvalidOwner(address owner);\\n\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n    /**\\n     * @dev Initializes the contract setting the address provided by the deployer as the initial owner.\\n     */\\n    function __Ownable_init(address initialOwner) internal onlyInitializing {\\n        __Ownable_init_unchained(initialOwner);\\n    }\\n\\n    function __Ownable_init_unchained(address initialOwner) internal onlyInitializing {\\n        if (initialOwner == address(0)) {\\n            revert OwnableInvalidOwner(address(0));\\n        }\\n        _transferOwnership(initialOwner);\\n    }\\n\\n    /**\\n     * @dev Throws if called by any account other than the owner.\\n     */\\n    modifier onlyOwner() {\\n        _checkOwner();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Returns the address of the current owner.\\n     */\\n    function owner() public view virtual returns (address) {\\n        OwnableStorage storage $ = _getOwnableStorage();\\n        return $._owner;\\n    }\\n\\n    /**\\n     * @dev Throws if the sender is not the owner.\\n     */\\n    function _checkOwner() internal view virtual {\\n        if (owner() != _msgSender()) {\\n            revert OwnableUnauthorizedAccount(_msgSender());\\n        }\\n    }\\n\\n    /**\\n     * @dev Leaves the contract without owner. It will not be possible to call\\n     * `onlyOwner` functions. Can only be called by the current owner.\\n     *\\n     * NOTE: Renouncing ownership will leave the contract without an owner,\\n     * thereby disabling any functionality that is only available to the owner.\\n     */\\n    function renounceOwnership() public virtual onlyOwner {\\n        _transferOwnership(address(0));\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public virtual onlyOwner {\\n        if (newOwner == address(0)) {\\n            revert OwnableInvalidOwner(address(0));\\n        }\\n        _transferOwnership(newOwner);\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Internal function without access restriction.\\n     */\\n    function _transferOwnership(address newOwner) internal virtual {\\n        OwnableStorage storage $ = _getOwnableStorage();\\n        address oldOwner = $._owner;\\n        $._owner = newOwner;\\n        emit OwnershipTransferred(oldOwner, newOwner);\\n    }\\n}\\n\",\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n *     function initialize() initializer public {\\n *         __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n *     }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n *     function initializeV2() reinitializer(2) public {\\n *         __ERC20Permit_init(\\\"MyToken\\\");\\n *     }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n *     _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n    /**\\n     * @dev Storage of the initializable contract.\\n     *\\n     * It's implemented on a custom ERC-7201 namespace to reduce the risk of storage collisions\\n     * when using with upgradeable contracts.\\n     *\\n     * @custom:storage-location erc7201:openzeppelin.storage.Initializable\\n     */\\n    struct InitializableStorage {\\n        /**\\n         * @dev Indicates that the contract has been initialized.\\n         */\\n        uint64 _initialized;\\n        /**\\n         * @dev Indicates that the contract is in the process of being initialized.\\n         */\\n        bool _initializing;\\n    }\\n\\n    // keccak256(abi.encode(uint256(keccak256(\\\"openzeppelin.storage.Initializable\\\")) - 1)) & ~bytes32(uint256(0xff))\\n    bytes32 private constant INITIALIZABLE_STORAGE = 0xf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00;\\n\\n    /**\\n     * @dev The contract is already initialized.\\n     */\\n    error InvalidInitialization();\\n\\n    /**\\n     * @dev The contract is not initializing.\\n     */\\n    error NotInitializing();\\n\\n    /**\\n     * @dev Triggered when the contract has been initialized or reinitialized.\\n     */\\n    event Initialized(uint64 version);\\n\\n    /**\\n     * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n     * `onlyInitializing` functions can be used to initialize parent contracts.\\n     *\\n     * Similar to `reinitializer(1)`, except that in the context of a constructor an `initializer` may be invoked any\\n     * number of times. This behavior in the constructor can be useful during testing and is not expected to be used in\\n     * production.\\n     *\\n     * Emits an {Initialized} event.\\n     */\\n    modifier initializer() {\\n        // solhint-disable-next-line var-name-mixedcase\\n        InitializableStorage storage $ = _getInitializableStorage();\\n\\n        // Cache values to avoid duplicated sloads\\n        bool isTopLevelCall = !$._initializing;\\n        uint64 initialized = $._initialized;\\n\\n        // Allowed calls:\\n        // - initialSetup: the contract is not in the initializing state and no previous version was\\n        //                 initialized\\n        // - construction: the contract is initialized at version 1 (no reininitialization) and the\\n        //                 current contract is just being deployed\\n        bool initialSetup = initialized == 0 && isTopLevelCall;\\n        bool construction = initialized == 1 && address(this).code.length == 0;\\n\\n        if (!initialSetup && !construction) {\\n            revert InvalidInitialization();\\n        }\\n        $._initialized = 1;\\n        if (isTopLevelCall) {\\n            $._initializing = true;\\n        }\\n        _;\\n        if (isTopLevelCall) {\\n            $._initializing = false;\\n            emit Initialized(1);\\n        }\\n    }\\n\\n    /**\\n     * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n     * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n     * used to initialize parent contracts.\\n     *\\n     * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n     * are added through upgrades and that require initialization.\\n     *\\n     * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n     * cannot be nested. If one is invoked in the context of another, execution will revert.\\n     *\\n     * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n     * a contract, executing them in the right order is up to the developer or operator.\\n     *\\n     * WARNING: Setting the version to 2**64 - 1 will prevent any future reinitialization.\\n     *\\n     * Emits an {Initialized} event.\\n     */\\n    modifier reinitializer(uint64 version) {\\n        // solhint-disable-next-line var-name-mixedcase\\n        InitializableStorage storage $ = _getInitializableStorage();\\n\\n        if ($._initializing || $._initialized >= version) {\\n            revert InvalidInitialization();\\n        }\\n        $._initialized = version;\\n        $._initializing = true;\\n        _;\\n        $._initializing = false;\\n        emit Initialized(version);\\n    }\\n\\n    /**\\n     * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n     * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n     */\\n    modifier onlyInitializing() {\\n        _checkInitializing();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Reverts if the contract is not in an initializing state. See {onlyInitializing}.\\n     */\\n    function _checkInitializing() internal view virtual {\\n        if (!_isInitializing()) {\\n            revert NotInitializing();\\n        }\\n    }\\n\\n    /**\\n     * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n     * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n     * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n     * through proxies.\\n     *\\n     * Emits an {Initialized} event the first time it is successfully executed.\\n     */\\n    function _disableInitializers() internal virtual {\\n        // solhint-disable-next-line var-name-mixedcase\\n        InitializableStorage storage $ = _getInitializableStorage();\\n\\n        if ($._initializing) {\\n            revert InvalidInitialization();\\n        }\\n        if ($._initialized != type(uint64).max) {\\n            $._initialized = type(uint64).max;\\n            emit Initialized(type(uint64).max);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n     */\\n    function _getInitializedVersion() internal view returns (uint64) {\\n        return _getInitializableStorage()._initialized;\\n    }\\n\\n    /**\\n     * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n     */\\n    function _isInitializing() internal view returns (bool) {\\n        return _getInitializableStorage()._initializing;\\n    }\\n\\n    /**\\n     * @dev Returns a pointer to the storage namespace.\\n     */\\n    // solhint-disable-next-line var-name-mixedcase\\n    function _getInitializableStorage() private pure returns (InitializableStorage storage $) {\\n        assembly {\\n            $.slot := INITIALIZABLE_STORAGE\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)\\n\\npragma solidity ^0.8.20;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n    function __Context_init() internal onlyInitializing {\\n    }\\n\\n    function __Context_init_unchained() internal onlyInitializing {\\n    }\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n\\n    function _contextSuffixLength() internal view virtual returns (uint256) {\\n        return 0;\\n    }\\n}\\n\",\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol":{"Initializable":{"abi":[{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"NotInitializing","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","type":"event"}],"devdoc":{"custom:oz-upgrades-unsafe-allow":"constructor constructor() {     _disableInitializers(); } ``` ====","details":"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] ```solidity 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] ```","errors":{"InvalidInitialization()":[{"details":"The contract is already initialized."}],"NotInitializing()":[{"details":"The contract is not initializing."}]},"events":{"Initialized(uint64)":{"details":"Triggered when the contract has been initialized or reinitialized."}},"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"}],\"devdoc\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor constructor() {     _disableInitializers(); } ``` ====\",\"details\":\"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] ```solidity 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] ```\",\"errors\":{\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":\"Initializable\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":20000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n *     function initialize() initializer public {\\n *         __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n *     }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n *     function initializeV2() reinitializer(2) public {\\n *         __ERC20Permit_init(\\\"MyToken\\\");\\n *     }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n *     _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n    /**\\n     * @dev Storage of the initializable contract.\\n     *\\n     * It's implemented on a custom ERC-7201 namespace to reduce the risk of storage collisions\\n     * when using with upgradeable contracts.\\n     *\\n     * @custom:storage-location erc7201:openzeppelin.storage.Initializable\\n     */\\n    struct InitializableStorage {\\n        /**\\n         * @dev Indicates that the contract has been initialized.\\n         */\\n        uint64 _initialized;\\n        /**\\n         * @dev Indicates that the contract is in the process of being initialized.\\n         */\\n        bool _initializing;\\n    }\\n\\n    // keccak256(abi.encode(uint256(keccak256(\\\"openzeppelin.storage.Initializable\\\")) - 1)) & ~bytes32(uint256(0xff))\\n    bytes32 private constant INITIALIZABLE_STORAGE = 0xf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00;\\n\\n    /**\\n     * @dev The contract is already initialized.\\n     */\\n    error InvalidInitialization();\\n\\n    /**\\n     * @dev The contract is not initializing.\\n     */\\n    error NotInitializing();\\n\\n    /**\\n     * @dev Triggered when the contract has been initialized or reinitialized.\\n     */\\n    event Initialized(uint64 version);\\n\\n    /**\\n     * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n     * `onlyInitializing` functions can be used to initialize parent contracts.\\n     *\\n     * Similar to `reinitializer(1)`, except that in the context of a constructor an `initializer` may be invoked any\\n     * number of times. This behavior in the constructor can be useful during testing and is not expected to be used in\\n     * production.\\n     *\\n     * Emits an {Initialized} event.\\n     */\\n    modifier initializer() {\\n        // solhint-disable-next-line var-name-mixedcase\\n        InitializableStorage storage $ = _getInitializableStorage();\\n\\n        // Cache values to avoid duplicated sloads\\n        bool isTopLevelCall = !$._initializing;\\n        uint64 initialized = $._initialized;\\n\\n        // Allowed calls:\\n        // - initialSetup: the contract is not in the initializing state and no previous version was\\n        //                 initialized\\n        // - construction: the contract is initialized at version 1 (no reininitialization) and the\\n        //                 current contract is just being deployed\\n        bool initialSetup = initialized == 0 && isTopLevelCall;\\n        bool construction = initialized == 1 && address(this).code.length == 0;\\n\\n        if (!initialSetup && !construction) {\\n            revert InvalidInitialization();\\n        }\\n        $._initialized = 1;\\n        if (isTopLevelCall) {\\n            $._initializing = true;\\n        }\\n        _;\\n        if (isTopLevelCall) {\\n            $._initializing = false;\\n            emit Initialized(1);\\n        }\\n    }\\n\\n    /**\\n     * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n     * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n     * used to initialize parent contracts.\\n     *\\n     * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n     * are added through upgrades and that require initialization.\\n     *\\n     * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n     * cannot be nested. If one is invoked in the context of another, execution will revert.\\n     *\\n     * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n     * a contract, executing them in the right order is up to the developer or operator.\\n     *\\n     * WARNING: Setting the version to 2**64 - 1 will prevent any future reinitialization.\\n     *\\n     * Emits an {Initialized} event.\\n     */\\n    modifier reinitializer(uint64 version) {\\n        // solhint-disable-next-line var-name-mixedcase\\n        InitializableStorage storage $ = _getInitializableStorage();\\n\\n        if ($._initializing || $._initialized >= version) {\\n            revert InvalidInitialization();\\n        }\\n        $._initialized = version;\\n        $._initializing = true;\\n        _;\\n        $._initializing = false;\\n        emit Initialized(version);\\n    }\\n\\n    /**\\n     * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n     * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n     */\\n    modifier onlyInitializing() {\\n        _checkInitializing();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Reverts if the contract is not in an initializing state. See {onlyInitializing}.\\n     */\\n    function _checkInitializing() internal view virtual {\\n        if (!_isInitializing()) {\\n            revert NotInitializing();\\n        }\\n    }\\n\\n    /**\\n     * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n     * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n     * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n     * through proxies.\\n     *\\n     * Emits an {Initialized} event the first time it is successfully executed.\\n     */\\n    function _disableInitializers() internal virtual {\\n        // solhint-disable-next-line var-name-mixedcase\\n        InitializableStorage storage $ = _getInitializableStorage();\\n\\n        if ($._initializing) {\\n            revert InvalidInitialization();\\n        }\\n        if ($._initialized != type(uint64).max) {\\n            $._initialized = type(uint64).max;\\n            emit Initialized(type(uint64).max);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n     */\\n    function _getInitializedVersion() internal view returns (uint64) {\\n        return _getInitializableStorage()._initialized;\\n    }\\n\\n    /**\\n     * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n     */\\n    function _isInitializing() internal view returns (bool) {\\n        return _getInitializableStorage()._initializing;\\n    }\\n\\n    /**\\n     * @dev Returns a pointer to the storage namespace.\\n     */\\n    // solhint-disable-next-line var-name-mixedcase\\n    function _getInitializableStorage() private pure returns (InitializableStorage storage $) {\\n        assembly {\\n            $.slot := INITIALIZABLE_STORAGE\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol":{"UUPSUpgradeable":{"abi":[{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"AddressEmptyCode","type":"error"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"name":"ERC1967InvalidImplementation","type":"error"},{"inputs":[],"name":"ERC1967NonPayable","type":"error"},{"inputs":[],"name":"FailedInnerCall","type":"error"},{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"NotInitializing","type":"error"},{"inputs":[],"name":"UUPSUnauthorizedCallContext","type":"error"},{"inputs":[{"internalType":"bytes32","name":"slot","type":"bytes32"}],"name":"UUPSUnsupportedProxiableUUID","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"inputs":[],"name":"UPGRADE_INTERFACE_VERSION","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"}],"devdoc":{"details":"An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy. A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing `UUPSUpgradeable` with a custom implementation of upgrades. The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism.","errors":{"AddressEmptyCode(address)":[{"details":"There's no code at `target` (it is not a contract)."}],"ERC1967InvalidImplementation(address)":[{"details":"The `implementation` of the proxy is invalid."}],"ERC1967NonPayable()":[{"details":"An upgrade function sees `msg.value > 0` that may be lost."}],"FailedInnerCall()":[{"details":"A call to an address target failed. The target may have reverted."}],"InvalidInitialization()":[{"details":"The contract is already initialized."}],"NotInitializing()":[{"details":"The contract is not initializing."}],"UUPSUnauthorizedCallContext()":[{"details":"The call is from an unauthorized context."}],"UUPSUnsupportedProxiableUUID(bytes32)":[{"details":"The storage `slot` is unsupported as a UUID."}]},"events":{"Initialized(uint64)":{"details":"Triggered when the contract has been initialized or reinitialized."},"Upgraded(address)":{"details":"Emitted when the implementation is upgraded."}},"kind":"dev","methods":{"proxiableUUID()":{"details":"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier."},"upgradeToAndCall(address,bytes)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."}},"stateVariables":{"UPGRADE_INTERFACE_VERSION":{"details":"The version of the upgrade interface of the contract. If this getter is missing, both `upgradeTo(address)` and `upgradeToAndCall(address,bytes)` are present, and `upgradeTo` must be used if no function should be called, while `upgradeToAndCall` will invoke the `receive` function if the second argument is the empty byte string. If the getter returns `\"5.0.0\"`, only `upgradeToAndCall(address,bytes)` is present, and the second argument must be the empty byte string if no function should be called, making it impossible to invoke the `receive` function during an upgrade."},"__self":{"custom:oz-upgrades-unsafe-allow":"state-variable-immutable"}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"UPGRADE_INTERFACE_VERSION()":"ad3cb1cc","proxiableUUID()":"52d1902d","upgradeToAndCall(address,bytes)":"4f1ef286"}},"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UUPSUnauthorizedCallContext\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"UUPSUnsupportedProxiableUUID\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"UPGRADE_INTERFACE_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy. A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing `UUPSUpgradeable` with a custom implementation of upgrades. The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism.\",\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}],\"FailedInnerCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"UUPSUnauthorizedCallContext()\":[{\"details\":\"The call is from an unauthorized context.\"}],\"UUPSUnsupportedProxiableUUID(bytes32)\":[{\"details\":\"The storage `slot` is unsupported as a UUID.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"proxiableUUID()\":{\"details\":\"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"stateVariables\":{\"UPGRADE_INTERFACE_VERSION\":{\"details\":\"The version of the upgrade interface of the contract. If this getter is missing, both `upgradeTo(address)` and `upgradeToAndCall(address,bytes)` are present, and `upgradeTo` must be used if no function should be called, while `upgradeToAndCall` will invoke the `receive` function if the second argument is the empty byte string. If the getter returns `\\\"5.0.0\\\"`, only `upgradeToAndCall(address,bytes)` is present, and the second argument must be the empty byte string if no function should be called, making it impossible to invoke the `receive` function during an upgrade.\"},\"__self\":{\"custom:oz-upgrades-unsafe-allow\":\"state-variable-immutable\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":\"UUPSUpgradeable\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":20000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n *     function initialize() initializer public {\\n *         __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n *     }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n *     function initializeV2() reinitializer(2) public {\\n *         __ERC20Permit_init(\\\"MyToken\\\");\\n *     }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n *     _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n    /**\\n     * @dev Storage of the initializable contract.\\n     *\\n     * It's implemented on a custom ERC-7201 namespace to reduce the risk of storage collisions\\n     * when using with upgradeable contracts.\\n     *\\n     * @custom:storage-location erc7201:openzeppelin.storage.Initializable\\n     */\\n    struct InitializableStorage {\\n        /**\\n         * @dev Indicates that the contract has been initialized.\\n         */\\n        uint64 _initialized;\\n        /**\\n         * @dev Indicates that the contract is in the process of being initialized.\\n         */\\n        bool _initializing;\\n    }\\n\\n    // keccak256(abi.encode(uint256(keccak256(\\\"openzeppelin.storage.Initializable\\\")) - 1)) & ~bytes32(uint256(0xff))\\n    bytes32 private constant INITIALIZABLE_STORAGE = 0xf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00;\\n\\n    /**\\n     * @dev The contract is already initialized.\\n     */\\n    error InvalidInitialization();\\n\\n    /**\\n     * @dev The contract is not initializing.\\n     */\\n    error NotInitializing();\\n\\n    /**\\n     * @dev Triggered when the contract has been initialized or reinitialized.\\n     */\\n    event Initialized(uint64 version);\\n\\n    /**\\n     * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n     * `onlyInitializing` functions can be used to initialize parent contracts.\\n     *\\n     * Similar to `reinitializer(1)`, except that in the context of a constructor an `initializer` may be invoked any\\n     * number of times. This behavior in the constructor can be useful during testing and is not expected to be used in\\n     * production.\\n     *\\n     * Emits an {Initialized} event.\\n     */\\n    modifier initializer() {\\n        // solhint-disable-next-line var-name-mixedcase\\n        InitializableStorage storage $ = _getInitializableStorage();\\n\\n        // Cache values to avoid duplicated sloads\\n        bool isTopLevelCall = !$._initializing;\\n        uint64 initialized = $._initialized;\\n\\n        // Allowed calls:\\n        // - initialSetup: the contract is not in the initializing state and no previous version was\\n        //                 initialized\\n        // - construction: the contract is initialized at version 1 (no reininitialization) and the\\n        //                 current contract is just being deployed\\n        bool initialSetup = initialized == 0 && isTopLevelCall;\\n        bool construction = initialized == 1 && address(this).code.length == 0;\\n\\n        if (!initialSetup && !construction) {\\n            revert InvalidInitialization();\\n        }\\n        $._initialized = 1;\\n        if (isTopLevelCall) {\\n            $._initializing = true;\\n        }\\n        _;\\n        if (isTopLevelCall) {\\n            $._initializing = false;\\n            emit Initialized(1);\\n        }\\n    }\\n\\n    /**\\n     * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n     * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n     * used to initialize parent contracts.\\n     *\\n     * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n     * are added through upgrades and that require initialization.\\n     *\\n     * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n     * cannot be nested. If one is invoked in the context of another, execution will revert.\\n     *\\n     * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n     * a contract, executing them in the right order is up to the developer or operator.\\n     *\\n     * WARNING: Setting the version to 2**64 - 1 will prevent any future reinitialization.\\n     *\\n     * Emits an {Initialized} event.\\n     */\\n    modifier reinitializer(uint64 version) {\\n        // solhint-disable-next-line var-name-mixedcase\\n        InitializableStorage storage $ = _getInitializableStorage();\\n\\n        if ($._initializing || $._initialized >= version) {\\n            revert InvalidInitialization();\\n        }\\n        $._initialized = version;\\n        $._initializing = true;\\n        _;\\n        $._initializing = false;\\n        emit Initialized(version);\\n    }\\n\\n    /**\\n     * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n     * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n     */\\n    modifier onlyInitializing() {\\n        _checkInitializing();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Reverts if the contract is not in an initializing state. See {onlyInitializing}.\\n     */\\n    function _checkInitializing() internal view virtual {\\n        if (!_isInitializing()) {\\n            revert NotInitializing();\\n        }\\n    }\\n\\n    /**\\n     * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n     * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n     * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n     * through proxies.\\n     *\\n     * Emits an {Initialized} event the first time it is successfully executed.\\n     */\\n    function _disableInitializers() internal virtual {\\n        // solhint-disable-next-line var-name-mixedcase\\n        InitializableStorage storage $ = _getInitializableStorage();\\n\\n        if ($._initializing) {\\n            revert InvalidInitialization();\\n        }\\n        if ($._initialized != type(uint64).max) {\\n            $._initialized = type(uint64).max;\\n            emit Initialized(type(uint64).max);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n     */\\n    function _getInitializedVersion() internal view returns (uint64) {\\n        return _getInitializableStorage()._initialized;\\n    }\\n\\n    /**\\n     * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n     */\\n    function _isInitializing() internal view returns (bool) {\\n        return _getInitializableStorage()._initializing;\\n    }\\n\\n    /**\\n     * @dev Returns a pointer to the storage namespace.\\n     */\\n    // solhint-disable-next-line var-name-mixedcase\\n    function _getInitializableStorage() private pure returns (InitializableStorage storage $) {\\n        assembly {\\n            $.slot := INITIALIZABLE_STORAGE\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/utils/UUPSUpgradeable.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC1822Proxiable} from \\\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\\\";\\nimport {ERC1967Utils} from \\\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\\\";\\nimport {Initializable} from \\\"./Initializable.sol\\\";\\n\\n/**\\n * @dev An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an\\n * {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy.\\n *\\n * A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is\\n * reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing\\n * `UUPSUpgradeable` with a custom implementation of upgrades.\\n *\\n * The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism.\\n */\\nabstract contract UUPSUpgradeable is Initializable, IERC1822Proxiable {\\n    /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\\n    address private immutable __self = address(this);\\n\\n    /**\\n     * @dev The version of the upgrade interface of the contract. If this getter is missing, both `upgradeTo(address)`\\n     * and `upgradeToAndCall(address,bytes)` are present, and `upgradeTo` must be used if no function should be called,\\n     * while `upgradeToAndCall` will invoke the `receive` function if the second argument is the empty byte string.\\n     * If the getter returns `\\\"5.0.0\\\"`, only `upgradeToAndCall(address,bytes)` is present, and the second argument must\\n     * be the empty byte string if no function should be called, making it impossible to invoke the `receive` function\\n     * during an upgrade.\\n     */\\n    string public constant UPGRADE_INTERFACE_VERSION = \\\"5.0.0\\\";\\n\\n    /**\\n     * @dev The call is from an unauthorized context.\\n     */\\n    error UUPSUnauthorizedCallContext();\\n\\n    /**\\n     * @dev The storage `slot` is unsupported as a UUID.\\n     */\\n    error UUPSUnsupportedProxiableUUID(bytes32 slot);\\n\\n    /**\\n     * @dev Check that the execution is being performed through a delegatecall call and that the execution context is\\n     * a proxy contract with an implementation (as defined in ERC1967) pointing to self. This should only be the case\\n     * for UUPS and transparent proxies that are using the current contract as their implementation. Execution of a\\n     * function through ERC1167 minimal proxies (clones) would not normally pass this test, but is not guaranteed to\\n     * fail.\\n     */\\n    modifier onlyProxy() {\\n        _checkProxy();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Check that the execution is not being performed through a delegate call. This allows a function to be\\n     * callable on the implementing contract but not through proxies.\\n     */\\n    modifier notDelegated() {\\n        _checkNotDelegated();\\n        _;\\n    }\\n\\n    function __UUPSUpgradeable_init() internal onlyInitializing {\\n    }\\n\\n    function __UUPSUpgradeable_init_unchained() internal onlyInitializing {\\n    }\\n    /**\\n     * @dev Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the\\n     * implementation. It is used to validate the implementation's compatibility when performing an upgrade.\\n     *\\n     * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n     * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n     * function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\\n     */\\n    function proxiableUUID() external view virtual notDelegated returns (bytes32) {\\n        return ERC1967Utils.IMPLEMENTATION_SLOT;\\n    }\\n\\n    /**\\n     * @dev Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call\\n     * encoded in `data`.\\n     *\\n     * Calls {_authorizeUpgrade}.\\n     *\\n     * Emits an {Upgraded} event.\\n     *\\n     * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\\n     */\\n    function upgradeToAndCall(address newImplementation, bytes memory data) public payable virtual onlyProxy {\\n        _authorizeUpgrade(newImplementation);\\n        _upgradeToAndCallUUPS(newImplementation, data);\\n    }\\n\\n    /**\\n     * @dev Reverts if the execution is not performed via delegatecall or the execution\\n     * context is not of a proxy with an ERC1967-compliant implementation pointing to self.\\n     * See {_onlyProxy}.\\n     */\\n    function _checkProxy() internal view virtual {\\n        if (\\n            address(this) == __self || // Must be called through delegatecall\\n            ERC1967Utils.getImplementation() != __self // Must be called through an active proxy\\n        ) {\\n            revert UUPSUnauthorizedCallContext();\\n        }\\n    }\\n\\n    /**\\n     * @dev Reverts if the execution is performed via delegatecall.\\n     * See {notDelegated}.\\n     */\\n    function _checkNotDelegated() internal view virtual {\\n        if (address(this) != __self) {\\n            // Must not be called through delegatecall\\n            revert UUPSUnauthorizedCallContext();\\n        }\\n    }\\n\\n    /**\\n     * @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract. Called by\\n     * {upgradeToAndCall}.\\n     *\\n     * Normally, this function will use an xref:access.adoc[access control] modifier such as {Ownable-onlyOwner}.\\n     *\\n     * ```solidity\\n     * function _authorizeUpgrade(address) internal onlyOwner {}\\n     * ```\\n     */\\n    function _authorizeUpgrade(address newImplementation) internal virtual;\\n\\n    /**\\n     * @dev Performs an implementation upgrade with a security check for UUPS proxies, and additional setup call.\\n     *\\n     * As a security check, {proxiableUUID} is invoked in the new implementation, and the return value\\n     * is expected to be the implementation slot in ERC1967.\\n     *\\n     * Emits an {IERC1967-Upgraded} event.\\n     */\\n    function _upgradeToAndCallUUPS(address newImplementation, bytes memory data) private {\\n        try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n            if (slot != ERC1967Utils.IMPLEMENTATION_SLOT) {\\n                revert UUPSUnsupportedProxiableUUID(slot);\\n            }\\n            ERC1967Utils.upgradeToAndCall(newImplementation, data);\\n        } catch {\\n            // The implementation is not UUPS\\n            revert ERC1967Utils.ERC1967InvalidImplementation(newImplementation);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x3f13b947637c4969c0644cab4ef399cdc4b67f101463b8775c5a43b118558e53\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n    /**\\n     * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n     * address.\\n     *\\n     * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n     * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n     * function revert if invoked through a proxy.\\n     */\\n    function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x2a1f9944df2015c081d89cd41ba22ffaf10aa6285969f0dc612b235cc448999c\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/ERC1967/ERC1967Utils.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IBeacon} from \\\"../beacon/IBeacon.sol\\\";\\nimport {Address} from \\\"../../utils/Address.sol\\\";\\nimport {StorageSlot} from \\\"../../utils/StorageSlot.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n */\\nlibrary ERC1967Utils {\\n    // We re-declare ERC-1967 events here because they can't be used directly from IERC1967.\\n    // This will be fixed in Solidity 0.8.21. At that point we should remove these events.\\n    /**\\n     * @dev Emitted when the implementation is upgraded.\\n     */\\n    event Upgraded(address indexed implementation);\\n\\n    /**\\n     * @dev Emitted when the admin account has changed.\\n     */\\n    event AdminChanged(address previousAdmin, address newAdmin);\\n\\n    /**\\n     * @dev Emitted when the beacon is changed.\\n     */\\n    event BeaconUpgraded(address indexed beacon);\\n\\n    /**\\n     * @dev Storage slot with the address of the current implementation.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1.\\n     */\\n    // solhint-disable-next-line private-vars-leading-underscore\\n    bytes32 internal constant IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n    /**\\n     * @dev The `implementation` of the proxy is invalid.\\n     */\\n    error ERC1967InvalidImplementation(address implementation);\\n\\n    /**\\n     * @dev The `admin` of the proxy is invalid.\\n     */\\n    error ERC1967InvalidAdmin(address admin);\\n\\n    /**\\n     * @dev The `beacon` of the proxy is invalid.\\n     */\\n    error ERC1967InvalidBeacon(address beacon);\\n\\n    /**\\n     * @dev An upgrade function sees `msg.value > 0` that may be lost.\\n     */\\n    error ERC1967NonPayable();\\n\\n    /**\\n     * @dev Returns the current implementation address.\\n     */\\n    function getImplementation() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(IMPLEMENTATION_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new address in the EIP1967 implementation slot.\\n     */\\n    function _setImplementation(address newImplementation) private {\\n        if (newImplementation.code.length == 0) {\\n            revert ERC1967InvalidImplementation(newImplementation);\\n        }\\n        StorageSlot.getAddressSlot(IMPLEMENTATION_SLOT).value = newImplementation;\\n    }\\n\\n    /**\\n     * @dev Performs implementation upgrade with additional setup call if data is nonempty.\\n     * This function is payable only if the setup call is performed, otherwise `msg.value` is rejected\\n     * to avoid stuck value in the contract.\\n     *\\n     * Emits an {IERC1967-Upgraded} event.\\n     */\\n    function upgradeToAndCall(address newImplementation, bytes memory data) internal {\\n        _setImplementation(newImplementation);\\n        emit Upgraded(newImplementation);\\n\\n        if (data.length > 0) {\\n            Address.functionDelegateCall(newImplementation, data);\\n        } else {\\n            _checkNonPayable();\\n        }\\n    }\\n\\n    /**\\n     * @dev Storage slot with the admin of the contract.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1.\\n     */\\n    // solhint-disable-next-line private-vars-leading-underscore\\n    bytes32 internal constant ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n    /**\\n     * @dev Returns the current admin.\\n     *\\n     * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using\\n     * the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\\n     * `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\\n     */\\n    function getAdmin() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(ADMIN_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new address in the EIP1967 admin slot.\\n     */\\n    function _setAdmin(address newAdmin) private {\\n        if (newAdmin == address(0)) {\\n            revert ERC1967InvalidAdmin(address(0));\\n        }\\n        StorageSlot.getAddressSlot(ADMIN_SLOT).value = newAdmin;\\n    }\\n\\n    /**\\n     * @dev Changes the admin of the proxy.\\n     *\\n     * Emits an {IERC1967-AdminChanged} event.\\n     */\\n    function changeAdmin(address newAdmin) internal {\\n        emit AdminChanged(getAdmin(), newAdmin);\\n        _setAdmin(newAdmin);\\n    }\\n\\n    /**\\n     * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.beacon\\\" subtracted by 1.\\n     */\\n    // solhint-disable-next-line private-vars-leading-underscore\\n    bytes32 internal constant BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n    /**\\n     * @dev Returns the current beacon.\\n     */\\n    function getBeacon() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(BEACON_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new beacon in the EIP1967 beacon slot.\\n     */\\n    function _setBeacon(address newBeacon) private {\\n        if (newBeacon.code.length == 0) {\\n            revert ERC1967InvalidBeacon(newBeacon);\\n        }\\n\\n        StorageSlot.getAddressSlot(BEACON_SLOT).value = newBeacon;\\n\\n        address beaconImplementation = IBeacon(newBeacon).implementation();\\n        if (beaconImplementation.code.length == 0) {\\n            revert ERC1967InvalidImplementation(beaconImplementation);\\n        }\\n    }\\n\\n    /**\\n     * @dev Change the beacon and trigger a setup call if data is nonempty.\\n     * This function is payable only if the setup call is performed, otherwise `msg.value` is rejected\\n     * to avoid stuck value in the contract.\\n     *\\n     * Emits an {IERC1967-BeaconUpgraded} event.\\n     *\\n     * CAUTION: Invoking this function has no effect on an instance of {BeaconProxy} since v5, since\\n     * it uses an immutable beacon without looking at the value of the ERC-1967 beacon slot for\\n     * efficiency.\\n     */\\n    function upgradeBeaconToAndCall(address newBeacon, bytes memory data) internal {\\n        _setBeacon(newBeacon);\\n        emit BeaconUpgraded(newBeacon);\\n\\n        if (data.length > 0) {\\n            Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\\n        } else {\\n            _checkNonPayable();\\n        }\\n    }\\n\\n    /**\\n     * @dev Reverts if `msg.value` is not zero. It can be used to avoid `msg.value` stuck in the contract\\n     * if an upgrade doesn't perform an initialization call.\\n     */\\n    function _checkNonPayable() private {\\n        if (msg.value > 0) {\\n            revert ERC1967NonPayable();\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x06a78f9b3ee3e6d0eb4e4cd635ba49960bea34cac1db8c0a27c75f2319f1fd65\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n    /**\\n     * @dev Must return an address that can be used as a delegate call target.\\n     *\\n     * {UpgradeableBeacon} will check that this address is a contract.\\n     */\\n    function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n    /**\\n     * @dev The ETH balance of the account is not enough to perform the operation.\\n     */\\n    error AddressInsufficientBalance(address account);\\n\\n    /**\\n     * @dev There's no code at `target` (it is not a contract).\\n     */\\n    error AddressEmptyCode(address target);\\n\\n    /**\\n     * @dev A call to an address target failed. The target may have reverted.\\n     */\\n    error FailedInnerCall();\\n\\n    /**\\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n     * `recipient`, forwarding all available gas and reverting on errors.\\n     *\\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n     * imposed by `transfer`, making them unable to receive funds via\\n     * `transfer`. {sendValue} removes this limitation.\\n     *\\n     * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n     *\\n     * IMPORTANT: because control is transferred to `recipient`, care must be\\n     * taken to not create reentrancy vulnerabilities. Consider using\\n     * {ReentrancyGuard} or the\\n     * https://solidity.readthedocs.io/en/v0.8.20/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n     */\\n    function sendValue(address payable recipient, uint256 amount) internal {\\n        if (address(this).balance < amount) {\\n            revert AddressInsufficientBalance(address(this));\\n        }\\n\\n        (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n        if (!success) {\\n            revert FailedInnerCall();\\n        }\\n    }\\n\\n    /**\\n     * @dev Performs a Solidity function call using a low level `call`. A\\n     * plain `call` is an unsafe replacement for a function call: use this\\n     * function instead.\\n     *\\n     * If `target` reverts with a revert reason or custom error, it is bubbled\\n     * up by this function (like regular Solidity function calls). However, if\\n     * the call reverted with no returned reason, this function reverts with a\\n     * {FailedInnerCall} error.\\n     *\\n     * Returns the raw returned data. To convert to the expected return value,\\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n     *\\n     * Requirements:\\n     *\\n     * - `target` must be a contract.\\n     * - calling `target` with `data` must not revert.\\n     */\\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, 0);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but also transferring `value` wei to `target`.\\n     *\\n     * Requirements:\\n     *\\n     * - the calling contract must have an ETH balance of at least `value`.\\n     * - the called Solidity function must be `payable`.\\n     */\\n    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n        if (address(this).balance < value) {\\n            revert AddressInsufficientBalance(address(this));\\n        }\\n        (bool success, bytes memory returndata) = target.call{value: value}(data);\\n        return verifyCallResultFromTarget(target, success, returndata);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a static call.\\n     */\\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n        (bool success, bytes memory returndata) = target.staticcall(data);\\n        return verifyCallResultFromTarget(target, success, returndata);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a delegate call.\\n     */\\n    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n        (bool success, bytes memory returndata) = target.delegatecall(data);\\n        return verifyCallResultFromTarget(target, success, returndata);\\n    }\\n\\n    /**\\n     * @dev Tool to verify that a low level call to smart-contract was successful, and reverts if the target\\n     * was not a contract or bubbling up the revert reason (falling back to {FailedInnerCall}) in case of an\\n     * unsuccessful call.\\n     */\\n    function verifyCallResultFromTarget(\\n        address target,\\n        bool success,\\n        bytes memory returndata\\n    ) internal view returns (bytes memory) {\\n        if (!success) {\\n            _revert(returndata);\\n        } else {\\n            // only check if target is a contract if the call was successful and the return data is empty\\n            // otherwise we already know that it was a contract\\n            if (returndata.length == 0 && target.code.length == 0) {\\n                revert AddressEmptyCode(target);\\n            }\\n            return returndata;\\n        }\\n    }\\n\\n    /**\\n     * @dev Tool to verify that a low level call was successful, and reverts if it wasn't, either by bubbling the\\n     * revert reason or with a default {FailedInnerCall} error.\\n     */\\n    function verifyCallResult(bool success, bytes memory returndata) internal pure returns (bytes memory) {\\n        if (!success) {\\n            _revert(returndata);\\n        } else {\\n            return returndata;\\n        }\\n    }\\n\\n    /**\\n     * @dev Reverts with returndata if present. Otherwise reverts with {FailedInnerCall}.\\n     */\\n    function _revert(bytes memory returndata) private pure {\\n        // Look for revert reason and bubble it up if present\\n        if (returndata.length > 0) {\\n            // The easiest way to bubble the revert reason is using memory via assembly\\n            /// @solidity memory-safe-assembly\\n            assembly {\\n                let returndata_size := mload(returndata)\\n                revert(add(32, returndata), returndata_size)\\n            }\\n        } else {\\n            revert FailedInnerCall();\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n *     bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n *     function _getImplementation() internal view returns (address) {\\n *         return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n *     }\\n *\\n *     function _setImplementation(address newImplementation) internal {\\n *         require(newImplementation.code.length > 0);\\n *         StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n *     }\\n * }\\n * ```\\n */\\nlibrary StorageSlot {\\n    struct AddressSlot {\\n        address value;\\n    }\\n\\n    struct BooleanSlot {\\n        bool value;\\n    }\\n\\n    struct Bytes32Slot {\\n        bytes32 value;\\n    }\\n\\n    struct Uint256Slot {\\n        uint256 value;\\n    }\\n\\n    struct StringSlot {\\n        string value;\\n    }\\n\\n    struct BytesSlot {\\n        bytes value;\\n    }\\n\\n    /**\\n     * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n     */\\n    function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n     */\\n    function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n     */\\n    function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n     */\\n    function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n     */\\n    function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n     */\\n    function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := store.slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n     */\\n    function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n     */\\n    function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := store.slot\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol":{"ERC20Upgradeable":{"abi":[{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientAllowance","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC20InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC20InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC20InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"ERC20InvalidSpender","type":"error"},{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"NotInitializing","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Implementation of the {IERC20} interface. This implementation is agnostic to the way tokens are created. This means that a supply mechanism has to be added in a derived contract using {_mint}. TIP: For a detailed writeup see our guide https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How to implement supply mechanisms]. The default value of {decimals} is 18. To change this, you should override this function so it returns a different value. We have followed general OpenZeppelin Contracts guidelines: functions revert instead returning `false` on failure. This behavior is nonetheless conventional and does not conflict with the expectations of ERC20 applications. Additionally, an {Approval} event is emitted on calls to {transferFrom}. This allows applications to reconstruct the allowance for all accounts just by listening to said events. Other implementations of the EIP may not emit these events, as it isn't required by the specification.","errors":{"ERC20InsufficientAllowance(address,uint256,uint256)":[{"details":"Indicates a failure with the `spender`’s `allowance`. Used in transfers.","params":{"allowance":"Amount of tokens a `spender` is allowed to operate with.","needed":"Minimum amount required to perform a transfer.","spender":"Address that may be allowed to operate on tokens without being their owner."}}],"ERC20InsufficientBalance(address,uint256,uint256)":[{"details":"Indicates an error related to the current `balance` of a `sender`. Used in transfers.","params":{"balance":"Current balance for the interacting account.","needed":"Minimum amount required to perform a transfer.","sender":"Address whose tokens are being transferred."}}],"ERC20InvalidApprover(address)":[{"details":"Indicates a failure with the `approver` of a token to be approved. Used in approvals.","params":{"approver":"Address initiating an approval operation."}}],"ERC20InvalidReceiver(address)":[{"details":"Indicates a failure with the token `receiver`. Used in transfers.","params":{"receiver":"Address to which tokens are being transferred."}}],"ERC20InvalidSender(address)":[{"details":"Indicates a failure with the token `sender`. Used in transfers.","params":{"sender":"Address whose tokens are being transferred."}}],"ERC20InvalidSpender(address)":[{"details":"Indicates a failure with the `spender` to be approved. Used in approvals.","params":{"spender":"Address that may be allowed to operate on tokens without being their owner."}}],"InvalidInitialization()":[{"details":"The contract is already initialized."}],"NotInitializing()":[{"details":"The contract is not initializing."}]},"events":{"Approval(address,address,uint256)":{"details":"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance."},"Initialized(uint64)":{"details":"Triggered when the contract has been initialized or reinitialized."},"Transfer(address,address,uint256)":{"details":"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero."}},"kind":"dev","methods":{"allowance(address,address)":{"details":"See {IERC20-allowance}."},"approve(address,uint256)":{"details":"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address."},"balanceOf(address)":{"details":"See {IERC20-balanceOf}."},"decimals()":{"details":"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}."},"name()":{"details":"Returns the name of the token."},"symbol()":{"details":"Returns the symbol of the token, usually a shorter version of the name."},"totalSupply()":{"details":"See {IERC20-totalSupply}."},"transfer(address,uint256)":{"details":"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`."},"transferFrom(address,address,uint256)":{"details":"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","name()":"06fdde03","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the {IERC20} interface. This implementation is agnostic to the way tokens are created. This means that a supply mechanism has to be added in a derived contract using {_mint}. TIP: For a detailed writeup see our guide https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How to implement supply mechanisms]. The default value of {decimals} is 18. To change this, you should override this function so it returns a different value. We have followed general OpenZeppelin Contracts guidelines: functions revert instead returning `false` on failure. This behavior is nonetheless conventional and does not conflict with the expectations of ERC20 applications. Additionally, an {Approval} event is emitted on calls to {transferFrom}. This allows applications to reconstruct the allowance for all accounts just by listening to said events. Other implementations of the EIP may not emit these events, as it isn't required by the specification.\",\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol\":\"ERC20Upgradeable\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":20000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n *     function initialize() initializer public {\\n *         __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n *     }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n *     function initializeV2() reinitializer(2) public {\\n *         __ERC20Permit_init(\\\"MyToken\\\");\\n *     }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n *     _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n    /**\\n     * @dev Storage of the initializable contract.\\n     *\\n     * It's implemented on a custom ERC-7201 namespace to reduce the risk of storage collisions\\n     * when using with upgradeable contracts.\\n     *\\n     * @custom:storage-location erc7201:openzeppelin.storage.Initializable\\n     */\\n    struct InitializableStorage {\\n        /**\\n         * @dev Indicates that the contract has been initialized.\\n         */\\n        uint64 _initialized;\\n        /**\\n         * @dev Indicates that the contract is in the process of being initialized.\\n         */\\n        bool _initializing;\\n    }\\n\\n    // keccak256(abi.encode(uint256(keccak256(\\\"openzeppelin.storage.Initializable\\\")) - 1)) & ~bytes32(uint256(0xff))\\n    bytes32 private constant INITIALIZABLE_STORAGE = 0xf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00;\\n\\n    /**\\n     * @dev The contract is already initialized.\\n     */\\n    error InvalidInitialization();\\n\\n    /**\\n     * @dev The contract is not initializing.\\n     */\\n    error NotInitializing();\\n\\n    /**\\n     * @dev Triggered when the contract has been initialized or reinitialized.\\n     */\\n    event Initialized(uint64 version);\\n\\n    /**\\n     * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n     * `onlyInitializing` functions can be used to initialize parent contracts.\\n     *\\n     * Similar to `reinitializer(1)`, except that in the context of a constructor an `initializer` may be invoked any\\n     * number of times. This behavior in the constructor can be useful during testing and is not expected to be used in\\n     * production.\\n     *\\n     * Emits an {Initialized} event.\\n     */\\n    modifier initializer() {\\n        // solhint-disable-next-line var-name-mixedcase\\n        InitializableStorage storage $ = _getInitializableStorage();\\n\\n        // Cache values to avoid duplicated sloads\\n        bool isTopLevelCall = !$._initializing;\\n        uint64 initialized = $._initialized;\\n\\n        // Allowed calls:\\n        // - initialSetup: the contract is not in the initializing state and no previous version was\\n        //                 initialized\\n        // - construction: the contract is initialized at version 1 (no reininitialization) and the\\n        //                 current contract is just being deployed\\n        bool initialSetup = initialized == 0 && isTopLevelCall;\\n        bool construction = initialized == 1 && address(this).code.length == 0;\\n\\n        if (!initialSetup && !construction) {\\n            revert InvalidInitialization();\\n        }\\n        $._initialized = 1;\\n        if (isTopLevelCall) {\\n            $._initializing = true;\\n        }\\n        _;\\n        if (isTopLevelCall) {\\n            $._initializing = false;\\n            emit Initialized(1);\\n        }\\n    }\\n\\n    /**\\n     * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n     * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n     * used to initialize parent contracts.\\n     *\\n     * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n     * are added through upgrades and that require initialization.\\n     *\\n     * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n     * cannot be nested. If one is invoked in the context of another, execution will revert.\\n     *\\n     * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n     * a contract, executing them in the right order is up to the developer or operator.\\n     *\\n     * WARNING: Setting the version to 2**64 - 1 will prevent any future reinitialization.\\n     *\\n     * Emits an {Initialized} event.\\n     */\\n    modifier reinitializer(uint64 version) {\\n        // solhint-disable-next-line var-name-mixedcase\\n        InitializableStorage storage $ = _getInitializableStorage();\\n\\n        if ($._initializing || $._initialized >= version) {\\n            revert InvalidInitialization();\\n        }\\n        $._initialized = version;\\n        $._initializing = true;\\n        _;\\n        $._initializing = false;\\n        emit Initialized(version);\\n    }\\n\\n    /**\\n     * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n     * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n     */\\n    modifier onlyInitializing() {\\n        _checkInitializing();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Reverts if the contract is not in an initializing state. See {onlyInitializing}.\\n     */\\n    function _checkInitializing() internal view virtual {\\n        if (!_isInitializing()) {\\n            revert NotInitializing();\\n        }\\n    }\\n\\n    /**\\n     * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n     * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n     * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n     * through proxies.\\n     *\\n     * Emits an {Initialized} event the first time it is successfully executed.\\n     */\\n    function _disableInitializers() internal virtual {\\n        // solhint-disable-next-line var-name-mixedcase\\n        InitializableStorage storage $ = _getInitializableStorage();\\n\\n        if ($._initializing) {\\n            revert InvalidInitialization();\\n        }\\n        if ($._initialized != type(uint64).max) {\\n            $._initialized = type(uint64).max;\\n            emit Initialized(type(uint64).max);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n     */\\n    function _getInitializedVersion() internal view returns (uint64) {\\n        return _getInitializableStorage()._initialized;\\n    }\\n\\n    /**\\n     * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n     */\\n    function _isInitializing() internal view returns (bool) {\\n        return _getInitializableStorage()._initializing;\\n    }\\n\\n    /**\\n     * @dev Returns a pointer to the storage namespace.\\n     */\\n    // solhint-disable-next-line var-name-mixedcase\\n    function _getInitializableStorage() private pure returns (InitializableStorage storage $) {\\n        assembly {\\n            $.slot := INITIALIZABLE_STORAGE\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/ERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"@openzeppelin/contracts/token/ERC20/IERC20.sol\\\";\\nimport {IERC20Metadata} from \\\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\\\";\\nimport {ContextUpgradeable} from \\\"../../utils/ContextUpgradeable.sol\\\";\\nimport {IERC20Errors} from \\\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\\\";\\nimport {Initializable} from \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC20} interface.\\n *\\n * This implementation is agnostic to the way tokens are created. This means\\n * that a supply mechanism has to be added in a derived contract using {_mint}.\\n *\\n * TIP: For a detailed writeup see our guide\\n * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\\n * to implement supply mechanisms].\\n *\\n * The default value of {decimals} is 18. To change this, you should override\\n * this function so it returns a different value.\\n *\\n * We have followed general OpenZeppelin Contracts guidelines: functions revert\\n * instead returning `false` on failure. This behavior is nonetheless\\n * conventional and does not conflict with the expectations of ERC20\\n * applications.\\n *\\n * Additionally, an {Approval} event is emitted on calls to {transferFrom}.\\n * This allows applications to reconstruct the allowance for all accounts just\\n * by listening to said events. Other implementations of the EIP may not emit\\n * these events, as it isn't required by the specification.\\n */\\nabstract contract ERC20Upgradeable is Initializable, ContextUpgradeable, IERC20, IERC20Metadata, IERC20Errors {\\n    /// @custom:storage-location erc7201:openzeppelin.storage.ERC20\\n    struct ERC20Storage {\\n        mapping(address account => uint256) _balances;\\n\\n        mapping(address account => mapping(address spender => uint256)) _allowances;\\n\\n        uint256 _totalSupply;\\n\\n        string _name;\\n        string _symbol;\\n    }\\n\\n    // keccak256(abi.encode(uint256(keccak256(\\\"openzeppelin.storage.ERC20\\\")) - 1)) & ~bytes32(uint256(0xff))\\n    bytes32 private constant ERC20StorageLocation = 0x52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00;\\n\\n    function _getERC20Storage() private pure returns (ERC20Storage storage $) {\\n        assembly {\\n            $.slot := ERC20StorageLocation\\n        }\\n    }\\n\\n    /**\\n     * @dev Sets the values for {name} and {symbol}.\\n     *\\n     * All two of these values are immutable: they can only be set once during\\n     * construction.\\n     */\\n    function __ERC20_init(string memory name_, string memory symbol_) internal onlyInitializing {\\n        __ERC20_init_unchained(name_, symbol_);\\n    }\\n\\n    function __ERC20_init_unchained(string memory name_, string memory symbol_) internal onlyInitializing {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        $._name = name_;\\n        $._symbol = symbol_;\\n    }\\n\\n    /**\\n     * @dev Returns the name of the token.\\n     */\\n    function name() public view virtual returns (string memory) {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        return $._name;\\n    }\\n\\n    /**\\n     * @dev Returns the symbol of the token, usually a shorter version of the\\n     * name.\\n     */\\n    function symbol() public view virtual returns (string memory) {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        return $._symbol;\\n    }\\n\\n    /**\\n     * @dev Returns the number of decimals used to get its user representation.\\n     * For example, if `decimals` equals `2`, a balance of `505` tokens should\\n     * be displayed to a user as `5.05` (`505 / 10 ** 2`).\\n     *\\n     * Tokens usually opt for a value of 18, imitating the relationship between\\n     * Ether and Wei. This is the default value returned by this function, unless\\n     * it's overridden.\\n     *\\n     * NOTE: This information is only used for _display_ purposes: it in\\n     * no way affects any of the arithmetic of the contract, including\\n     * {IERC20-balanceOf} and {IERC20-transfer}.\\n     */\\n    function decimals() public view virtual returns (uint8) {\\n        return 18;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-totalSupply}.\\n     */\\n    function totalSupply() public view virtual returns (uint256) {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        return $._totalSupply;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-balanceOf}.\\n     */\\n    function balanceOf(address account) public view virtual returns (uint256) {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        return $._balances[account];\\n    }\\n\\n    /**\\n     * @dev See {IERC20-transfer}.\\n     *\\n     * Requirements:\\n     *\\n     * - `to` cannot be the zero address.\\n     * - the caller must have a balance of at least `value`.\\n     */\\n    function transfer(address to, uint256 value) public virtual returns (bool) {\\n        address owner = _msgSender();\\n        _transfer(owner, to, value);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-allowance}.\\n     */\\n    function allowance(address owner, address spender) public view virtual returns (uint256) {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        return $._allowances[owner][spender];\\n    }\\n\\n    /**\\n     * @dev See {IERC20-approve}.\\n     *\\n     * NOTE: If `value` is the maximum `uint256`, the allowance is not updated on\\n     * `transferFrom`. This is semantically equivalent to an infinite approval.\\n     *\\n     * Requirements:\\n     *\\n     * - `spender` cannot be the zero address.\\n     */\\n    function approve(address spender, uint256 value) public virtual returns (bool) {\\n        address owner = _msgSender();\\n        _approve(owner, spender, value);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-transferFrom}.\\n     *\\n     * Emits an {Approval} event indicating the updated allowance. This is not\\n     * required by the EIP. See the note at the beginning of {ERC20}.\\n     *\\n     * NOTE: Does not update the allowance if the current allowance\\n     * is the maximum `uint256`.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` and `to` cannot be the zero address.\\n     * - `from` must have a balance of at least `value`.\\n     * - the caller must have allowance for ``from``'s tokens of at least\\n     * `value`.\\n     */\\n    function transferFrom(address from, address to, uint256 value) public virtual returns (bool) {\\n        address spender = _msgSender();\\n        _spendAllowance(from, spender, value);\\n        _transfer(from, to, value);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to`.\\n     *\\n     * This internal function is equivalent to {transfer}, and can be used to\\n     * e.g. implement automatic token fees, slashing mechanisms, etc.\\n     *\\n     * Emits a {Transfer} event.\\n     *\\n     * NOTE: This function is not virtual, {_update} should be overridden instead.\\n     */\\n    function _transfer(address from, address to, uint256 value) internal {\\n        if (from == address(0)) {\\n            revert ERC20InvalidSender(address(0));\\n        }\\n        if (to == address(0)) {\\n            revert ERC20InvalidReceiver(address(0));\\n        }\\n        _update(from, to, value);\\n    }\\n\\n    /**\\n     * @dev Transfers a `value` amount of tokens from `from` to `to`, or alternatively mints (or burns) if `from`\\n     * (or `to`) is the zero address. All customizations to transfers, mints, and burns should be done by overriding\\n     * this function.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _update(address from, address to, uint256 value) internal virtual {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        if (from == address(0)) {\\n            // Overflow check required: The rest of the code assumes that totalSupply never overflows\\n            $._totalSupply += value;\\n        } else {\\n            uint256 fromBalance = $._balances[from];\\n            if (fromBalance < value) {\\n                revert ERC20InsufficientBalance(from, fromBalance, value);\\n            }\\n            unchecked {\\n                // Overflow not possible: value <= fromBalance <= totalSupply.\\n                $._balances[from] = fromBalance - value;\\n            }\\n        }\\n\\n        if (to == address(0)) {\\n            unchecked {\\n                // Overflow not possible: value <= totalSupply or value <= fromBalance <= totalSupply.\\n                $._totalSupply -= value;\\n            }\\n        } else {\\n            unchecked {\\n                // Overflow not possible: balance + value is at most totalSupply, which we know fits into a uint256.\\n                $._balances[to] += value;\\n            }\\n        }\\n\\n        emit Transfer(from, to, value);\\n    }\\n\\n    /**\\n     * @dev Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0).\\n     * Relies on the `_update` mechanism\\n     *\\n     * Emits a {Transfer} event with `from` set to the zero address.\\n     *\\n     * NOTE: This function is not virtual, {_update} should be overridden instead.\\n     */\\n    function _mint(address account, uint256 value) internal {\\n        if (account == address(0)) {\\n            revert ERC20InvalidReceiver(address(0));\\n        }\\n        _update(address(0), account, value);\\n    }\\n\\n    /**\\n     * @dev Destroys a `value` amount of tokens from `account`, lowering the total supply.\\n     * Relies on the `_update` mechanism.\\n     *\\n     * Emits a {Transfer} event with `to` set to the zero address.\\n     *\\n     * NOTE: This function is not virtual, {_update} should be overridden instead\\n     */\\n    function _burn(address account, uint256 value) internal {\\n        if (account == address(0)) {\\n            revert ERC20InvalidSender(address(0));\\n        }\\n        _update(account, address(0), value);\\n    }\\n\\n    /**\\n     * @dev Sets `value` as the allowance of `spender` over the `owner` s tokens.\\n     *\\n     * This internal function is equivalent to `approve`, and can be used to\\n     * e.g. set automatic allowances for certain subsystems, etc.\\n     *\\n     * Emits an {Approval} event.\\n     *\\n     * Requirements:\\n     *\\n     * - `owner` cannot be the zero address.\\n     * - `spender` cannot be the zero address.\\n     *\\n     * Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument.\\n     */\\n    function _approve(address owner, address spender, uint256 value) internal {\\n        _approve(owner, spender, value, true);\\n    }\\n\\n    /**\\n     * @dev Variant of {_approve} with an optional flag to enable or disable the {Approval} event.\\n     *\\n     * By default (when calling {_approve}) the flag is set to true. On the other hand, approval changes made by\\n     * `_spendAllowance` during the `transferFrom` operation set the flag to false. This saves gas by not emitting any\\n     * `Approval` event during `transferFrom` operations.\\n     *\\n     * Anyone who wishes to continue emitting `Approval` events on the`transferFrom` operation can force the flag to\\n     * true using the following override:\\n     * ```\\n     * function _approve(address owner, address spender, uint256 value, bool) internal virtual override {\\n     *     super._approve(owner, spender, value, true);\\n     * }\\n     * ```\\n     *\\n     * Requirements are the same as {_approve}.\\n     */\\n    function _approve(address owner, address spender, uint256 value, bool emitEvent) internal virtual {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        if (owner == address(0)) {\\n            revert ERC20InvalidApprover(address(0));\\n        }\\n        if (spender == address(0)) {\\n            revert ERC20InvalidSpender(address(0));\\n        }\\n        $._allowances[owner][spender] = value;\\n        if (emitEvent) {\\n            emit Approval(owner, spender, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Updates `owner` s allowance for `spender` based on spent `value`.\\n     *\\n     * Does not update the allowance value in case of infinite allowance.\\n     * Revert if not enough allowance is available.\\n     *\\n     * Does not emit an {Approval} event.\\n     */\\n    function _spendAllowance(address owner, address spender, uint256 value) internal virtual {\\n        uint256 currentAllowance = allowance(owner, spender);\\n        if (currentAllowance != type(uint256).max) {\\n            if (currentAllowance < value) {\\n                revert ERC20InsufficientAllowance(spender, currentAllowance, value);\\n            }\\n            unchecked {\\n                _approve(owner, spender, currentAllowance - value, false);\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x9a1766b1921bf91b3e61eb53c7a6e70725254befd4bdcbbcd3af40bd9f66856f\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)\\n\\npragma solidity ^0.8.20;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n    function __Context_init() internal onlyInitializing {\\n    }\\n\\n    function __Context_init_unchained() internal onlyInitializing {\\n    }\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n\\n    function _contextSuffixLength() internal view virtual returns (uint256) {\\n        return 0;\\n    }\\n}\\n\",\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/draft-IERC6093.sol)\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Standard ERC20 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC20 tokens.\\n */\\ninterface IERC20Errors {\\n    /**\\n     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param balance Current balance for the interacting account.\\n     * @param needed Minimum amount required to perform a transfer.\\n     */\\n    error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC20InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC20InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\\n     * @param spender Address that may be allowed to operate on tokens without being their owner.\\n     * @param allowance Amount of tokens a `spender` is allowed to operate with.\\n     * @param needed Minimum amount required to perform a transfer.\\n     */\\n    error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC20InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `spender` to be approved. Used in approvals.\\n     * @param spender Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC20InvalidSpender(address spender);\\n}\\n\\n/**\\n * @dev Standard ERC721 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC721 tokens.\\n */\\ninterface IERC721Errors {\\n    /**\\n     * @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20.\\n     * Used in balance queries.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC721InvalidOwner(address owner);\\n\\n    /**\\n     * @dev Indicates a `tokenId` whose `owner` is the zero address.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC721NonexistentToken(uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates an error related to the ownership over a particular token. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param tokenId Identifier number of a token.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC721InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC721InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC721InsufficientApproval(address operator, uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC721InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC721InvalidOperator(address operator);\\n}\\n\\n/**\\n * @dev Standard ERC1155 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC1155 tokens.\\n */\\ninterface IERC1155Errors {\\n    /**\\n     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param balance Current balance for the interacting account.\\n     * @param needed Minimum amount required to perform a transfer.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC1155InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC1155InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC1155InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC1155MissingApprovalForAll(address operator, address owner);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC1155InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC1155InvalidOperator(address operator);\\n\\n    /**\\n     * @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\\n     * Used in batch transfers.\\n     * @param idsLength Length of the array of token identifiers\\n     * @param valuesLength Length of the array of token amounts\\n     */\\n    error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength);\\n}\\n\",\"keccak256\":\"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n    /**\\n     * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n     * another (`to`).\\n     *\\n     * Note that `value` may be zero.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n    /**\\n     * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n     * a call to {approve}. `value` is the new allowance.\\n     */\\n    event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n    /**\\n     * @dev Returns the value of tokens in existence.\\n     */\\n    function totalSupply() external view returns (uint256);\\n\\n    /**\\n     * @dev Returns the value of tokens owned by `account`.\\n     */\\n    function balanceOf(address account) external view returns (uint256);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from the caller's account to `to`.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transfer(address to, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Returns the remaining number of tokens that `spender` will be\\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n     * zero by default.\\n     *\\n     * This value changes when {approve} or {transferFrom} are called.\\n     */\\n    function allowance(address owner, address spender) external view returns (uint256);\\n\\n    /**\\n     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\\n     * caller's tokens.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n     * that someone may use both the old and the new allowance by unfortunate\\n     * transaction ordering. One possible solution to mitigate this race\\n     * condition is to first reduce the spender's allowance to 0 and set the\\n     * desired value afterwards:\\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address spender, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to` using the\\n     * allowance mechanism. `value` is then deducted from the caller's\\n     * allowance.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(address from, address to, uint256 value) external returns (bool);\\n}\\n\",\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/extensions/IERC20Metadata.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"../IERC20.sol\\\";\\n\\n/**\\n * @dev Interface for the optional metadata functions from the ERC20 standard.\\n */\\ninterface IERC20Metadata is IERC20 {\\n    /**\\n     * @dev Returns the name of the token.\\n     */\\n    function name() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the symbol of the token.\\n     */\\n    function symbol() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the decimals places of the token.\\n     */\\n    function decimals() external view returns (uint8);\\n}\\n\",\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol":{"ContextUpgradeable":{"abi":[{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"NotInitializing","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","type":"event"}],"devdoc":{"details":"Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.","errors":{"InvalidInitialization()":[{"details":"The contract is already initialized."}],"NotInitializing()":[{"details":"The contract is not initializing."}]},"events":{"Initialized(uint64)":{"details":"Triggered when the contract has been initialized or reinitialized."}},"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"}],\"devdoc\":{\"details\":\"Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.\",\"errors\":{\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":\"ContextUpgradeable\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":20000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n *     function initialize() initializer public {\\n *         __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n *     }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n *     function initializeV2() reinitializer(2) public {\\n *         __ERC20Permit_init(\\\"MyToken\\\");\\n *     }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n *     _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n    /**\\n     * @dev Storage of the initializable contract.\\n     *\\n     * It's implemented on a custom ERC-7201 namespace to reduce the risk of storage collisions\\n     * when using with upgradeable contracts.\\n     *\\n     * @custom:storage-location erc7201:openzeppelin.storage.Initializable\\n     */\\n    struct InitializableStorage {\\n        /**\\n         * @dev Indicates that the contract has been initialized.\\n         */\\n        uint64 _initialized;\\n        /**\\n         * @dev Indicates that the contract is in the process of being initialized.\\n         */\\n        bool _initializing;\\n    }\\n\\n    // keccak256(abi.encode(uint256(keccak256(\\\"openzeppelin.storage.Initializable\\\")) - 1)) & ~bytes32(uint256(0xff))\\n    bytes32 private constant INITIALIZABLE_STORAGE = 0xf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00;\\n\\n    /**\\n     * @dev The contract is already initialized.\\n     */\\n    error InvalidInitialization();\\n\\n    /**\\n     * @dev The contract is not initializing.\\n     */\\n    error NotInitializing();\\n\\n    /**\\n     * @dev Triggered when the contract has been initialized or reinitialized.\\n     */\\n    event Initialized(uint64 version);\\n\\n    /**\\n     * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n     * `onlyInitializing` functions can be used to initialize parent contracts.\\n     *\\n     * Similar to `reinitializer(1)`, except that in the context of a constructor an `initializer` may be invoked any\\n     * number of times. This behavior in the constructor can be useful during testing and is not expected to be used in\\n     * production.\\n     *\\n     * Emits an {Initialized} event.\\n     */\\n    modifier initializer() {\\n        // solhint-disable-next-line var-name-mixedcase\\n        InitializableStorage storage $ = _getInitializableStorage();\\n\\n        // Cache values to avoid duplicated sloads\\n        bool isTopLevelCall = !$._initializing;\\n        uint64 initialized = $._initialized;\\n\\n        // Allowed calls:\\n        // - initialSetup: the contract is not in the initializing state and no previous version was\\n        //                 initialized\\n        // - construction: the contract is initialized at version 1 (no reininitialization) and the\\n        //                 current contract is just being deployed\\n        bool initialSetup = initialized == 0 && isTopLevelCall;\\n        bool construction = initialized == 1 && address(this).code.length == 0;\\n\\n        if (!initialSetup && !construction) {\\n            revert InvalidInitialization();\\n        }\\n        $._initialized = 1;\\n        if (isTopLevelCall) {\\n            $._initializing = true;\\n        }\\n        _;\\n        if (isTopLevelCall) {\\n            $._initializing = false;\\n            emit Initialized(1);\\n        }\\n    }\\n\\n    /**\\n     * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n     * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n     * used to initialize parent contracts.\\n     *\\n     * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n     * are added through upgrades and that require initialization.\\n     *\\n     * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n     * cannot be nested. If one is invoked in the context of another, execution will revert.\\n     *\\n     * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n     * a contract, executing them in the right order is up to the developer or operator.\\n     *\\n     * WARNING: Setting the version to 2**64 - 1 will prevent any future reinitialization.\\n     *\\n     * Emits an {Initialized} event.\\n     */\\n    modifier reinitializer(uint64 version) {\\n        // solhint-disable-next-line var-name-mixedcase\\n        InitializableStorage storage $ = _getInitializableStorage();\\n\\n        if ($._initializing || $._initialized >= version) {\\n            revert InvalidInitialization();\\n        }\\n        $._initialized = version;\\n        $._initializing = true;\\n        _;\\n        $._initializing = false;\\n        emit Initialized(version);\\n    }\\n\\n    /**\\n     * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n     * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n     */\\n    modifier onlyInitializing() {\\n        _checkInitializing();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Reverts if the contract is not in an initializing state. See {onlyInitializing}.\\n     */\\n    function _checkInitializing() internal view virtual {\\n        if (!_isInitializing()) {\\n            revert NotInitializing();\\n        }\\n    }\\n\\n    /**\\n     * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n     * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n     * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n     * through proxies.\\n     *\\n     * Emits an {Initialized} event the first time it is successfully executed.\\n     */\\n    function _disableInitializers() internal virtual {\\n        // solhint-disable-next-line var-name-mixedcase\\n        InitializableStorage storage $ = _getInitializableStorage();\\n\\n        if ($._initializing) {\\n            revert InvalidInitialization();\\n        }\\n        if ($._initialized != type(uint64).max) {\\n            $._initialized = type(uint64).max;\\n            emit Initialized(type(uint64).max);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n     */\\n    function _getInitializedVersion() internal view returns (uint64) {\\n        return _getInitializableStorage()._initialized;\\n    }\\n\\n    /**\\n     * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n     */\\n    function _isInitializing() internal view returns (bool) {\\n        return _getInitializableStorage()._initializing;\\n    }\\n\\n    /**\\n     * @dev Returns a pointer to the storage namespace.\\n     */\\n    // solhint-disable-next-line var-name-mixedcase\\n    function _getInitializableStorage() private pure returns (InitializableStorage storage $) {\\n        assembly {\\n            $.slot := INITIALIZABLE_STORAGE\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)\\n\\npragma solidity ^0.8.20;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n    function __Context_init() internal onlyInitializing {\\n    }\\n\\n    function __Context_init_unchained() internal onlyInitializing {\\n    }\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n\\n    function _contextSuffixLength() internal view virtual returns (uint256) {\\n        return 0;\\n    }\\n}\\n\",\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol":{"PausableUpgradeable":{"abi":[{"inputs":[],"name":"EnforcedPause","type":"error"},{"inputs":[],"name":"ExpectedPause","type":"error"},{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"NotInitializing","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"Contract module which allows children to implement an emergency stop mechanism that can be triggered by an authorized account. This module is used through inheritance. It will make available the modifiers `whenNotPaused` and `whenPaused`, which can be applied to the functions of your contract. Note that they will not be pausable by simply including this module, only once the modifiers are put in place.","errors":{"EnforcedPause()":[{"details":"The operation failed because the contract is paused."}],"ExpectedPause()":[{"details":"The operation failed because the contract is not paused."}],"InvalidInitialization()":[{"details":"The contract is already initialized."}],"NotInitializing()":[{"details":"The contract is not initializing."}]},"events":{"Initialized(uint64)":{"details":"Triggered when the contract has been initialized or reinitialized."},"Paused(address)":{"details":"Emitted when the pause is triggered by `account`."},"Unpaused(address)":{"details":"Emitted when the pause is lifted by `account`."}},"kind":"dev","methods":{"paused()":{"details":"Returns true if the contract is paused, and false otherwise."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"paused()":"5c975abb"}},"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"EnforcedPause\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExpectedPause\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Contract module which allows children to implement an emergency stop mechanism that can be triggered by an authorized account. This module is used through inheritance. It will make available the modifiers `whenNotPaused` and `whenPaused`, which can be applied to the functions of your contract. Note that they will not be pausable by simply including this module, only once the modifiers are put in place.\",\"errors\":{\"EnforcedPause()\":[{\"details\":\"The operation failed because the contract is paused.\"}],\"ExpectedPause()\":[{\"details\":\"The operation failed because the contract is not paused.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Paused(address)\":{\"details\":\"Emitted when the pause is triggered by `account`.\"},\"Unpaused(address)\":{\"details\":\"Emitted when the pause is lifted by `account`.\"}},\"kind\":\"dev\",\"methods\":{\"paused()\":{\"details\":\"Returns true if the contract is paused, and false otherwise.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol\":\"PausableUpgradeable\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":20000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n *     function initialize() initializer public {\\n *         __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n *     }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n *     function initializeV2() reinitializer(2) public {\\n *         __ERC20Permit_init(\\\"MyToken\\\");\\n *     }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n *     _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n    /**\\n     * @dev Storage of the initializable contract.\\n     *\\n     * It's implemented on a custom ERC-7201 namespace to reduce the risk of storage collisions\\n     * when using with upgradeable contracts.\\n     *\\n     * @custom:storage-location erc7201:openzeppelin.storage.Initializable\\n     */\\n    struct InitializableStorage {\\n        /**\\n         * @dev Indicates that the contract has been initialized.\\n         */\\n        uint64 _initialized;\\n        /**\\n         * @dev Indicates that the contract is in the process of being initialized.\\n         */\\n        bool _initializing;\\n    }\\n\\n    // keccak256(abi.encode(uint256(keccak256(\\\"openzeppelin.storage.Initializable\\\")) - 1)) & ~bytes32(uint256(0xff))\\n    bytes32 private constant INITIALIZABLE_STORAGE = 0xf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00;\\n\\n    /**\\n     * @dev The contract is already initialized.\\n     */\\n    error InvalidInitialization();\\n\\n    /**\\n     * @dev The contract is not initializing.\\n     */\\n    error NotInitializing();\\n\\n    /**\\n     * @dev Triggered when the contract has been initialized or reinitialized.\\n     */\\n    event Initialized(uint64 version);\\n\\n    /**\\n     * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n     * `onlyInitializing` functions can be used to initialize parent contracts.\\n     *\\n     * Similar to `reinitializer(1)`, except that in the context of a constructor an `initializer` may be invoked any\\n     * number of times. This behavior in the constructor can be useful during testing and is not expected to be used in\\n     * production.\\n     *\\n     * Emits an {Initialized} event.\\n     */\\n    modifier initializer() {\\n        // solhint-disable-next-line var-name-mixedcase\\n        InitializableStorage storage $ = _getInitializableStorage();\\n\\n        // Cache values to avoid duplicated sloads\\n        bool isTopLevelCall = !$._initializing;\\n        uint64 initialized = $._initialized;\\n\\n        // Allowed calls:\\n        // - initialSetup: the contract is not in the initializing state and no previous version was\\n        //                 initialized\\n        // - construction: the contract is initialized at version 1 (no reininitialization) and the\\n        //                 current contract is just being deployed\\n        bool initialSetup = initialized == 0 && isTopLevelCall;\\n        bool construction = initialized == 1 && address(this).code.length == 0;\\n\\n        if (!initialSetup && !construction) {\\n            revert InvalidInitialization();\\n        }\\n        $._initialized = 1;\\n        if (isTopLevelCall) {\\n            $._initializing = true;\\n        }\\n        _;\\n        if (isTopLevelCall) {\\n            $._initializing = false;\\n            emit Initialized(1);\\n        }\\n    }\\n\\n    /**\\n     * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n     * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n     * used to initialize parent contracts.\\n     *\\n     * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n     * are added through upgrades and that require initialization.\\n     *\\n     * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n     * cannot be nested. If one is invoked in the context of another, execution will revert.\\n     *\\n     * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n     * a contract, executing them in the right order is up to the developer or operator.\\n     *\\n     * WARNING: Setting the version to 2**64 - 1 will prevent any future reinitialization.\\n     *\\n     * Emits an {Initialized} event.\\n     */\\n    modifier reinitializer(uint64 version) {\\n        // solhint-disable-next-line var-name-mixedcase\\n        InitializableStorage storage $ = _getInitializableStorage();\\n\\n        if ($._initializing || $._initialized >= version) {\\n            revert InvalidInitialization();\\n        }\\n        $._initialized = version;\\n        $._initializing = true;\\n        _;\\n        $._initializing = false;\\n        emit Initialized(version);\\n    }\\n\\n    /**\\n     * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n     * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n     */\\n    modifier onlyInitializing() {\\n        _checkInitializing();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Reverts if the contract is not in an initializing state. See {onlyInitializing}.\\n     */\\n    function _checkInitializing() internal view virtual {\\n        if (!_isInitializing()) {\\n            revert NotInitializing();\\n        }\\n    }\\n\\n    /**\\n     * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n     * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n     * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n     * through proxies.\\n     *\\n     * Emits an {Initialized} event the first time it is successfully executed.\\n     */\\n    function _disableInitializers() internal virtual {\\n        // solhint-disable-next-line var-name-mixedcase\\n        InitializableStorage storage $ = _getInitializableStorage();\\n\\n        if ($._initializing) {\\n            revert InvalidInitialization();\\n        }\\n        if ($._initialized != type(uint64).max) {\\n            $._initialized = type(uint64).max;\\n            emit Initialized(type(uint64).max);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n     */\\n    function _getInitializedVersion() internal view returns (uint64) {\\n        return _getInitializableStorage()._initialized;\\n    }\\n\\n    /**\\n     * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n     */\\n    function _isInitializing() internal view returns (bool) {\\n        return _getInitializableStorage()._initializing;\\n    }\\n\\n    /**\\n     * @dev Returns a pointer to the storage namespace.\\n     */\\n    // solhint-disable-next-line var-name-mixedcase\\n    function _getInitializableStorage() private pure returns (InitializableStorage storage $) {\\n        assembly {\\n            $.slot := INITIALIZABLE_STORAGE\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)\\n\\npragma solidity ^0.8.20;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n    function __Context_init() internal onlyInitializing {\\n    }\\n\\n    function __Context_init_unchained() internal onlyInitializing {\\n    }\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n\\n    function _contextSuffixLength() internal view virtual returns (uint256) {\\n        return 0;\\n    }\\n}\\n\",\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/Pausable.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {ContextUpgradeable} from \\\"../utils/ContextUpgradeable.sol\\\";\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Contract module which allows children to implement an emergency stop\\n * mechanism that can be triggered by an authorized account.\\n *\\n * This module is used through inheritance. It will make available the\\n * modifiers `whenNotPaused` and `whenPaused`, which can be applied to\\n * the functions of your contract. Note that they will not be pausable by\\n * simply including this module, only once the modifiers are put in place.\\n */\\nabstract contract PausableUpgradeable is Initializable, ContextUpgradeable {\\n    /// @custom:storage-location erc7201:openzeppelin.storage.Pausable\\n    struct PausableStorage {\\n        bool _paused;\\n    }\\n\\n    // keccak256(abi.encode(uint256(keccak256(\\\"openzeppelin.storage.Pausable\\\")) - 1)) & ~bytes32(uint256(0xff))\\n    bytes32 private constant PausableStorageLocation = 0xcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300;\\n\\n    function _getPausableStorage() private pure returns (PausableStorage storage $) {\\n        assembly {\\n            $.slot := PausableStorageLocation\\n        }\\n    }\\n\\n    /**\\n     * @dev Emitted when the pause is triggered by `account`.\\n     */\\n    event Paused(address account);\\n\\n    /**\\n     * @dev Emitted when the pause is lifted by `account`.\\n     */\\n    event Unpaused(address account);\\n\\n    /**\\n     * @dev The operation failed because the contract is paused.\\n     */\\n    error EnforcedPause();\\n\\n    /**\\n     * @dev The operation failed because the contract is not paused.\\n     */\\n    error ExpectedPause();\\n\\n    /**\\n     * @dev Initializes the contract in unpaused state.\\n     */\\n    function __Pausable_init() internal onlyInitializing {\\n        __Pausable_init_unchained();\\n    }\\n\\n    function __Pausable_init_unchained() internal onlyInitializing {\\n        PausableStorage storage $ = _getPausableStorage();\\n        $._paused = false;\\n    }\\n\\n    /**\\n     * @dev Modifier to make a function callable only when the contract is not paused.\\n     *\\n     * Requirements:\\n     *\\n     * - The contract must not be paused.\\n     */\\n    modifier whenNotPaused() {\\n        _requireNotPaused();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Modifier to make a function callable only when the contract is paused.\\n     *\\n     * Requirements:\\n     *\\n     * - The contract must be paused.\\n     */\\n    modifier whenPaused() {\\n        _requirePaused();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Returns true if the contract is paused, and false otherwise.\\n     */\\n    function paused() public view virtual returns (bool) {\\n        PausableStorage storage $ = _getPausableStorage();\\n        return $._paused;\\n    }\\n\\n    /**\\n     * @dev Throws if the contract is paused.\\n     */\\n    function _requireNotPaused() internal view virtual {\\n        if (paused()) {\\n            revert EnforcedPause();\\n        }\\n    }\\n\\n    /**\\n     * @dev Throws if the contract is not paused.\\n     */\\n    function _requirePaused() internal view virtual {\\n        if (!paused()) {\\n            revert ExpectedPause();\\n        }\\n    }\\n\\n    /**\\n     * @dev Triggers stopped state.\\n     *\\n     * Requirements:\\n     *\\n     * - The contract must not be paused.\\n     */\\n    function _pause() internal virtual whenNotPaused {\\n        PausableStorage storage $ = _getPausableStorage();\\n        $._paused = true;\\n        emit Paused(_msgSender());\\n    }\\n\\n    /**\\n     * @dev Returns to normal state.\\n     *\\n     * Requirements:\\n     *\\n     * - The contract must be paused.\\n     */\\n    function _unpause() internal virtual whenPaused {\\n        PausableStorage storage $ = _getPausableStorage();\\n        $._paused = false;\\n        emit Unpaused(_msgSender());\\n    }\\n}\\n\",\"keccak256\":\"0x92915b7f7f642c6be3f65bfd1522feb5d5b6ef25f755f4dbb51df32c868f2f97\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol":{"ReentrancyGuardUpgradeable":{"abi":[{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"NotInitializing","type":"error"},{"inputs":[],"name":"ReentrancyGuardReentrantCall","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","type":"event"}],"devdoc":{"details":"Contract module that helps prevent reentrant calls to a function. Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier available, which can be applied to functions to make sure there are no nested (reentrant) calls to them. Note that because there is a single `nonReentrant` guard, functions marked as `nonReentrant` may not call one another. This can be worked around by making those functions `private`, and then adding `external` `nonReentrant` entry points to them. TIP: If you would like to learn more about reentrancy and alternative ways to protect against it, check out our blog post https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].","errors":{"InvalidInitialization()":[{"details":"The contract is already initialized."}],"NotInitializing()":[{"details":"The contract is not initializing."}],"ReentrancyGuardReentrantCall()":[{"details":"Unauthorized reentrant call."}]},"events":{"Initialized(uint64)":{"details":"Triggered when the contract has been initialized or reinitialized."}},"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"}],\"devdoc\":{\"details\":\"Contract module that helps prevent reentrant calls to a function. Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier available, which can be applied to functions to make sure there are no nested (reentrant) calls to them. Note that because there is a single `nonReentrant` guard, functions marked as `nonReentrant` may not call one another. This can be worked around by making those functions `private`, and then adding `external` `nonReentrant` entry points to them. TIP: If you would like to learn more about reentrancy and alternative ways to protect against it, check out our blog post https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].\",\"errors\":{\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol\":\"ReentrancyGuardUpgradeable\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":20000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n *     function initialize() initializer public {\\n *         __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n *     }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n *     function initializeV2() reinitializer(2) public {\\n *         __ERC20Permit_init(\\\"MyToken\\\");\\n *     }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n *     _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n    /**\\n     * @dev Storage of the initializable contract.\\n     *\\n     * It's implemented on a custom ERC-7201 namespace to reduce the risk of storage collisions\\n     * when using with upgradeable contracts.\\n     *\\n     * @custom:storage-location erc7201:openzeppelin.storage.Initializable\\n     */\\n    struct InitializableStorage {\\n        /**\\n         * @dev Indicates that the contract has been initialized.\\n         */\\n        uint64 _initialized;\\n        /**\\n         * @dev Indicates that the contract is in the process of being initialized.\\n         */\\n        bool _initializing;\\n    }\\n\\n    // keccak256(abi.encode(uint256(keccak256(\\\"openzeppelin.storage.Initializable\\\")) - 1)) & ~bytes32(uint256(0xff))\\n    bytes32 private constant INITIALIZABLE_STORAGE = 0xf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00;\\n\\n    /**\\n     * @dev The contract is already initialized.\\n     */\\n    error InvalidInitialization();\\n\\n    /**\\n     * @dev The contract is not initializing.\\n     */\\n    error NotInitializing();\\n\\n    /**\\n     * @dev Triggered when the contract has been initialized or reinitialized.\\n     */\\n    event Initialized(uint64 version);\\n\\n    /**\\n     * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n     * `onlyInitializing` functions can be used to initialize parent contracts.\\n     *\\n     * Similar to `reinitializer(1)`, except that in the context of a constructor an `initializer` may be invoked any\\n     * number of times. This behavior in the constructor can be useful during testing and is not expected to be used in\\n     * production.\\n     *\\n     * Emits an {Initialized} event.\\n     */\\n    modifier initializer() {\\n        // solhint-disable-next-line var-name-mixedcase\\n        InitializableStorage storage $ = _getInitializableStorage();\\n\\n        // Cache values to avoid duplicated sloads\\n        bool isTopLevelCall = !$._initializing;\\n        uint64 initialized = $._initialized;\\n\\n        // Allowed calls:\\n        // - initialSetup: the contract is not in the initializing state and no previous version was\\n        //                 initialized\\n        // - construction: the contract is initialized at version 1 (no reininitialization) and the\\n        //                 current contract is just being deployed\\n        bool initialSetup = initialized == 0 && isTopLevelCall;\\n        bool construction = initialized == 1 && address(this).code.length == 0;\\n\\n        if (!initialSetup && !construction) {\\n            revert InvalidInitialization();\\n        }\\n        $._initialized = 1;\\n        if (isTopLevelCall) {\\n            $._initializing = true;\\n        }\\n        _;\\n        if (isTopLevelCall) {\\n            $._initializing = false;\\n            emit Initialized(1);\\n        }\\n    }\\n\\n    /**\\n     * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n     * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n     * used to initialize parent contracts.\\n     *\\n     * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n     * are added through upgrades and that require initialization.\\n     *\\n     * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n     * cannot be nested. If one is invoked in the context of another, execution will revert.\\n     *\\n     * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n     * a contract, executing them in the right order is up to the developer or operator.\\n     *\\n     * WARNING: Setting the version to 2**64 - 1 will prevent any future reinitialization.\\n     *\\n     * Emits an {Initialized} event.\\n     */\\n    modifier reinitializer(uint64 version) {\\n        // solhint-disable-next-line var-name-mixedcase\\n        InitializableStorage storage $ = _getInitializableStorage();\\n\\n        if ($._initializing || $._initialized >= version) {\\n            revert InvalidInitialization();\\n        }\\n        $._initialized = version;\\n        $._initializing = true;\\n        _;\\n        $._initializing = false;\\n        emit Initialized(version);\\n    }\\n\\n    /**\\n     * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n     * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n     */\\n    modifier onlyInitializing() {\\n        _checkInitializing();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Reverts if the contract is not in an initializing state. See {onlyInitializing}.\\n     */\\n    function _checkInitializing() internal view virtual {\\n        if (!_isInitializing()) {\\n            revert NotInitializing();\\n        }\\n    }\\n\\n    /**\\n     * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n     * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n     * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n     * through proxies.\\n     *\\n     * Emits an {Initialized} event the first time it is successfully executed.\\n     */\\n    function _disableInitializers() internal virtual {\\n        // solhint-disable-next-line var-name-mixedcase\\n        InitializableStorage storage $ = _getInitializableStorage();\\n\\n        if ($._initializing) {\\n            revert InvalidInitialization();\\n        }\\n        if ($._initialized != type(uint64).max) {\\n            $._initialized = type(uint64).max;\\n            emit Initialized(type(uint64).max);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n     */\\n    function _getInitializedVersion() internal view returns (uint64) {\\n        return _getInitializableStorage()._initialized;\\n    }\\n\\n    /**\\n     * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n     */\\n    function _isInitializing() internal view returns (bool) {\\n        return _getInitializableStorage()._initializing;\\n    }\\n\\n    /**\\n     * @dev Returns a pointer to the storage namespace.\\n     */\\n    // solhint-disable-next-line var-name-mixedcase\\n    function _getInitializableStorage() private pure returns (InitializableStorage storage $) {\\n        assembly {\\n            $.slot := INITIALIZABLE_STORAGE\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/ReentrancyGuard.sol)\\n\\npragma solidity ^0.8.20;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Contract module that helps prevent reentrant calls to a function.\\n *\\n * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier\\n * available, which can be applied to functions to make sure there are no nested\\n * (reentrant) calls to them.\\n *\\n * Note that because there is a single `nonReentrant` guard, functions marked as\\n * `nonReentrant` may not call one another. This can be worked around by making\\n * those functions `private`, and then adding `external` `nonReentrant` entry\\n * points to them.\\n *\\n * TIP: If you would like to learn more about reentrancy and alternative ways\\n * to protect against it, check out our blog post\\n * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].\\n */\\nabstract contract ReentrancyGuardUpgradeable is Initializable {\\n    // Booleans are more expensive than uint256 or any type that takes up a full\\n    // word because each write operation emits an extra SLOAD to first read the\\n    // slot's contents, replace the bits taken up by the boolean, and then write\\n    // back. This is the compiler's defense against contract upgrades and\\n    // pointer aliasing, and it cannot be disabled.\\n\\n    // The values being non-zero value makes deployment a bit more expensive,\\n    // but in exchange the refund on every call to nonReentrant will be lower in\\n    // amount. Since refunds are capped to a percentage of the total\\n    // transaction's gas, it is best to keep them low in cases like this one, to\\n    // increase the likelihood of the full refund coming into effect.\\n    uint256 private constant NOT_ENTERED = 1;\\n    uint256 private constant ENTERED = 2;\\n\\n    /// @custom:storage-location erc7201:openzeppelin.storage.ReentrancyGuard\\n    struct ReentrancyGuardStorage {\\n        uint256 _status;\\n    }\\n\\n    // keccak256(abi.encode(uint256(keccak256(\\\"openzeppelin.storage.ReentrancyGuard\\\")) - 1)) & ~bytes32(uint256(0xff))\\n    bytes32 private constant ReentrancyGuardStorageLocation = 0x9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00;\\n\\n    function _getReentrancyGuardStorage() private pure returns (ReentrancyGuardStorage storage $) {\\n        assembly {\\n            $.slot := ReentrancyGuardStorageLocation\\n        }\\n    }\\n\\n    /**\\n     * @dev Unauthorized reentrant call.\\n     */\\n    error ReentrancyGuardReentrantCall();\\n\\n    function __ReentrancyGuard_init() internal onlyInitializing {\\n        __ReentrancyGuard_init_unchained();\\n    }\\n\\n    function __ReentrancyGuard_init_unchained() internal onlyInitializing {\\n        ReentrancyGuardStorage storage $ = _getReentrancyGuardStorage();\\n        $._status = NOT_ENTERED;\\n    }\\n\\n    /**\\n     * @dev Prevents a contract from calling itself, directly or indirectly.\\n     * Calling a `nonReentrant` function from another `nonReentrant`\\n     * function is not supported. It is possible to prevent this from happening\\n     * by making the `nonReentrant` function external, and making it call a\\n     * `private` function that does the actual work.\\n     */\\n    modifier nonReentrant() {\\n        _nonReentrantBefore();\\n        _;\\n        _nonReentrantAfter();\\n    }\\n\\n    function _nonReentrantBefore() private {\\n        ReentrancyGuardStorage storage $ = _getReentrancyGuardStorage();\\n        // On the first call to nonReentrant, _status will be NOT_ENTERED\\n        if ($._status == ENTERED) {\\n            revert ReentrancyGuardReentrantCall();\\n        }\\n\\n        // Any calls to nonReentrant after this point will fail\\n        $._status = ENTERED;\\n    }\\n\\n    function _nonReentrantAfter() private {\\n        ReentrancyGuardStorage storage $ = _getReentrancyGuardStorage();\\n        // By storing the original value once again, a refund is triggered (see\\n        // https://eips.ethereum.org/EIPS/eip-2200)\\n        $._status = NOT_ENTERED;\\n    }\\n\\n    /**\\n     * @dev Returns true if the reentrancy guard is currently set to \\\"entered\\\", which indicates there is a\\n     * `nonReentrant` function in the call stack.\\n     */\\n    function _reentrancyGuardEntered() internal view returns (bool) {\\n        ReentrancyGuardStorage storage $ = _getReentrancyGuardStorage();\\n        return $._status == ENTERED;\\n    }\\n}\\n\",\"keccak256\":\"0xb44e086e941292cdc7f440de51478493894ef0b1aeccb0c4047445919f667f74\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/interfaces/draft-IERC1822.sol":{"IERC1822Proxiable":{"abi":[{"inputs":[],"name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified proxy whose upgrades are fully controlled by the current implementation.","kind":"dev","methods":{"proxiableUUID()":{"details":"Returns the storage slot that the proxiable contract assumes is being used to store the implementation address. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"proxiableUUID()":"52d1902d"}},"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified proxy whose upgrades are fully controlled by the current implementation.\",\"kind\":\"dev\",\"methods\":{\"proxiableUUID()\":{\"details\":\"Returns the storage slot that the proxiable contract assumes is being used to store the implementation address. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":\"IERC1822Proxiable\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":20000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n    /**\\n     * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n     * address.\\n     *\\n     * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n     * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n     * function revert if invoked through a proxy.\\n     */\\n    function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x2a1f9944df2015c081d89cd41ba22ffaf10aa6285969f0dc612b235cc448999c\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/interfaces/draft-IERC6093.sol":{"IERC1155Errors":{"abi":[{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ERC1155InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC1155InvalidApprover","type":"error"},{"inputs":[{"internalType":"uint256","name":"idsLength","type":"uint256"},{"internalType":"uint256","name":"valuesLength","type":"uint256"}],"name":"ERC1155InvalidArrayLength","type":"error"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"ERC1155InvalidOperator","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC1155InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC1155InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"name":"ERC1155MissingApprovalForAll","type":"error"}],"devdoc":{"details":"Standard ERC1155 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC1155 tokens.","errors":{"ERC1155InsufficientBalance(address,uint256,uint256,uint256)":[{"details":"Indicates an error related to the current `balance` of a `sender`. Used in transfers.","params":{"balance":"Current balance for the interacting account.","needed":"Minimum amount required to perform a transfer.","sender":"Address whose tokens are being transferred.","tokenId":"Identifier number of a token."}}],"ERC1155InvalidApprover(address)":[{"details":"Indicates a failure with the `approver` of a token to be approved. Used in approvals.","params":{"approver":"Address initiating an approval operation."}}],"ERC1155InvalidArrayLength(uint256,uint256)":[{"details":"Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation. Used in batch transfers.","params":{"idsLength":"Length of the array of token identifiers","valuesLength":"Length of the array of token amounts"}}],"ERC1155InvalidOperator(address)":[{"details":"Indicates a failure with the `operator` to be approved. Used in approvals.","params":{"operator":"Address that may be allowed to operate on tokens without being their owner."}}],"ERC1155InvalidReceiver(address)":[{"details":"Indicates a failure with the token `receiver`. Used in transfers.","params":{"receiver":"Address to which tokens are being transferred."}}],"ERC1155InvalidSender(address)":[{"details":"Indicates a failure with the token `sender`. Used in transfers.","params":{"sender":"Address whose tokens are being transferred."}}],"ERC1155MissingApprovalForAll(address,address)":[{"details":"Indicates a failure with the `operator`’s approval. Used in transfers.","params":{"operator":"Address that may be allowed to operate on tokens without being their owner.","owner":"Address of the current owner of a token."}}]},"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC1155InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"idsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"valuesLength\",\"type\":\"uint256\"}],\"name\":\"ERC1155InvalidArrayLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC1155MissingApprovalForAll\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Standard ERC1155 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC1155 tokens.\",\"errors\":{\"ERC1155InsufficientBalance(address,uint256,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC1155InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC1155InvalidArrayLength(uint256,uint256)\":[{\"details\":\"Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation. Used in batch transfers.\",\"params\":{\"idsLength\":\"Length of the array of token identifiers\",\"valuesLength\":\"Length of the array of token amounts\"}}],\"ERC1155InvalidOperator(address)\":[{\"details\":\"Indicates a failure with the `operator` to be approved. Used in approvals.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC1155InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC1155InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC1155MissingApprovalForAll(address,address)\":[{\"details\":\"Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\",\"owner\":\"Address of the current owner of a token.\"}}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":\"IERC1155Errors\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":20000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/draft-IERC6093.sol)\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Standard ERC20 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC20 tokens.\\n */\\ninterface IERC20Errors {\\n    /**\\n     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param balance Current balance for the interacting account.\\n     * @param needed Minimum amount required to perform a transfer.\\n     */\\n    error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC20InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC20InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\\n     * @param spender Address that may be allowed to operate on tokens without being their owner.\\n     * @param allowance Amount of tokens a `spender` is allowed to operate with.\\n     * @param needed Minimum amount required to perform a transfer.\\n     */\\n    error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC20InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `spender` to be approved. Used in approvals.\\n     * @param spender Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC20InvalidSpender(address spender);\\n}\\n\\n/**\\n * @dev Standard ERC721 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC721 tokens.\\n */\\ninterface IERC721Errors {\\n    /**\\n     * @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20.\\n     * Used in balance queries.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC721InvalidOwner(address owner);\\n\\n    /**\\n     * @dev Indicates a `tokenId` whose `owner` is the zero address.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC721NonexistentToken(uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates an error related to the ownership over a particular token. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param tokenId Identifier number of a token.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC721InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC721InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC721InsufficientApproval(address operator, uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC721InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC721InvalidOperator(address operator);\\n}\\n\\n/**\\n * @dev Standard ERC1155 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC1155 tokens.\\n */\\ninterface IERC1155Errors {\\n    /**\\n     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param balance Current balance for the interacting account.\\n     * @param needed Minimum amount required to perform a transfer.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC1155InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC1155InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC1155InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC1155MissingApprovalForAll(address operator, address owner);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC1155InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC1155InvalidOperator(address operator);\\n\\n    /**\\n     * @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\\n     * Used in batch transfers.\\n     * @param idsLength Length of the array of token identifiers\\n     * @param valuesLength Length of the array of token amounts\\n     */\\n    error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength);\\n}\\n\",\"keccak256\":\"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}},"IERC20Errors":{"abi":[{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientAllowance","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC20InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC20InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC20InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"ERC20InvalidSpender","type":"error"}],"devdoc":{"details":"Standard ERC20 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC20 tokens.","errors":{"ERC20InsufficientAllowance(address,uint256,uint256)":[{"details":"Indicates a failure with the `spender`’s `allowance`. Used in transfers.","params":{"allowance":"Amount of tokens a `spender` is allowed to operate with.","needed":"Minimum amount required to perform a transfer.","spender":"Address that may be allowed to operate on tokens without being their owner."}}],"ERC20InsufficientBalance(address,uint256,uint256)":[{"details":"Indicates an error related to the current `balance` of a `sender`. Used in transfers.","params":{"balance":"Current balance for the interacting account.","needed":"Minimum amount required to perform a transfer.","sender":"Address whose tokens are being transferred."}}],"ERC20InvalidApprover(address)":[{"details":"Indicates a failure with the `approver` of a token to be approved. Used in approvals.","params":{"approver":"Address initiating an approval operation."}}],"ERC20InvalidReceiver(address)":[{"details":"Indicates a failure with the token `receiver`. Used in transfers.","params":{"receiver":"Address to which tokens are being transferred."}}],"ERC20InvalidSender(address)":[{"details":"Indicates a failure with the token `sender`. Used in transfers.","params":{"sender":"Address whose tokens are being transferred."}}],"ERC20InvalidSpender(address)":[{"details":"Indicates a failure with the `spender` to be approved. Used in approvals.","params":{"spender":"Address that may be allowed to operate on tokens without being their owner."}}]},"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Standard ERC20 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC20 tokens.\",\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":\"IERC20Errors\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":20000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/draft-IERC6093.sol)\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Standard ERC20 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC20 tokens.\\n */\\ninterface IERC20Errors {\\n    /**\\n     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param balance Current balance for the interacting account.\\n     * @param needed Minimum amount required to perform a transfer.\\n     */\\n    error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC20InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC20InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\\n     * @param spender Address that may be allowed to operate on tokens without being their owner.\\n     * @param allowance Amount of tokens a `spender` is allowed to operate with.\\n     * @param needed Minimum amount required to perform a transfer.\\n     */\\n    error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC20InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `spender` to be approved. Used in approvals.\\n     * @param spender Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC20InvalidSpender(address spender);\\n}\\n\\n/**\\n * @dev Standard ERC721 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC721 tokens.\\n */\\ninterface IERC721Errors {\\n    /**\\n     * @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20.\\n     * Used in balance queries.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC721InvalidOwner(address owner);\\n\\n    /**\\n     * @dev Indicates a `tokenId` whose `owner` is the zero address.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC721NonexistentToken(uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates an error related to the ownership over a particular token. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param tokenId Identifier number of a token.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC721InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC721InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC721InsufficientApproval(address operator, uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC721InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC721InvalidOperator(address operator);\\n}\\n\\n/**\\n * @dev Standard ERC1155 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC1155 tokens.\\n */\\ninterface IERC1155Errors {\\n    /**\\n     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param balance Current balance for the interacting account.\\n     * @param needed Minimum amount required to perform a transfer.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC1155InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC1155InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC1155InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC1155MissingApprovalForAll(address operator, address owner);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC1155InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC1155InvalidOperator(address operator);\\n\\n    /**\\n     * @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\\n     * Used in batch transfers.\\n     * @param idsLength Length of the array of token identifiers\\n     * @param valuesLength Length of the array of token amounts\\n     */\\n    error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength);\\n}\\n\",\"keccak256\":\"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}},"IERC721Errors":{"abi":[{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"owner","type":"address"}],"name":"ERC721IncorrectOwner","type":"error"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ERC721InsufficientApproval","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC721InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"ERC721InvalidOperator","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"ERC721InvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC721InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC721InvalidSender","type":"error"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ERC721NonexistentToken","type":"error"}],"devdoc":{"details":"Standard ERC721 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC721 tokens.","errors":{"ERC721IncorrectOwner(address,uint256,address)":[{"details":"Indicates an error related to the ownership over a particular token. Used in transfers.","params":{"owner":"Address of the current owner of a token.","sender":"Address whose tokens are being transferred.","tokenId":"Identifier number of a token."}}],"ERC721InsufficientApproval(address,uint256)":[{"details":"Indicates a failure with the `operator`’s approval. Used in transfers.","params":{"operator":"Address that may be allowed to operate on tokens without being their owner.","tokenId":"Identifier number of a token."}}],"ERC721InvalidApprover(address)":[{"details":"Indicates a failure with the `approver` of a token to be approved. Used in approvals.","params":{"approver":"Address initiating an approval operation."}}],"ERC721InvalidOperator(address)":[{"details":"Indicates a failure with the `operator` to be approved. Used in approvals.","params":{"operator":"Address that may be allowed to operate on tokens without being their owner."}}],"ERC721InvalidOwner(address)":[{"details":"Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20. Used in balance queries.","params":{"owner":"Address of the current owner of a token."}}],"ERC721InvalidReceiver(address)":[{"details":"Indicates a failure with the token `receiver`. Used in transfers.","params":{"receiver":"Address to which tokens are being transferred."}}],"ERC721InvalidSender(address)":[{"details":"Indicates a failure with the token `sender`. Used in transfers.","params":{"sender":"Address whose tokens are being transferred."}}],"ERC721NonexistentToken(uint256)":[{"details":"Indicates a `tokenId` whose `owner` is the zero address.","params":{"tokenId":"Identifier number of a token."}}]},"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721IncorrectOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721InsufficientApproval\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC721InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721NonexistentToken\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Standard ERC721 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC721 tokens.\",\"errors\":{\"ERC721IncorrectOwner(address,uint256,address)\":[{\"details\":\"Indicates an error related to the ownership over a particular token. Used in transfers.\",\"params\":{\"owner\":\"Address of the current owner of a token.\",\"sender\":\"Address whose tokens are being transferred.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InsufficientApproval(address,uint256)\":[{\"details\":\"Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC721InvalidOperator(address)\":[{\"details\":\"Indicates a failure with the `operator` to be approved. Used in approvals.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC721InvalidOwner(address)\":[{\"details\":\"Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20. Used in balance queries.\",\"params\":{\"owner\":\"Address of the current owner of a token.\"}}],\"ERC721InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC721InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC721NonexistentToken(uint256)\":[{\"details\":\"Indicates a `tokenId` whose `owner` is the zero address.\",\"params\":{\"tokenId\":\"Identifier number of a token.\"}}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":\"IERC721Errors\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":20000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/draft-IERC6093.sol)\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Standard ERC20 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC20 tokens.\\n */\\ninterface IERC20Errors {\\n    /**\\n     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param balance Current balance for the interacting account.\\n     * @param needed Minimum amount required to perform a transfer.\\n     */\\n    error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC20InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC20InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\\n     * @param spender Address that may be allowed to operate on tokens without being their owner.\\n     * @param allowance Amount of tokens a `spender` is allowed to operate with.\\n     * @param needed Minimum amount required to perform a transfer.\\n     */\\n    error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC20InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `spender` to be approved. Used in approvals.\\n     * @param spender Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC20InvalidSpender(address spender);\\n}\\n\\n/**\\n * @dev Standard ERC721 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC721 tokens.\\n */\\ninterface IERC721Errors {\\n    /**\\n     * @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20.\\n     * Used in balance queries.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC721InvalidOwner(address owner);\\n\\n    /**\\n     * @dev Indicates a `tokenId` whose `owner` is the zero address.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC721NonexistentToken(uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates an error related to the ownership over a particular token. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param tokenId Identifier number of a token.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC721InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC721InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC721InsufficientApproval(address operator, uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC721InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC721InvalidOperator(address operator);\\n}\\n\\n/**\\n * @dev Standard ERC1155 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC1155 tokens.\\n */\\ninterface IERC1155Errors {\\n    /**\\n     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param balance Current balance for the interacting account.\\n     * @param needed Minimum amount required to perform a transfer.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC1155InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC1155InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC1155InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC1155MissingApprovalForAll(address operator, address owner);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC1155InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC1155InvalidOperator(address operator);\\n\\n    /**\\n     * @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\\n     * Used in batch transfers.\\n     * @param idsLength Length of the array of token identifiers\\n     * @param valuesLength Length of the array of token amounts\\n     */\\n    error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength);\\n}\\n\",\"keccak256\":\"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol":{"ERC1967Utils":{"abi":[{"inputs":[{"internalType":"address","name":"admin","type":"address"}],"name":"ERC1967InvalidAdmin","type":"error"},{"inputs":[{"internalType":"address","name":"beacon","type":"address"}],"name":"ERC1967InvalidBeacon","type":"error"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"name":"ERC1967InvalidImplementation","type":"error"},{"inputs":[],"name":"ERC1967NonPayable","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beacon","type":"address"}],"name":"BeaconUpgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"}],"devdoc":{"details":"This abstract contract provides getters and event emitting update functions for https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.","errors":{"ERC1967InvalidAdmin(address)":[{"details":"The `admin` of the proxy is invalid."}],"ERC1967InvalidBeacon(address)":[{"details":"The `beacon` of the proxy is invalid."}],"ERC1967InvalidImplementation(address)":[{"details":"The `implementation` of the proxy is invalid."}],"ERC1967NonPayable()":[{"details":"An upgrade function sees `msg.value > 0` that may be lost."}]},"events":{"AdminChanged(address,address)":{"details":"Emitted when the admin account has changed."},"BeaconUpgraded(address)":{"details":"Emitted when the beacon is changed."},"Upgraded(address)":{"details":"Emitted when the implementation is upgraded."}},"kind":"dev","methods":{},"stateVariables":{"ADMIN_SLOT":{"details":"Storage slot with the admin of the contract. This is the keccak-256 hash of \"eip1967.proxy.admin\" subtracted by 1."},"BEACON_SLOT":{"details":"The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy. This is the keccak-256 hash of \"eip1967.proxy.beacon\" subtracted by 1."},"IMPLEMENTATION_SLOT":{"details":"Storage slot with the address of the current implementation. This is the keccak-256 hash of \"eip1967.proxy.implementation\" subtracted by 1."}},"version":1},"evm":{"bytecode":{"functionDebugData":{"allocate_unbounded":{"entryPoint":33,"id":null,"parameterSlots":0,"returnSlots":1},"revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb":{"entryPoint":39,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[],"linkReferences":{},"object":"608060405234601d57600e6021565b603e602c823930815050603e90f35b6027565b60405190565b5f80fdfe60806040525f80fdfea2646970667358221220c1043002e0957d9d1143817db7c5f5aa7c61d4a09773cc8b4b7dd5f24dbdac0564736f6c63430008190033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x1D JUMPI PUSH1 0xE PUSH1 0x21 JUMP JUMPDEST PUSH1 0x3E PUSH1 0x2C DUP3 CODECOPY ADDRESS DUP2 POP POP PUSH1 0x3E SWAP1 RETURN JUMPDEST PUSH1 0x27 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC1 DIV ADDRESS MUL 0xE0 SWAP6 PUSH30 0x9D1143817DB7C5F5AA7C61D4A09773CC8B4B7DD5F24DBDAC0564736F6C63 NUMBER STOP ADDMOD NOT STOP CALLER ","sourceMap":"449:6273:9:-:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;"},"deployedBytecode":{"functionDebugData":{"revert_error_42b3090547df1d2001c96683413b8cf91c1b902ef5e3cb8d9f6f304cf7446f74":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"60806040525f80fdfea2646970667358221220c1043002e0957d9d1143817db7c5f5aa7c61d4a09773cc8b4b7dd5f24dbdac0564736f6c63430008190033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC1 DIV ADDRESS MUL 0xE0 SWAP6 PUSH30 0x9D1143817DB7C5F5AA7C61D4A09773CC8B4B7DD5F24DBDAC0564736F6C63 NUMBER STOP ADDMOD NOT STOP CALLER ","sourceMap":"449:6273:9:-:0;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"12400","executionCost":"infinite","totalCost":"infinite"},"internal":{"_checkNonPayable()":"infinite","_setAdmin(address)":"infinite","_setBeacon(address)":"infinite","_setImplementation(address)":"infinite","changeAdmin(address)":"infinite","getAdmin()":"infinite","getBeacon()":"infinite","getImplementation()":"infinite","upgradeBeaconToAndCall(address,bytes memory)":"infinite","upgradeToAndCall(address,bytes memory)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidAdmin\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidBeacon\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"}],\"devdoc\":{\"details\":\"This abstract contract provides getters and event emitting update functions for https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\",\"errors\":{\"ERC1967InvalidAdmin(address)\":[{\"details\":\"The `admin` of the proxy is invalid.\"}],\"ERC1967InvalidBeacon(address)\":[{\"details\":\"The `beacon` of the proxy is invalid.\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}]},\"events\":{\"AdminChanged(address,address)\":{\"details\":\"Emitted when the admin account has changed.\"},\"BeaconUpgraded(address)\":{\"details\":\"Emitted when the beacon is changed.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"ADMIN_SLOT\":{\"details\":\"Storage slot with the admin of the contract. This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1.\"},\"BEACON_SLOT\":{\"details\":\"The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy. This is the keccak-256 hash of \\\"eip1967.proxy.beacon\\\" subtracted by 1.\"},\"IMPLEMENTATION_SLOT\":{\"details\":\"Storage slot with the address of the current implementation. This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":\"ERC1967Utils\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":20000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/ERC1967/ERC1967Utils.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IBeacon} from \\\"../beacon/IBeacon.sol\\\";\\nimport {Address} from \\\"../../utils/Address.sol\\\";\\nimport {StorageSlot} from \\\"../../utils/StorageSlot.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n */\\nlibrary ERC1967Utils {\\n    // We re-declare ERC-1967 events here because they can't be used directly from IERC1967.\\n    // This will be fixed in Solidity 0.8.21. At that point we should remove these events.\\n    /**\\n     * @dev Emitted when the implementation is upgraded.\\n     */\\n    event Upgraded(address indexed implementation);\\n\\n    /**\\n     * @dev Emitted when the admin account has changed.\\n     */\\n    event AdminChanged(address previousAdmin, address newAdmin);\\n\\n    /**\\n     * @dev Emitted when the beacon is changed.\\n     */\\n    event BeaconUpgraded(address indexed beacon);\\n\\n    /**\\n     * @dev Storage slot with the address of the current implementation.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1.\\n     */\\n    // solhint-disable-next-line private-vars-leading-underscore\\n    bytes32 internal constant IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n    /**\\n     * @dev The `implementation` of the proxy is invalid.\\n     */\\n    error ERC1967InvalidImplementation(address implementation);\\n\\n    /**\\n     * @dev The `admin` of the proxy is invalid.\\n     */\\n    error ERC1967InvalidAdmin(address admin);\\n\\n    /**\\n     * @dev The `beacon` of the proxy is invalid.\\n     */\\n    error ERC1967InvalidBeacon(address beacon);\\n\\n    /**\\n     * @dev An upgrade function sees `msg.value > 0` that may be lost.\\n     */\\n    error ERC1967NonPayable();\\n\\n    /**\\n     * @dev Returns the current implementation address.\\n     */\\n    function getImplementation() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(IMPLEMENTATION_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new address in the EIP1967 implementation slot.\\n     */\\n    function _setImplementation(address newImplementation) private {\\n        if (newImplementation.code.length == 0) {\\n            revert ERC1967InvalidImplementation(newImplementation);\\n        }\\n        StorageSlot.getAddressSlot(IMPLEMENTATION_SLOT).value = newImplementation;\\n    }\\n\\n    /**\\n     * @dev Performs implementation upgrade with additional setup call if data is nonempty.\\n     * This function is payable only if the setup call is performed, otherwise `msg.value` is rejected\\n     * to avoid stuck value in the contract.\\n     *\\n     * Emits an {IERC1967-Upgraded} event.\\n     */\\n    function upgradeToAndCall(address newImplementation, bytes memory data) internal {\\n        _setImplementation(newImplementation);\\n        emit Upgraded(newImplementation);\\n\\n        if (data.length > 0) {\\n            Address.functionDelegateCall(newImplementation, data);\\n        } else {\\n            _checkNonPayable();\\n        }\\n    }\\n\\n    /**\\n     * @dev Storage slot with the admin of the contract.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1.\\n     */\\n    // solhint-disable-next-line private-vars-leading-underscore\\n    bytes32 internal constant ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n    /**\\n     * @dev Returns the current admin.\\n     *\\n     * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using\\n     * the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\\n     * `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\\n     */\\n    function getAdmin() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(ADMIN_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new address in the EIP1967 admin slot.\\n     */\\n    function _setAdmin(address newAdmin) private {\\n        if (newAdmin == address(0)) {\\n            revert ERC1967InvalidAdmin(address(0));\\n        }\\n        StorageSlot.getAddressSlot(ADMIN_SLOT).value = newAdmin;\\n    }\\n\\n    /**\\n     * @dev Changes the admin of the proxy.\\n     *\\n     * Emits an {IERC1967-AdminChanged} event.\\n     */\\n    function changeAdmin(address newAdmin) internal {\\n        emit AdminChanged(getAdmin(), newAdmin);\\n        _setAdmin(newAdmin);\\n    }\\n\\n    /**\\n     * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.beacon\\\" subtracted by 1.\\n     */\\n    // solhint-disable-next-line private-vars-leading-underscore\\n    bytes32 internal constant BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n    /**\\n     * @dev Returns the current beacon.\\n     */\\n    function getBeacon() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(BEACON_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new beacon in the EIP1967 beacon slot.\\n     */\\n    function _setBeacon(address newBeacon) private {\\n        if (newBeacon.code.length == 0) {\\n            revert ERC1967InvalidBeacon(newBeacon);\\n        }\\n\\n        StorageSlot.getAddressSlot(BEACON_SLOT).value = newBeacon;\\n\\n        address beaconImplementation = IBeacon(newBeacon).implementation();\\n        if (beaconImplementation.code.length == 0) {\\n            revert ERC1967InvalidImplementation(beaconImplementation);\\n        }\\n    }\\n\\n    /**\\n     * @dev Change the beacon and trigger a setup call if data is nonempty.\\n     * This function is payable only if the setup call is performed, otherwise `msg.value` is rejected\\n     * to avoid stuck value in the contract.\\n     *\\n     * Emits an {IERC1967-BeaconUpgraded} event.\\n     *\\n     * CAUTION: Invoking this function has no effect on an instance of {BeaconProxy} since v5, since\\n     * it uses an immutable beacon without looking at the value of the ERC-1967 beacon slot for\\n     * efficiency.\\n     */\\n    function upgradeBeaconToAndCall(address newBeacon, bytes memory data) internal {\\n        _setBeacon(newBeacon);\\n        emit BeaconUpgraded(newBeacon);\\n\\n        if (data.length > 0) {\\n            Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\\n        } else {\\n            _checkNonPayable();\\n        }\\n    }\\n\\n    /**\\n     * @dev Reverts if `msg.value` is not zero. It can be used to avoid `msg.value` stuck in the contract\\n     * if an upgrade doesn't perform an initialization call.\\n     */\\n    function _checkNonPayable() private {\\n        if (msg.value > 0) {\\n            revert ERC1967NonPayable();\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x06a78f9b3ee3e6d0eb4e4cd635ba49960bea34cac1db8c0a27c75f2319f1fd65\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n    /**\\n     * @dev Must return an address that can be used as a delegate call target.\\n     *\\n     * {UpgradeableBeacon} will check that this address is a contract.\\n     */\\n    function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n    /**\\n     * @dev The ETH balance of the account is not enough to perform the operation.\\n     */\\n    error AddressInsufficientBalance(address account);\\n\\n    /**\\n     * @dev There's no code at `target` (it is not a contract).\\n     */\\n    error AddressEmptyCode(address target);\\n\\n    /**\\n     * @dev A call to an address target failed. The target may have reverted.\\n     */\\n    error FailedInnerCall();\\n\\n    /**\\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n     * `recipient`, forwarding all available gas and reverting on errors.\\n     *\\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n     * imposed by `transfer`, making them unable to receive funds via\\n     * `transfer`. {sendValue} removes this limitation.\\n     *\\n     * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n     *\\n     * IMPORTANT: because control is transferred to `recipient`, care must be\\n     * taken to not create reentrancy vulnerabilities. Consider using\\n     * {ReentrancyGuard} or the\\n     * https://solidity.readthedocs.io/en/v0.8.20/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n     */\\n    function sendValue(address payable recipient, uint256 amount) internal {\\n        if (address(this).balance < amount) {\\n            revert AddressInsufficientBalance(address(this));\\n        }\\n\\n        (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n        if (!success) {\\n            revert FailedInnerCall();\\n        }\\n    }\\n\\n    /**\\n     * @dev Performs a Solidity function call using a low level `call`. A\\n     * plain `call` is an unsafe replacement for a function call: use this\\n     * function instead.\\n     *\\n     * If `target` reverts with a revert reason or custom error, it is bubbled\\n     * up by this function (like regular Solidity function calls). However, if\\n     * the call reverted with no returned reason, this function reverts with a\\n     * {FailedInnerCall} error.\\n     *\\n     * Returns the raw returned data. To convert to the expected return value,\\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n     *\\n     * Requirements:\\n     *\\n     * - `target` must be a contract.\\n     * - calling `target` with `data` must not revert.\\n     */\\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, 0);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but also transferring `value` wei to `target`.\\n     *\\n     * Requirements:\\n     *\\n     * - the calling contract must have an ETH balance of at least `value`.\\n     * - the called Solidity function must be `payable`.\\n     */\\n    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n        if (address(this).balance < value) {\\n            revert AddressInsufficientBalance(address(this));\\n        }\\n        (bool success, bytes memory returndata) = target.call{value: value}(data);\\n        return verifyCallResultFromTarget(target, success, returndata);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a static call.\\n     */\\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n        (bool success, bytes memory returndata) = target.staticcall(data);\\n        return verifyCallResultFromTarget(target, success, returndata);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a delegate call.\\n     */\\n    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n        (bool success, bytes memory returndata) = target.delegatecall(data);\\n        return verifyCallResultFromTarget(target, success, returndata);\\n    }\\n\\n    /**\\n     * @dev Tool to verify that a low level call to smart-contract was successful, and reverts if the target\\n     * was not a contract or bubbling up the revert reason (falling back to {FailedInnerCall}) in case of an\\n     * unsuccessful call.\\n     */\\n    function verifyCallResultFromTarget(\\n        address target,\\n        bool success,\\n        bytes memory returndata\\n    ) internal view returns (bytes memory) {\\n        if (!success) {\\n            _revert(returndata);\\n        } else {\\n            // only check if target is a contract if the call was successful and the return data is empty\\n            // otherwise we already know that it was a contract\\n            if (returndata.length == 0 && target.code.length == 0) {\\n                revert AddressEmptyCode(target);\\n            }\\n            return returndata;\\n        }\\n    }\\n\\n    /**\\n     * @dev Tool to verify that a low level call was successful, and reverts if it wasn't, either by bubbling the\\n     * revert reason or with a default {FailedInnerCall} error.\\n     */\\n    function verifyCallResult(bool success, bytes memory returndata) internal pure returns (bytes memory) {\\n        if (!success) {\\n            _revert(returndata);\\n        } else {\\n            return returndata;\\n        }\\n    }\\n\\n    /**\\n     * @dev Reverts with returndata if present. Otherwise reverts with {FailedInnerCall}.\\n     */\\n    function _revert(bytes memory returndata) private pure {\\n        // Look for revert reason and bubble it up if present\\n        if (returndata.length > 0) {\\n            // The easiest way to bubble the revert reason is using memory via assembly\\n            /// @solidity memory-safe-assembly\\n            assembly {\\n                let returndata_size := mload(returndata)\\n                revert(add(32, returndata), returndata_size)\\n            }\\n        } else {\\n            revert FailedInnerCall();\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n *     bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n *     function _getImplementation() internal view returns (address) {\\n *         return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n *     }\\n *\\n *     function _setImplementation(address newImplementation) internal {\\n *         require(newImplementation.code.length > 0);\\n *         StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n *     }\\n * }\\n * ```\\n */\\nlibrary StorageSlot {\\n    struct AddressSlot {\\n        address value;\\n    }\\n\\n    struct BooleanSlot {\\n        bool value;\\n    }\\n\\n    struct Bytes32Slot {\\n        bytes32 value;\\n    }\\n\\n    struct Uint256Slot {\\n        uint256 value;\\n    }\\n\\n    struct StringSlot {\\n        string value;\\n    }\\n\\n    struct BytesSlot {\\n        bytes value;\\n    }\\n\\n    /**\\n     * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n     */\\n    function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n     */\\n    function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n     */\\n    function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n     */\\n    function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n     */\\n    function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n     */\\n    function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := store.slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n     */\\n    function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n     */\\n    function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := store.slot\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/proxy/beacon/IBeacon.sol":{"IBeacon":{"abi":[{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"This is the interface that {BeaconProxy} expects of its beacon.","kind":"dev","methods":{"implementation()":{"details":"Must return an address that can be used as a delegate call target. {UpgradeableBeacon} will check that this address is a contract."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"implementation()":"5c60da1b"}},"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"This is the interface that {BeaconProxy} expects of its beacon.\",\"kind\":\"dev\",\"methods\":{\"implementation()\":{\"details\":\"Must return an address that can be used as a delegate call target. {UpgradeableBeacon} will check that this address is a contract.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":\"IBeacon\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":20000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n    /**\\n     * @dev Must return an address that can be used as a delegate call target.\\n     *\\n     * {UpgradeableBeacon} will check that this address is a contract.\\n     */\\n    function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/token/ERC20/IERC20.sol":{"IERC20":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Interface of the ERC20 standard as defined in the EIP.","events":{"Approval(address,address,uint256)":{"details":"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance."},"Transfer(address,address,uint256)":{"details":"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero."}},"kind":"dev","methods":{"allowance(address,address)":{"details":"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called."},"approve(address,uint256)":{"details":"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event."},"balanceOf(address)":{"details":"Returns the value of tokens owned by `account`."},"totalSupply()":{"details":"Returns the value of tokens in existence."},"transfer(address,uint256)":{"details":"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."},"transferFrom(address,address,uint256)":{"details":"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC20 standard as defined in the EIP.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":\"IERC20\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":20000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n    /**\\n     * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n     * another (`to`).\\n     *\\n     * Note that `value` may be zero.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n    /**\\n     * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n     * a call to {approve}. `value` is the new allowance.\\n     */\\n    event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n    /**\\n     * @dev Returns the value of tokens in existence.\\n     */\\n    function totalSupply() external view returns (uint256);\\n\\n    /**\\n     * @dev Returns the value of tokens owned by `account`.\\n     */\\n    function balanceOf(address account) external view returns (uint256);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from the caller's account to `to`.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transfer(address to, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Returns the remaining number of tokens that `spender` will be\\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n     * zero by default.\\n     *\\n     * This value changes when {approve} or {transferFrom} are called.\\n     */\\n    function allowance(address owner, address spender) external view returns (uint256);\\n\\n    /**\\n     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\\n     * caller's tokens.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n     * that someone may use both the old and the new allowance by unfortunate\\n     * transaction ordering. One possible solution to mitigate this race\\n     * condition is to first reduce the spender's allowance to 0 and set the\\n     * desired value afterwards:\\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address spender, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to` using the\\n     * allowance mechanism. `value` is then deducted from the caller's\\n     * allowance.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(address from, address to, uint256 value) external returns (bool);\\n}\\n\",\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"IERC20Metadata":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Interface for the optional metadata functions from the ERC20 standard.","events":{"Approval(address,address,uint256)":{"details":"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance."},"Transfer(address,address,uint256)":{"details":"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero."}},"kind":"dev","methods":{"allowance(address,address)":{"details":"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called."},"approve(address,uint256)":{"details":"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event."},"balanceOf(address)":{"details":"Returns the value of tokens owned by `account`."},"decimals()":{"details":"Returns the decimals places of the token."},"name()":{"details":"Returns the name of the token."},"symbol()":{"details":"Returns the symbol of the token."},"totalSupply()":{"details":"Returns the value of tokens in existence."},"transfer(address,uint256)":{"details":"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."},"transferFrom(address,address,uint256)":{"details":"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","name()":"06fdde03","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for the optional metadata functions from the ERC20 standard.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"decimals()\":{\"details\":\"Returns the decimals places of the token.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":\"IERC20Metadata\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":20000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n    /**\\n     * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n     * another (`to`).\\n     *\\n     * Note that `value` may be zero.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n    /**\\n     * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n     * a call to {approve}. `value` is the new allowance.\\n     */\\n    event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n    /**\\n     * @dev Returns the value of tokens in existence.\\n     */\\n    function totalSupply() external view returns (uint256);\\n\\n    /**\\n     * @dev Returns the value of tokens owned by `account`.\\n     */\\n    function balanceOf(address account) external view returns (uint256);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from the caller's account to `to`.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transfer(address to, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Returns the remaining number of tokens that `spender` will be\\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n     * zero by default.\\n     *\\n     * This value changes when {approve} or {transferFrom} are called.\\n     */\\n    function allowance(address owner, address spender) external view returns (uint256);\\n\\n    /**\\n     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\\n     * caller's tokens.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n     * that someone may use both the old and the new allowance by unfortunate\\n     * transaction ordering. One possible solution to mitigate this race\\n     * condition is to first reduce the spender's allowance to 0 and set the\\n     * desired value afterwards:\\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address spender, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to` using the\\n     * allowance mechanism. `value` is then deducted from the caller's\\n     * allowance.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(address from, address to, uint256 value) external returns (bool);\\n}\\n\",\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/extensions/IERC20Metadata.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"../IERC20.sol\\\";\\n\\n/**\\n * @dev Interface for the optional metadata functions from the ERC20 standard.\\n */\\ninterface IERC20Metadata is IERC20 {\\n    /**\\n     * @dev Returns the name of the token.\\n     */\\n    function name() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the symbol of the token.\\n     */\\n    function symbol() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the decimals places of the token.\\n     */\\n    function decimals() external view returns (uint8);\\n}\\n\",\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/Address.sol":{"Address":{"abi":[{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"AddressEmptyCode","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"AddressInsufficientBalance","type":"error"},{"inputs":[],"name":"FailedInnerCall","type":"error"}],"devdoc":{"details":"Collection of functions related to the address type","errors":{"AddressEmptyCode(address)":[{"details":"There's no code at `target` (it is not a contract)."}],"AddressInsufficientBalance(address)":[{"details":"The ETH balance of the account is not enough to perform the operation."}],"FailedInnerCall()":[{"details":"A call to an address target failed. The target may have reverted."}]},"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{"allocate_unbounded":{"entryPoint":33,"id":null,"parameterSlots":0,"returnSlots":1},"revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb":{"entryPoint":39,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[],"linkReferences":{},"object":"608060405234601d57600e6021565b603e602c823930815050603e90f35b6027565b60405190565b5f80fdfe60806040525f80fdfea2646970667358221220fe592213b84a96e53e2db44059a20045151fdc253761b35d349376c5fcc7026364736f6c63430008190033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x1D JUMPI PUSH1 0xE PUSH1 0x21 JUMP JUMPDEST PUSH1 0x3E PUSH1 0x2C DUP3 CODECOPY ADDRESS DUP2 POP POP PUSH1 0x3E SWAP1 RETURN JUMPDEST PUSH1 0x27 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 INVALID MSIZE 0x22 SGT 0xB8 BLOBBASEFEE SWAP7 0xE5 RETURNDATACOPY 0x2D 0xB4 BLOCKHASH MSIZE LOG2 STOP GASLIMIT ISZERO 0x1F 0xDC 0x25 CALLDATACOPY PUSH2 0xB35D CALLVALUE SWAP4 PUSH23 0xC5FCC7026364736F6C6343000819003300000000000000 ","sourceMap":"195:6066:13:-:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;"},"deployedBytecode":{"functionDebugData":{"revert_error_42b3090547df1d2001c96683413b8cf91c1b902ef5e3cb8d9f6f304cf7446f74":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"60806040525f80fdfea2646970667358221220fe592213b84a96e53e2db44059a20045151fdc253761b35d349376c5fcc7026364736f6c63430008190033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 INVALID MSIZE 0x22 SGT 0xB8 BLOBBASEFEE SWAP7 0xE5 RETURNDATACOPY 0x2D 0xB4 BLOCKHASH MSIZE LOG2 STOP GASLIMIT ISZERO 0x1F 0xDC 0x25 CALLDATACOPY PUSH2 0xB35D CALLVALUE SWAP4 PUSH23 0xC5FCC7026364736F6C6343000819003300000000000000 ","sourceMap":"195:6066:13:-:0;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"12400","executionCost":"infinite","totalCost":"infinite"},"internal":{"_revert(bytes memory)":"infinite","functionCall(address,bytes memory)":"infinite","functionCallWithValue(address,bytes memory,uint256)":"infinite","functionDelegateCall(address,bytes memory)":"infinite","functionStaticCall(address,bytes memory)":"infinite","sendValue(address payable,uint256)":"infinite","verifyCallResult(bool,bytes memory)":"infinite","verifyCallResultFromTarget(address,bool,bytes memory)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Collection of functions related to the address type\",\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"AddressInsufficientBalance(address)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}],\"FailedInnerCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Address.sol\":\"Address\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":20000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n    /**\\n     * @dev The ETH balance of the account is not enough to perform the operation.\\n     */\\n    error AddressInsufficientBalance(address account);\\n\\n    /**\\n     * @dev There's no code at `target` (it is not a contract).\\n     */\\n    error AddressEmptyCode(address target);\\n\\n    /**\\n     * @dev A call to an address target failed. The target may have reverted.\\n     */\\n    error FailedInnerCall();\\n\\n    /**\\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n     * `recipient`, forwarding all available gas and reverting on errors.\\n     *\\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n     * imposed by `transfer`, making them unable to receive funds via\\n     * `transfer`. {sendValue} removes this limitation.\\n     *\\n     * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n     *\\n     * IMPORTANT: because control is transferred to `recipient`, care must be\\n     * taken to not create reentrancy vulnerabilities. Consider using\\n     * {ReentrancyGuard} or the\\n     * https://solidity.readthedocs.io/en/v0.8.20/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n     */\\n    function sendValue(address payable recipient, uint256 amount) internal {\\n        if (address(this).balance < amount) {\\n            revert AddressInsufficientBalance(address(this));\\n        }\\n\\n        (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n        if (!success) {\\n            revert FailedInnerCall();\\n        }\\n    }\\n\\n    /**\\n     * @dev Performs a Solidity function call using a low level `call`. A\\n     * plain `call` is an unsafe replacement for a function call: use this\\n     * function instead.\\n     *\\n     * If `target` reverts with a revert reason or custom error, it is bubbled\\n     * up by this function (like regular Solidity function calls). However, if\\n     * the call reverted with no returned reason, this function reverts with a\\n     * {FailedInnerCall} error.\\n     *\\n     * Returns the raw returned data. To convert to the expected return value,\\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n     *\\n     * Requirements:\\n     *\\n     * - `target` must be a contract.\\n     * - calling `target` with `data` must not revert.\\n     */\\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, 0);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but also transferring `value` wei to `target`.\\n     *\\n     * Requirements:\\n     *\\n     * - the calling contract must have an ETH balance of at least `value`.\\n     * - the called Solidity function must be `payable`.\\n     */\\n    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n        if (address(this).balance < value) {\\n            revert AddressInsufficientBalance(address(this));\\n        }\\n        (bool success, bytes memory returndata) = target.call{value: value}(data);\\n        return verifyCallResultFromTarget(target, success, returndata);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a static call.\\n     */\\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n        (bool success, bytes memory returndata) = target.staticcall(data);\\n        return verifyCallResultFromTarget(target, success, returndata);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a delegate call.\\n     */\\n    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n        (bool success, bytes memory returndata) = target.delegatecall(data);\\n        return verifyCallResultFromTarget(target, success, returndata);\\n    }\\n\\n    /**\\n     * @dev Tool to verify that a low level call to smart-contract was successful, and reverts if the target\\n     * was not a contract or bubbling up the revert reason (falling back to {FailedInnerCall}) in case of an\\n     * unsuccessful call.\\n     */\\n    function verifyCallResultFromTarget(\\n        address target,\\n        bool success,\\n        bytes memory returndata\\n    ) internal view returns (bytes memory) {\\n        if (!success) {\\n            _revert(returndata);\\n        } else {\\n            // only check if target is a contract if the call was successful and the return data is empty\\n            // otherwise we already know that it was a contract\\n            if (returndata.length == 0 && target.code.length == 0) {\\n                revert AddressEmptyCode(target);\\n            }\\n            return returndata;\\n        }\\n    }\\n\\n    /**\\n     * @dev Tool to verify that a low level call was successful, and reverts if it wasn't, either by bubbling the\\n     * revert reason or with a default {FailedInnerCall} error.\\n     */\\n    function verifyCallResult(bool success, bytes memory returndata) internal pure returns (bytes memory) {\\n        if (!success) {\\n            _revert(returndata);\\n        } else {\\n            return returndata;\\n        }\\n    }\\n\\n    /**\\n     * @dev Reverts with returndata if present. Otherwise reverts with {FailedInnerCall}.\\n     */\\n    function _revert(bytes memory returndata) private pure {\\n        // Look for revert reason and bubble it up if present\\n        if (returndata.length > 0) {\\n            // The easiest way to bubble the revert reason is using memory via assembly\\n            /// @solidity memory-safe-assembly\\n            assembly {\\n                let returndata_size := mload(returndata)\\n                revert(add(32, returndata), returndata_size)\\n            }\\n        } else {\\n            revert FailedInnerCall();\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/StorageSlot.sol":{"StorageSlot":{"abi":[],"devdoc":{"details":"Library for reading and writing primitive types to specific storage slots. Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts. This library helps with reading and writing to such slots without the need for inline assembly. The functions in this library return Slot structs that contain a `value` member that can be used to read or write. Example usage to set ERC1967 implementation slot: ```solidity contract ERC1967 {     bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;     function _getImplementation() internal view returns (address) {         return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;     }     function _setImplementation(address newImplementation) internal {         require(newImplementation.code.length > 0);         StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;     } } ```","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{"allocate_unbounded":{"entryPoint":33,"id":null,"parameterSlots":0,"returnSlots":1},"revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb":{"entryPoint":39,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[],"linkReferences":{},"object":"608060405234601d57600e6021565b603e602c823930815050603e90f35b6027565b60405190565b5f80fdfe60806040525f80fdfea2646970667358221220f84c9254faf500bf03afbb32fa31918b2a825a517f9ae06e91edf6c2e4f53c2364736f6c63430008190033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x1D JUMPI PUSH1 0xE PUSH1 0x21 JUMP JUMPDEST PUSH1 0x3E PUSH1 0x2C DUP3 CODECOPY ADDRESS DUP2 POP POP PUSH1 0x3E SWAP1 RETURN JUMPDEST PUSH1 0x27 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xF8 0x4C SWAP3 SLOAD STATICCALL CREATE2 STOP 0xBF SUB 0xAF 0xBB ORIGIN STATICCALL BALANCE SWAP2 DUP12 0x2A DUP3 GAS MLOAD PUSH32 0x9AE06E91EDF6C2E4F53C2364736F6C6343000819003300000000000000000000 ","sourceMap":"1245:2685:14:-:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;"},"deployedBytecode":{"functionDebugData":{"revert_error_42b3090547df1d2001c96683413b8cf91c1b902ef5e3cb8d9f6f304cf7446f74":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"60806040525f80fdfea2646970667358221220f84c9254faf500bf03afbb32fa31918b2a825a517f9ae06e91edf6c2e4f53c2364736f6c63430008190033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xF8 0x4C SWAP3 SLOAD STATICCALL CREATE2 STOP 0xBF SUB 0xAF 0xBB ORIGIN STATICCALL BALANCE SWAP2 DUP12 0x2A DUP3 GAS MLOAD PUSH32 0x9AE06E91EDF6C2E4F53C2364736F6C6343000819003300000000000000000000 ","sourceMap":"1245:2685:14:-:0;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"12400","executionCost":"infinite","totalCost":"infinite"},"internal":{"getAddressSlot(bytes32)":"infinite","getBooleanSlot(bytes32)":"infinite","getBytes32Slot(bytes32)":"infinite","getBytesSlot(bytes storage pointer)":"infinite","getBytesSlot(bytes32)":"infinite","getStringSlot(bytes32)":"infinite","getStringSlot(string storage pointer)":"infinite","getUint256Slot(bytes32)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Library for reading and writing primitive types to specific storage slots. Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts. This library helps with reading and writing to such slots without the need for inline assembly. The functions in this library return Slot structs that contain a `value` member that can be used to read or write. Example usage to set ERC1967 implementation slot: ```solidity contract ERC1967 {     bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;     function _getImplementation() internal view returns (address) {         return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;     }     function _setImplementation(address newImplementation) internal {         require(newImplementation.code.length > 0);         StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;     } } ```\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/StorageSlot.sol\":\"StorageSlot\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":20000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n *     bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n *     function _getImplementation() internal view returns (address) {\\n *         return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n *     }\\n *\\n *     function _setImplementation(address newImplementation) internal {\\n *         require(newImplementation.code.length > 0);\\n *         StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n *     }\\n * }\\n * ```\\n */\\nlibrary StorageSlot {\\n    struct AddressSlot {\\n        address value;\\n    }\\n\\n    struct BooleanSlot {\\n        bool value;\\n    }\\n\\n    struct Bytes32Slot {\\n        bytes32 value;\\n    }\\n\\n    struct Uint256Slot {\\n        uint256 value;\\n    }\\n\\n    struct StringSlot {\\n        string value;\\n    }\\n\\n    struct BytesSlot {\\n        bytes value;\\n    }\\n\\n    /**\\n     * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n     */\\n    function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n     */\\n    function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n     */\\n    function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n     */\\n    function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n     */\\n    function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n     */\\n    function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := store.slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n     */\\n    function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n     */\\n    function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := store.slot\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/interfaces/IBaluniV1Oracle.sol":{"IBaluniV1Oracle":{"abi":[{"inputs":[{"internalType":"address","name":"fromToken","type":"address"},{"internalType":"address","name":"toToken","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"convert","outputs":[{"internalType":"uint256","name":"valuation","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"fromToken","type":"address"},{"internalType":"address","name":"toToken","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"convertScaled","outputs":[{"internalType":"uint256","name":"valuation","type":"uint256"}],"stateMutability":"view","type":"function"}],"devdoc":{"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"convert(address,address,uint256)":"248391ff","convertScaled(address,address,uint256)":"b27b5e75"}},"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"fromToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"toToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"convert\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"valuation\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"fromToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"toToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"convertScaled\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"valuation\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IBaluniV1Oracle.sol\":\"IBaluniV1Oracle\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":20000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"contracts/interfaces/IBaluniV1Oracle.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\n\\r\\ninterface IBaluniV1Oracle {\\r\\n    function convert(address fromToken, address toToken, uint256 amount) external view returns (uint256 valuation);\\r\\n\\r\\n    function convertScaled(\\r\\n        address fromToken,\\r\\n        address toToken,\\r\\n        uint256 amount\\r\\n    ) external view returns (uint256 valuation);\\r\\n}\\r\\n\",\"keccak256\":\"0x2bc62f7640b15a1772de630216f6fe6aa7a719cb6cf0255befdde19ec8de785a\",\"license\":\"GNU AGPLv3\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/interfaces/IBaluniV1Registry.sol":{"IBaluniV1Registry":{"abi":[{"inputs":[],"name":"get1inchSpotAgg","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBPS_BASE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBPS_FEE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBaluniAgentFactory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBaluniDCAVaultRegistry","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBaluniHyperPoolZap","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBaluniOracle","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBaluniPoolPeriphery","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBaluniPoolRegistry","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBaluniPoolZap","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBaluniRebalancer","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBaluniRegistry","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBaluniRouter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBaluniSwapper","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBaluniYearnVaultRegistry","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMAX_BPS_FEE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getREBALANCE_THRESHOLD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getStaticOracle","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTreasury","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getUSDC","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getUniswapFactory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getUniswapQuoter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getUniswapRouter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getWNATIVE","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"__1inchSpotAgg","type":"address"}],"name":"set1inchSpotAgg","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"__BPS_FEE","type":"uint256"}],"name":"setBPS_FEE","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_baluniAgentFactory","type":"address"}],"name":"setBaluniAgentFactory","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_baluniPoolRegistry","type":"address"}],"name":"setBaluniDCAVaultRegistry","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_baluniHyperPoolZap","type":"address"}],"name":"setBaluniHyperPoolZap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_baluniOracle","type":"address"}],"name":"setBaluniOracle","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_baluniPoolPeriphery","type":"address"}],"name":"setBaluniPoolPeriphery","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_baluniPoolRegistry","type":"address"}],"name":"setBaluniPoolRegistry","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_baluniPoolZap","type":"address"}],"name":"setBaluniPoolZap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_baluniRebalancer","type":"address"}],"name":"setBaluniRebalancer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_baluniRegistry","type":"address"}],"name":"setBaluniRegistry","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_baluniRouter","type":"address"}],"name":"setBaluniRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_baluniSwapper","type":"address"}],"name":"setBaluniSwapper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_baluniYearnVaultRegistry","type":"address"}],"name":"setBaluniYearnVaultRegistry","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_REBALANCE_THRESHOLD","type":"uint256"}],"name":"setREBALANCE_THRESHOLD","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_staticOracle","type":"address"}],"name":"setStaticOracle","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_treasury","type":"address"}],"name":"setTreasury","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_USDC","type":"address"}],"name":"setUSDC","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_uniswapFactory","type":"address"}],"name":"setUniswapFactory","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_uniswapQuoter","type":"address"}],"name":"setUniswapQuoter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_uniswapRouter","type":"address"}],"name":"setUniswapRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_WNATIVE","type":"address"}],"name":"setWNATIVE","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Interface for the BaluniV1Registry contract.","kind":"dev","methods":{},"title":"IBaluniV1Registry","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"get1inchSpotAgg()":"8e1c3a8a","getBPS_BASE()":"4f4608a2","getBPS_FEE()":"85462d6f","getBaluniAgentFactory()":"f5d2d998","getBaluniDCAVaultRegistry()":"ffa08e95","getBaluniHyperPoolZap()":"0f21717d","getBaluniOracle()":"bb3ba04c","getBaluniPoolPeriphery()":"1acb6141","getBaluniPoolRegistry()":"32569e02","getBaluniPoolZap()":"040f767e","getBaluniRebalancer()":"cff49d68","getBaluniRegistry()":"c9aba8ae","getBaluniRouter()":"04cc7325","getBaluniSwapper()":"82755ebb","getBaluniYearnVaultRegistry()":"32327d1f","getMAX_BPS_FEE()":"9380fb6f","getREBALANCE_THRESHOLD()":"ea233c05","getStaticOracle()":"a5d2236f","getTreasury()":"3b19e84a","getUSDC()":"1bf01e9b","getUniswapFactory()":"3e6dfa36","getUniswapQuoter()":"b0a70975","getUniswapRouter()":"524900b5","getWNATIVE()":"6c9c0078","set1inchSpotAgg(address)":"c08f786b","setBPS_FEE(uint256)":"9e6453f8","setBaluniAgentFactory(address)":"f1dccde7","setBaluniDCAVaultRegistry(address)":"d7e53673","setBaluniHyperPoolZap(address)":"a23dccee","setBaluniOracle(address)":"f5b84f64","setBaluniPoolPeriphery(address)":"588c5b70","setBaluniPoolRegistry(address)":"f98977a9","setBaluniPoolZap(address)":"8ffc0673","setBaluniRebalancer(address)":"0241bffa","setBaluniRegistry(address)":"6c43274c","setBaluniRouter(address)":"400fb668","setBaluniSwapper(address)":"c3f5df5c","setBaluniYearnVaultRegistry(address)":"ba535c54","setREBALANCE_THRESHOLD(uint256)":"2da52442","setStaticOracle(address)":"cc01e9a6","setTreasury(address)":"f0f44260","setUSDC(address)":"b3e089a2","setUniswapFactory(address)":"e04b677f","setUniswapQuoter(address)":"26158136","setUniswapRouter(address)":"bea9849e","setWNATIVE(address)":"b6fe9cc7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"get1inchSpotAgg\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBPS_BASE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBPS_FEE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBaluniAgentFactory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBaluniDCAVaultRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBaluniHyperPoolZap\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBaluniOracle\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBaluniPoolPeriphery\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBaluniPoolRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBaluniPoolZap\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBaluniRebalancer\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBaluniRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBaluniRouter\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBaluniSwapper\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBaluniYearnVaultRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMAX_BPS_FEE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getREBALANCE_THRESHOLD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getStaticOracle\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTreasury\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getUSDC\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getUniswapFactory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getUniswapQuoter\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getUniswapRouter\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getWNATIVE\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"__1inchSpotAgg\",\"type\":\"address\"}],\"name\":\"set1inchSpotAgg\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"__BPS_FEE\",\"type\":\"uint256\"}],\"name\":\"setBPS_FEE\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_baluniAgentFactory\",\"type\":\"address\"}],\"name\":\"setBaluniAgentFactory\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_baluniPoolRegistry\",\"type\":\"address\"}],\"name\":\"setBaluniDCAVaultRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_baluniHyperPoolZap\",\"type\":\"address\"}],\"name\":\"setBaluniHyperPoolZap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_baluniOracle\",\"type\":\"address\"}],\"name\":\"setBaluniOracle\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_baluniPoolPeriphery\",\"type\":\"address\"}],\"name\":\"setBaluniPoolPeriphery\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_baluniPoolRegistry\",\"type\":\"address\"}],\"name\":\"setBaluniPoolRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_baluniPoolZap\",\"type\":\"address\"}],\"name\":\"setBaluniPoolZap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_baluniRebalancer\",\"type\":\"address\"}],\"name\":\"setBaluniRebalancer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_baluniRegistry\",\"type\":\"address\"}],\"name\":\"setBaluniRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_baluniRouter\",\"type\":\"address\"}],\"name\":\"setBaluniRouter\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_baluniSwapper\",\"type\":\"address\"}],\"name\":\"setBaluniSwapper\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_baluniYearnVaultRegistry\",\"type\":\"address\"}],\"name\":\"setBaluniYearnVaultRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_REBALANCE_THRESHOLD\",\"type\":\"uint256\"}],\"name\":\"setREBALANCE_THRESHOLD\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_staticOracle\",\"type\":\"address\"}],\"name\":\"setStaticOracle\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_treasury\",\"type\":\"address\"}],\"name\":\"setTreasury\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_USDC\",\"type\":\"address\"}],\"name\":\"setUSDC\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_uniswapFactory\",\"type\":\"address\"}],\"name\":\"setUniswapFactory\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_uniswapQuoter\",\"type\":\"address\"}],\"name\":\"setUniswapQuoter\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_uniswapRouter\",\"type\":\"address\"}],\"name\":\"setUniswapRouter\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_WNATIVE\",\"type\":\"address\"}],\"name\":\"setWNATIVE\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for the BaluniV1Registry contract.\",\"kind\":\"dev\",\"methods\":{},\"title\":\"IBaluniV1Registry\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IBaluniV1Registry.sol\":\"IBaluniV1Registry\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":20000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"contracts/interfaces/IBaluniV1Registry.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\n\\r\\n/**\\r\\n * @title IBaluniV1Registry\\r\\n * @dev Interface for the BaluniV1Registry contract.\\r\\n */\\r\\ninterface IBaluniV1Registry {\\r\\n    function setUniswapFactory(address _uniswapFactory) external;\\r\\n\\r\\n    function setUniswapRouter(address _uniswapRouter) external;\\r\\n\\r\\n    function setUniswapQuoter(address _uniswapQuoter) external;\\r\\n\\r\\n    function setBaluniAgentFactory(address _baluniAgentFactory) external;\\r\\n\\r\\n    function setBaluniPoolPeriphery(address _baluniPoolPeriphery) external;\\r\\n\\r\\n    function setBaluniSwapper(address _baluniSwapper) external;\\r\\n\\r\\n    function setBaluniOracle(address _baluniOracle) external;\\r\\n\\r\\n    function setBaluniPoolRegistry(address _baluniPoolRegistry) external;\\r\\n\\r\\n    function setBaluniDCAVaultRegistry(address _baluniPoolRegistry) external;\\r\\n\\r\\n    function setBaluniRebalancer(address _baluniRebalancer) external;\\r\\n\\r\\n    function setBaluniRouter(address _baluniRouter) external;\\r\\n\\r\\n    function setBaluniRegistry(address _baluniRegistry) external;\\r\\n\\r\\n    function setWNATIVE(address _WNATIVE) external;\\r\\n\\r\\n    function setUSDC(address _USDC) external;\\r\\n\\r\\n    function setREBALANCE_THRESHOLD(uint256 _REBALANCE_THRESHOLD) external;\\r\\n\\r\\n    function setTreasury(address _treasury) external;\\r\\n\\r\\n    function set1inchSpotAgg(address __1inchSpotAgg) external;\\r\\n\\r\\n    function setBPS_FEE(uint256 __BPS_FEE) external;\\r\\n\\r\\n    function setBaluniYearnVaultRegistry(address _baluniYearnVaultRegistry) external;\\r\\n\\r\\n    function setBaluniPoolZap(address _baluniPoolZap) external;\\r\\n\\r\\n    function setBaluniHyperPoolZap(address _baluniHyperPoolZap) external;\\r\\n\\r\\n    function getUniswapQuoter() external view returns (address);\\r\\n\\r\\n    function getUniswapFactory() external view returns (address);\\r\\n\\r\\n    function getUniswapRouter() external view returns (address);\\r\\n\\r\\n    function getBaluniSwapper() external view returns (address);\\r\\n\\r\\n    function getBaluniOracle() external view returns (address);\\r\\n\\r\\n    function getBaluniAgentFactory() external view returns (address);\\r\\n\\r\\n    function getBaluniPoolPeriphery() external view returns (address);\\r\\n\\r\\n    function getBaluniDCAVaultRegistry() external view returns (address);\\r\\n\\r\\n    function getBaluniPoolRegistry() external view returns (address);\\r\\n\\r\\n    function getBaluniRebalancer() external view returns (address);\\r\\n\\r\\n    function getBaluniRouter() external view returns (address);\\r\\n\\r\\n    function getBaluniRegistry() external view returns (address);\\r\\n\\r\\n    function getWNATIVE() external view returns (address);\\r\\n\\r\\n    function getUSDC() external view returns (address);\\r\\n\\r\\n    function get1inchSpotAgg() external view returns (address);\\r\\n\\r\\n    function getBPS_FEE() external view returns (uint256);\\r\\n\\r\\n    function getMAX_BPS_FEE() external view returns (uint256);\\r\\n\\r\\n    function getBPS_BASE() external view returns (uint256);\\r\\n\\r\\n    function getREBALANCE_THRESHOLD() external view returns (uint256);\\r\\n\\r\\n    function getTreasury() external view returns (address);\\r\\n\\r\\n    function setStaticOracle(address _staticOracle) external;\\r\\n\\r\\n    function getStaticOracle() external view returns (address);\\r\\n\\r\\n    function getBaluniYearnVaultRegistry() external view returns (address);\\r\\n\\r\\n    function getBaluniPoolZap() external view returns (address);\\r\\n\\r\\n    function getBaluniHyperPoolZap() external view returns (address);\\r\\n}\\r\\n\",\"keccak256\":\"0x8a5269da114538f58ead83106d244cfbb01a4d6106694a90ffcca33ff1b56a5c\",\"license\":\"GNU AGPLv3\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/interfaces/IBaluniV1Swapper.sol":{"IBaluniV1Swapper":{"abi":[{"inputs":[{"internalType":"address","name":"token0","type":"address"},{"internalType":"address","name":"token1","type":"address"},{"internalType":"address","name":"token2","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"name":"multiHopSwap","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token0","type":"address"},{"internalType":"address","name":"token1","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"name":"singleSwap","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"multiHopSwap(address,address,address,uint256,address)":"5efaaebb","singleSwap(address,address,uint256,address)":"2d6bc8ea"}},"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token1\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token2\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"multiHopSwap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token1\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"singleSwap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IBaluniV1Swapper.sol\":\"IBaluniV1Swapper\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":20000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"contracts/interfaces/IBaluniV1Swapper.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\n\\r\\ninterface IBaluniV1Swapper {\\r\\n    function singleSwap(\\r\\n        address token0,\\r\\n        address token1,\\r\\n        uint256 amount,\\r\\n        address receiver\\r\\n    ) external returns (uint256 amountOut);\\r\\n    function multiHopSwap(\\r\\n        address token0,\\r\\n        address token1,\\r\\n        address token2,\\r\\n        uint256 amount,\\r\\n        address receiver\\r\\n    ) external returns (uint256 amountOut);\\r\\n}\\r\\n\",\"keccak256\":\"0x8113df3342115499d21149fa3fe70412cb6bdbf79766870f929b3845e1d2a0fe\",\"license\":\"GNU AGPLv3\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/interfaces/IBaluniV1YearnVault.sol":{"IBaluniV1YearnVault":{"abi":[{"inputs":[],"name":"baseAsset","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"interestEarned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastDeposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"quoteAsset","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"registry","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalValuation","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unitPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"yearnVault","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"devdoc":{"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"baseAsset()":"cdf456e1","buy()":"a6f2ae3a","deposit(uint256,address)":"6e553f65","interestEarned()":"374261ab","lastDeposit()":"36b77107","pause()":"8456cb59","quoteAsset()":"fdf262b7","registry()":"7b103999","totalValuation()":"295b9300","unitPrice()":"e73faa2d","unpause()":"3f4ba83a","withdraw(uint256,address)":"00f714ce","yearnVault()":"9db5df46"}},"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"baseAsset\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"buy\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"interestEarned\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastDeposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"quoteAsset\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"registry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalValuation\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unitPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"yearnVault\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IBaluniV1YearnVault.sol\":\"IBaluniV1YearnVault\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":20000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"contracts/interfaces/IBaluniV1YearnVault.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\n\\r\\ninterface IBaluniV1YearnVault {\\r\\n    function baseAsset() external view returns (address);\\r\\n    function yearnVault() external view returns (address);\\r\\n    function quoteAsset() external view returns (address);\\r\\n    function registry() external view returns (address);\\r\\n    function lastDeposit() external view returns (uint256);\\r\\n    function deposit(uint256 amount, address to) external;\\r\\n    function withdraw(uint256 shares, address to) external;\\r\\n    function buy() external;\\r\\n    function pause() external;\\r\\n    function unpause() external;\\r\\n    function totalValuation() external view returns (uint256);\\r\\n    function unitPrice() external view returns (uint256);\\r\\n    function interestEarned() external view returns (uint256);\\r\\n}\\r\\n\",\"keccak256\":\"0x1bc913632491c1953bdd30cc0a35acc2b8987b2309495e18bd8756f235b3f614\",\"license\":\"GNU AGPLv3\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/interfaces/IYearnVault.sol":{"IYearnVault":{"abi":[{"inputs":[],"name":"asset","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"name":"convertToAssets","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"name":"convertToShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"name":"deposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"maxDeposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"maxRedeem","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"name":"previewWithdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"name":"redeem","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalAssets","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"devdoc":{"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"asset()":"38d52e0f","balanceOf(address)":"70a08231","convertToAssets(uint256)":"07a2d13a","convertToShares(uint256)":"c6e6f592","deposit(uint256,address)":"6e553f65","maxDeposit(address)":"402d267d","maxRedeem(address)":"d905777e","previewWithdraw(uint256)":"0a28a477","redeem(uint256,address,address)":"ba087652","totalAssets()":"01e1d114"}},"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"asset\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"convertToAssets\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"convertToShares\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"deposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"maxDeposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"maxRedeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"previewWithdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"redeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalAssets\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IYearnVault.sol\":\"IYearnVault\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":20000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"contracts/interfaces/IYearnVault.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\r\\npragma solidity ^0.8.0;\\r\\n\\r\\ninterface IYearnVault {\\r\\n    function asset() external view returns (address);\\r\\n\\r\\n    function balanceOf(address owner) external view returns (uint256);\\r\\n\\r\\n    function maxDeposit(address receiver) external view returns (uint256);\\r\\n\\r\\n    function redeem(uint256 shares, address receiver, address owner) external returns (uint256);\\r\\n\\r\\n    function deposit(uint256 assets, address receiver) external returns (uint256);\\r\\n\\r\\n    function totalAssets() external view returns (uint256);\\r\\n\\r\\n    function convertToAssets(uint256 shares) external view returns (uint256);\\r\\n\\r\\n    function convertToShares(uint256 assets) external view returns (uint256);\\r\\n\\r\\n    function previewWithdraw(uint256 assets) external view returns (uint256);\\r\\n\\r\\n    function maxRedeem(address owner) external view returns (uint256);\\r\\n}\\r\\n\",\"keccak256\":\"0x32952c4cf75af24a48eb5ce8ca05358d527dba5532e6f19e4db12ef418b82ab8\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/vaults/BaluniV1YearnVault.sol":{"BaluniV1YearnVault":{"abi":[{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"AddressEmptyCode","type":"error"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"name":"ERC1967InvalidImplementation","type":"error"},{"inputs":[],"name":"ERC1967NonPayable","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientAllowance","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC20InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC20InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC20InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"ERC20InvalidSpender","type":"error"},{"inputs":[],"name":"EnforcedPause","type":"error"},{"inputs":[],"name":"ExpectedPause","type":"error"},{"inputs":[],"name":"FailedInnerCall","type":"error"},{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"NotInitializing","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"inputs":[],"name":"ReentrancyGuardReentrantCall","type":"error"},{"inputs":[],"name":"UUPSUnauthorizedCallContext","type":"error"},{"inputs":[{"internalType":"bytes32","name":"slot","type":"bytes32"}],"name":"UUPSUnsupportedProxiableUUID","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"interest","type":"uint256"}],"name":"Buy","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"inputs":[],"name":"UPGRADE_INTERFACE_VERSION","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"accumulatedAssetB","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"allTimeInterest","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseAsset","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"address","name":"_assetA","type":"address"},{"internalType":"address","name":"_yearnVaultAddress","type":"address"},{"internalType":"address","name":"_assetB","type":"address"},{"internalType":"address","name":"_registryAddress","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"interestEarned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastDeposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"quoteAsset","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"registry","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"address","name":"_assetA","type":"address"},{"internalType":"address","name":"_yearnVaultAddress","type":"address"},{"internalType":"address","name":"_assetB","type":"address"},{"internalType":"address","name":"_registryAddress","type":"address"},{"internalType":"uint64","name":"_version","type":"uint64"}],"name":"reinitialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalValuation","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unitPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"yearnVault","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"devdoc":{"errors":{"AddressEmptyCode(address)":[{"details":"There's no code at `target` (it is not a contract)."}],"ERC1967InvalidImplementation(address)":[{"details":"The `implementation` of the proxy is invalid."}],"ERC1967NonPayable()":[{"details":"An upgrade function sees `msg.value > 0` that may be lost."}],"ERC20InsufficientAllowance(address,uint256,uint256)":[{"details":"Indicates a failure with the `spender`’s `allowance`. Used in transfers.","params":{"allowance":"Amount of tokens a `spender` is allowed to operate with.","needed":"Minimum amount required to perform a transfer.","spender":"Address that may be allowed to operate on tokens without being their owner."}}],"ERC20InsufficientBalance(address,uint256,uint256)":[{"details":"Indicates an error related to the current `balance` of a `sender`. Used in transfers.","params":{"balance":"Current balance for the interacting account.","needed":"Minimum amount required to perform a transfer.","sender":"Address whose tokens are being transferred."}}],"ERC20InvalidApprover(address)":[{"details":"Indicates a failure with the `approver` of a token to be approved. Used in approvals.","params":{"approver":"Address initiating an approval operation."}}],"ERC20InvalidReceiver(address)":[{"details":"Indicates a failure with the token `receiver`. Used in transfers.","params":{"receiver":"Address to which tokens are being transferred."}}],"ERC20InvalidSender(address)":[{"details":"Indicates a failure with the token `sender`. Used in transfers.","params":{"sender":"Address whose tokens are being transferred."}}],"ERC20InvalidSpender(address)":[{"details":"Indicates a failure with the `spender` to be approved. Used in approvals.","params":{"spender":"Address that may be allowed to operate on tokens without being their owner."}}],"EnforcedPause()":[{"details":"The operation failed because the contract is paused."}],"ExpectedPause()":[{"details":"The operation failed because the contract is not paused."}],"FailedInnerCall()":[{"details":"A call to an address target failed. The target may have reverted."}],"InvalidInitialization()":[{"details":"The contract is already initialized."}],"NotInitializing()":[{"details":"The contract is not initializing."}],"OwnableInvalidOwner(address)":[{"details":"The owner is not a valid owner account. (eg. `address(0)`)"}],"OwnableUnauthorizedAccount(address)":[{"details":"The caller account is not authorized to perform an operation."}],"ReentrancyGuardReentrantCall()":[{"details":"Unauthorized reentrant call."}],"UUPSUnauthorizedCallContext()":[{"details":"The call is from an unauthorized context."}],"UUPSUnsupportedProxiableUUID(bytes32)":[{"details":"The storage `slot` is unsupported as a UUID."}]},"events":{"Approval(address,address,uint256)":{"details":"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance."},"Initialized(uint64)":{"details":"Triggered when the contract has been initialized or reinitialized."},"Paused(address)":{"details":"Emitted when the pause is triggered by `account`."},"Transfer(address,address,uint256)":{"details":"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero."},"Unpaused(address)":{"details":"Emitted when the pause is lifted by `account`."},"Upgraded(address)":{"details":"Emitted when the implementation is upgraded."}},"kind":"dev","methods":{"allowance(address,address)":{"details":"See {IERC20-allowance}."},"approve(address,uint256)":{"details":"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address."},"balanceOf(address)":{"details":"See {IERC20-balanceOf}."},"decimals()":{"details":"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}."},"name()":{"details":"Returns the name of the token."},"owner()":{"details":"Returns the address of the current owner."},"paused()":{"details":"Returns true if the contract is paused, and false otherwise."},"proxiableUUID()":{"details":"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"symbol()":{"details":"Returns the symbol of the token, usually a shorter version of the name."},"totalSupply()":{"details":"See {IERC20-totalSupply}."},"transfer(address,uint256)":{"details":"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`."},"transferFrom(address,address,uint256)":{"details":"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."},"upgradeToAndCall(address,bytes)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."}},"version":1},"evm":{"bytecode":{"functionDebugData":{"allocate_unbounded":{"entryPoint":67,"id":null,"parameterSlots":0,"returnSlots":1},"cleanup_uint160":{"entryPoint":177,"id":null,"parameterSlots":1,"returnSlots":1},"constructor_BaluniV1YearnVault":{"entryPoint":77,"id":null,"parameterSlots":0,"returnSlots":0},"constructor_ContextUpgradeable":{"entryPoint":167,"id":null,"parameterSlots":0,"returnSlots":0},"constructor_ERC20Upgradeable":{"entryPoint":117,"id":null,"parameterSlots":0,"returnSlots":0},"constructor_IBaluniV1YearnVault":{"entryPoint":87,"id":null,"parameterSlots":0,"returnSlots":0},"constructor_IERC20":{"entryPoint":147,"id":null,"parameterSlots":0,"returnSlots":0},"constructor_IERC20Errors":{"entryPoint":127,"id":null,"parameterSlots":0,"returnSlots":0},"constructor_IERC20Metadata":{"entryPoint":137,"id":null,"parameterSlots":0,"returnSlots":0},"constructor_OwnableUpgradeable":{"entryPoint":157,"id":null,"parameterSlots":0,"returnSlots":0},"constructor_PausableUpgradeable":{"entryPoint":97,"id":null,"parameterSlots":0,"returnSlots":0},"constructor_ReentrancyGuardUpgradeable":{"entryPoint":107,"id":null,"parameterSlots":0,"returnSlots":0},"constructor_UUPSUpgradeable":{"entryPoint":243,"id":null,"parameterSlots":0,"returnSlots":0},"convert_contract_UUPSUpgradeable_to_address":{"entryPoint":231,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_address":{"entryPoint":219,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_uint160":{"entryPoint":191,"id":null,"parameterSlots":1,"returnSlots":1},"identity":{"entryPoint":188,"id":null,"parameterSlots":1,"returnSlots":1},"revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb":{"entryPoint":73,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[],"linkReferences":{},"object":"60a06040523461003e5761001161004d565b610019610043565b616c7261010282396080518181816152fd01528181615382015261557d0152616c7290f35b610049565b60405190565b5f80fd5b610055610057565b565b61005f610061565b565b61006961006b565b565b610073610075565b565b61007d61007f565b565b610087610089565b565b610091610093565b565b61009b61009d565b565b6100a56100a7565b565b6100af6100f3565b565b60018060a01b031690565b90565b6100d36100ce6100d8926100b1565b6100bc565b6100b1565b90565b6100e4906100bf565b90565b6100f0906100db565b90565b6100fc306100e7565b60805256fe60806040526004361015610013575b610fdf565b61001d5f3561022b565b8062f714ce1461022657806306fdde0314610221578063095ea7b31461021c57806318160ddd1461021757806323b872dd14610212578063295b93001461020d578063313ce5671461020857806336b7710714610203578063374261ab146101fe5780633f4ba83a146101f95780634f1ef286146101f457806352d1902d146101ef5780635c975abb146101ea5780636560bc80146101e55780636e553f65146101e057806370a08231146101db578063715018a6146101d65780637b103999146101d15780638456cb59146101cc57806388696f62146101c75780638da5cb5b146101c257806395d89b41146101bd5780639db5df46146101b8578063a6f2ae3a146101b3578063a9059cbb146101ae578063ad3cb1cc146101a9578063cdf456e1146101a4578063dd62ed3e1461019f578063e56f2fe41461019a578063e73faa2d14610195578063f2fde38b14610190578063f7fde10f1461018b5763fdf262b70361000e57610faa565b610f66565b610f24565b610eef565b610eb5565b610deb565b610d89565b610d08565b610c5a565b610c27565b610bf2565b610bbd565b610b88565b610b4e565b6109cf565b61099a565b610945565b610910565b6108be565b610889565b610845565b610810565b6107c1565b61064f565b61061a565b6105e5565b610574565b610517565b6104e1565b610472565b61041a565b610391565b6102e3565b60e01c90565b60405190565b5f80fd5b5f80fd5b5f80fd5b90565b61024f81610243565b0361025657565b5f80fd5b9050359061026782610246565b565b73ffffffffffffffffffffffffffffffffffffffff1690565b61028b90610269565b90565b61029781610282565b0361029e57565b5f80fd5b905035906102af8261028e565b565b91906040838203126102d957806102cd6102d6925f860161025a565b936020016102a2565b90565b61023b565b5f0190565b34610312576102fc6102f63660046102b1565b906127e1565b610304610231565b8061030e816102de565b0390f35b610237565b5f91031261032157565b61023b565b5190565b60209181520190565b90825f9392825e0152565b601f801991011690565b6103676103706020936103759361035e81610326565b9384809361032a565b95869101610333565b61033e565b0190565b61038e9160208201915f818403910152610348565b90565b346103c1576103a1366004610317565b6103bd6103ac612922565b6103b4610231565b91829182610379565b0390f35b610237565b91906040838203126103ee57806103e26103eb925f86016102a2565b9360200161025a565b90565b61023b565b151590565b610401906103f3565b9052565b9190610418905f602085019401906103f8565b565b3461044b576104476104366104303660046103c6565b90612945565b61043e610231565b91829182610405565b0390f35b610237565b61045990610243565b9052565b9190610470905f60208501940190610450565b565b346104a257610482366004610317565b61049e61048d61298c565b610495610231565b9182918261045d565b0390f35b610237565b90916060828403126104dc576104d96104c2845f85016102a2565b936104d081602086016102a2565b9360400161025a565b90565b61023b565b346105125761050e6104fd6104f73660046104a7565b916129ab565b610505610231565b91829182610405565b0390f35b610237565b3461054757610527366004610317565b610543610532612a55565b61053a610231565b9182918261045d565b0390f35b610237565b60ff1690565b61055b9061054c565b9052565b9190610572905f60208501940190610552565b565b346105a457610584366004610317565b6105a061058f612f5f565b610597610231565b9182918261055f565b0390f35b610237565b1c90565b90565b6105c09060086105c593026105a9565b6105ad565b90565b906105d391546105b0565b90565b6105e260055f906105c8565b90565b34610615576105f5366004610317565b6106116106006105d6565b610608610231565b9182918261045d565b0390f35b610237565b3461064a5761062a366004610317565b610646610635612f75565b61063d610231565b9182918261045d565b0390f35b610237565b3461067d5761065f366004610317565b610667613100565b61066f610231565b80610679816102de565b0390f35b610237565b5f80fd5b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b906106c19061033e565b810190811067ffffffffffffffff8211176106db57604052565b61068a565b906106f36106ec610231565b92836106b7565b565b67ffffffffffffffff81116107135761070f60209161033e565b0190565b61068a565b90825f939282370152565b90929192610738610733826106f5565b6106e0565b938185526020850190828401116107545761075292610718565b565b610686565b9080601f830112156107775781602061077493359101610723565b90565b610682565b9190916040818403126107bc57610795835f83016102a2565b92602082013567ffffffffffffffff81116107b7576107b49201610759565b90565b61023f565b61023b565b6107d56107cf36600461077c565b90613133565b6107dd610231565b806107e7816102de565b0390f35b90565b6107f7906107eb565b9052565b919061080e905f602085019401906107ee565b565b3461084057610820366004610317565b61083c61082b6131ae565b610833610231565b918291826107fb565b0390f35b610237565b3461087557610855366004610317565b6108716108606131e8565b610868610231565b91829182610405565b0390f35b610237565b61088660065f906105c8565b90565b346108b957610899366004610317565b6108b56108a461087a565b6108ac610231565b9182918261045d565b0390f35b610237565b346108ed576108d76108d13660046102b1565b90613a8e565b6108df610231565b806108e9816102de565b0390f35b610237565b9060208282031261090b57610908915f016102a2565b90565b61023b565b346109405761093c61092b6109263660046108f2565b613abc565b610933610231565b9182918261045d565b0390f35b610237565b3461097357610955366004610317565b61095d613b30565b610965610231565b8061096f816102de565b0390f35b610237565b61098190610282565b9052565b9190610998905f60208501940190610978565b565b346109ca576109aa366004610317565b6109c66109b5613b3e565b6109bd610231565b91829182610985565b0390f35b610237565b346109fd576109df366004610317565b6109e7613b78565b6109ef610231565b806109f9816102de565b0390f35b610237565b67ffffffffffffffff8111610a2057610a1c60209161033e565b0190565b61068a565b90929192610a3a610a3582610a02565b6106e0565b93818552602085019082840111610a5657610a5492610718565b565b610686565b9080601f83011215610a7957816020610a7693359101610a25565b90565b610682565b67ffffffffffffffff1690565b610a9481610a7e565b03610a9b57565b5f80fd5b90503590610aac82610a8b565b565b60e081830312610b49575f81013567ffffffffffffffff8111610b445782610ad7918301610a5b565b92602082013567ffffffffffffffff8111610b3f5783610af8918401610a5b565b92610b0681604085016102a2565b92610b1482606083016102a2565b92610b3c610b2584608085016102a2565b93610b338160a086016102a2565b9360c001610a9f565b90565b61023f565b61023f565b61023b565b34610b8357610b6d610b61366004610aae565b95949094939193614144565b610b75610231565b80610b7f816102de565b0390f35b610237565b34610bb857610b98366004610317565b610bb4610ba3614155565b610bab610231565b91829182610985565b0390f35b610237565b34610bed57610bcd366004610317565b610be9610bd8614173565b610be0610231565b91829182610379565b0390f35b610237565b34610c2257610c02366004610317565b610c1e610c0d614192565b610c15610231565b91829182610985565b0390f35b610237565b34610c5557610c37366004610317565b610c3f6141e6565b610c47610231565b80610c51816102de565b0390f35b610237565b34610c8b57610c87610c76610c703660046103c6565b906141f0565b610c7e610231565b91829182610405565b0390f35b610237565b90610ca2610c9d83610a02565b6106e0565b918252565b5f7f352e302e30000000000000000000000000000000000000000000000000000000910152565b610cd86005610c90565b90610ce560208301610ca7565b565b610cef610cce565b90565b610cfa610ce7565b90565b610d05610cf2565b90565b34610d3857610d18366004610317565b610d34610d23610cfd565b610d2b610231565b91829182610379565b0390f35b610237565b73ffffffffffffffffffffffffffffffffffffffff1690565b610d66906008610d6b93026105a9565b610d3d565b90565b90610d799154610d56565b90565b610d865f80610d6e565b90565b34610db957610d99366004610317565b610db5610da4610d7c565b610dac610231565b91829182610985565b0390f35b610237565b9190604083820312610de65780610dda610de3925f86016102a2565b936020016102a2565b90565b61023b565b34610e1c57610e18610e07610e01366004610dbe565b90614228565b610e0f610231565b9182918261045d565b0390f35b610237565b909160c082840312610eb0575f82013567ffffffffffffffff8111610eab5783610e4c918401610a5b565b92602083013567ffffffffffffffff8111610ea65781610e6d918501610a5b565b92610e7b82604083016102a2565b92610ea3610e8c84606085016102a2565b93610e9a81608086016102a2565b9360a0016102a2565b90565b61023f565b61023f565b61023b565b34610eea57610ed4610ec8366004610e21565b9493909392919261453f565b610edc610231565b80610ee6816102de565b0390f35b610237565b34610f1f57610eff366004610317565b610f1b610f0a61456e565b610f12610231565b9182918261045d565b0390f35b610237565b34610f5257610f3c610f373660046108f2565b614785565b610f44610231565b80610f4e816102de565b0390f35b610237565b610f6360045f906105c8565b90565b34610f9657610f76366004610317565b610f92610f81610f57565b610f89610231565b9182918261045d565b0390f35b610237565b610fa760025f90610d6e565b90565b34610fda57610fba366004610317565b610fd6610fc5610f9b565b610fcd610231565b91829182610985565b0390f35b610237565b5f80fd5b90610ff591610ff06147bc565b610fff565b610ffd614868565b565b906110119161100c614885565b611bc9565b565b90565b90565b61102d61102861103292611013565b611016565b610243565b90565b5f7f536861726573206d7573742062652067726561746572207468616e207a65726f910152565b6110686020809261032a565b61107181611035565b0190565b61108a9060208101905f81830391015261105c565b90565b1561109457565b61109c610231565b7f08c379a0000000000000000000000000000000000000000000000000000000008152806110cc60048201611075565b0390fd5b5f7f496e73756666696369656e742062616c616e6365000000000000000000000000910152565b611104601460209261032a565b61110d816110d0565b0190565b6111269060208101905f8183039101526110f7565b90565b1561113057565b611138610231565b7f08c379a00000000000000000000000000000000000000000000000000000000081528061116860048201611111565b0390fd5b5f7f546f74616c20737570706c792063616e6e6f74206265207a65726f0000000000910152565b6111a0601b60209261032a565b6111a98161116c565b0190565b6111c29060208101905f818303910152611193565b90565b156111cc57565b6111d4610231565b7f08c379a000000000000000000000000000000000000000000000000000000000815280611204600482016111ad565b0390fd5b5f1c90565b73ffffffffffffffffffffffffffffffffffffffff1690565b61123261123791611208565b61120d565b90565b6112449054611226565b90565b61125b61125661126092610269565b611016565b610269565b90565b61126c90611247565b90565b61127890611263565b90565b61128490611247565b90565b6112909061127b565b90565b61129c90611263565b90565b60e01b90565b6112ae8161054c565b036112b557565b5f80fd5b905051906112c6826112a5565b565b906020828203126112e1576112de915f016112b9565b90565b61023b565b6112ee610231565b3d5f823e3d90fd5b61130261130791611208565b610d3d565b90565b61131490546112f6565b90565b61132090611263565b90565b9050519061133082610246565b565b9060208282031261134b57611348915f01611323565b90565b61023b565b61135990611247565b90565b61136590611350565b90565b61137190611263565b90565b90565b61138b61138661139092611374565b611016565b61054c565b90565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b6113cc6113d29161054c565b9161054c565b90039060ff82116113df57565b611393565b6113ed9061054c565b604d81116113fb57600a0a90565b611393565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b61143961143f91610243565b91610243565b90811561144a570490565b611400565b60207f206f766572666c6f770000000000000000000000000000000000000000000000917f596561726e5661756c742062616c616e6365207363616c696e6720776f756c645f8201520152565b6114a9602960409261032a565b6114b28161144f565b0190565b6114cb9060208101905f81830391015261149c565b90565b156114d557565b6114dd610231565b7f08c379a00000000000000000000000000000000000000000000000000000000081528061150d600482016114b6565b0390fd5b60207f666c6f7700000000000000000000000000000000000000000000000000000000917f51756f74652062616c616e6365207363616c696e6720776f756c64206f7665725f8201520152565b61156b602460409261032a565b61157481611511565b0190565b61158d9060208101905f81830391015261155e565b90565b1561159757565b61159f610231565b7f08c379a0000000000000000000000000000000000000000000000000000000008152806115cf60048201611578565b0390fd5b6115e26115e891939293610243565b92610243565b916115f4838202610243565b92818404149015171561160357565b611393565b60207f7700000000000000000000000000000000000000000000000000000000000000917f5368617265732063616c63756c6174696f6e20776f756c64206f766572666c6f5f8201520152565b611662602160409261032a565b61166b81611608565b0190565b6116849060208101905f818303910152611655565b90565b1561168e57565b611696610231565b7f08c379a0000000000000000000000000000000000000000000000000000000008152806116c66004820161166f565b0390fd5b60207f6c74000000000000000000000000000000000000000000000000000000000000917f496e73756666696369656e742061737365747320696e20596561726e205661755f8201520152565b611724602260409261032a565b61172d816116ca565b0190565b6117469060208101905f818303910152611717565b90565b1561175057565b611758610231565b7f08c379a00000000000000000000000000000000000000000000000000000000081528061178860048201611731565b0390fd5b6040906117b56117bc94969593966117ab60608401985f850190610450565b6020830190610978565b0190610978565b565b5f7f426173652062616c616e636520636865636b206661696c656400000000000000910152565b6117f2601960209261032a565b6117fb816117be565b0190565b6118149060208101905f8183039101526117e5565b90565b1561181e57565b611826610231565b7f08c379a000000000000000000000000000000000000000000000000000000000815280611856600482016117ff565b0390fd5b61186961186f91939293610243565b92610243565b820391821161187a57565b611393565b5f7f48616972637574206578636565647320616d6f756e7400000000000000000000910152565b6118b3601660209261032a565b6118bc8161187f565b0190565b6118d59060208101905f8183039101526118a6565b90565b156118df57565b6118e7610231565b7f08c379a000000000000000000000000000000000000000000000000000000000815280611917600482016118c0565b0390fd5b60207f7920686169726375740000000000000000000000000000000000000000000000917f5365636f6e6461727920686169726375742065786365656473207072696d61725f8201520152565b611975602960409261032a565b61197e8161191b565b0190565b6119979060208101905f818303910152611968565b90565b156119a157565b6119a9610231565b7f08c379a0000000000000000000000000000000000000000000000000000000008152806119d960048201611982565b0390fd5b73ffffffffffffffffffffffffffffffffffffffff1690565b611a02611a0791611208565b6119dd565b90565b611a1490546119f6565b90565b611a2090611263565b90565b90505190611a308261028e565b565b90602082820312611a4b57611a48915f01611a23565b90565b61023b565b611a59816103f3565b03611a6057565b5f80fd5b90505190611a7182611a50565b565b90602082820312611a8c57611a89915f01611a64565b90565b61023b565b916020611ab2929493611aab60408201965f830190610978565b0190610450565b565b5f7f4661696c656420746f207472616e736665722071756f74654173736574000000910152565b611ae8601d60209261032a565b611af181611ab4565b0190565b611b0a9060208101905f818303910152611adb565b90565b15611b1457565b611b1c610231565b7f08c379a000000000000000000000000000000000000000000000000000000000815280611b4c60048201611af5565b0390fd5b5f1b90565b90611b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff91611b50565b9181191691161790565b611b9e611b99611ba392610243565b611016565b610243565b90565b90565b90611bbe611bb9611bc592611b8a565b611ba6565b8254611b55565b9055565b611be581611bdf611bd95f611019565b91610243565b1161108d565b611c0a611bf133613abc565b611c03611bfd84610243565b91610243565b1015611129565b611c2d611c1561298c565b611c27611c215f611019565b91610243565b116111c5565b611c6a6020611c54611c4f611c4a611c45600161123a565b61126f565b611287565b611293565b63313ce56790611c62610231565b93849261129f565b82528180611c7a600482016102de565b03915afa9081156127dc575f916127ae575b5090611cc36020611cad611ca8611ca3600261130a565b611287565b611293565b63313ce56790611cbb610231565b93849261129f565b82528180611cd3600482016102de565b03915afa9081156127a9575f9161277b575b5090611d306020611cfe611cf9600161123a565b61126f565b6370a0823190611d25611d1030611317565b92611d19610231565b9586948593849361129f565b835260048301610985565b03915afa908115612776575f91612748575b5090611d956020611d63611d5e611d59600261130a565b61135c565b611368565b6370a0823190611d8a611d7530611317565b92611d7e610231565b9586948593849361129f565b835260048301610985565b03915afa908115612743575f91612715575b5093611df96020611dc7611dc2611dbd5f61130a565b61135c565b611368565b6370a0823190611dee611dd930611317565b92611de2610231565b9586948593849361129f565b835260048301610985565b03915afa908115612710575f916126e2575b5092807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60128490611e3c90611377565b90611e46916113c0565b611e4f906113e4565b611e589161142d565b611e6190610243565b90611e6b90610243565b1115611e76906114ce565b857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60128790611ea590611377565b90611eaf916113c0565b611eb8906113e4565b611ec19161142d565b611eca90610243565b90611ed490610243565b1115611edf90611590565b60128290611eec90611377565b90611ef6916113c0565b611eff906113e4565b611f08916115d3565b9460128590611f1690611377565b90611f20916113c0565b611f29906113e4565b611f32916115d3565b90827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff87611f5f9161142d565b611f6890610243565b90611f7290610243565b1115611f7d90611687565b827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83611fa99161142d565b611fb290610243565b90611fbc90610243565b1115611fc790611687565b8286611fd2916115d3565b611fda61298c565b611fe39161142d565b918390611fef916115d3565b611ff761298c565b6120009161142d565b92339061200c916148cf565b601261201790611377565b90612021916113c0565b61202a906113e4565b6120339161142d565b92601261203f90611377565b90612049916113c0565b612052906113e4565b61205b9161142d565b9282612067600161123a565b6120709061126f565b6307a2d13a61207d610231565b8094612089829361129f565b825260048201906120999161045d565b03815a93602094fa80156126dd576120bf6120c5916120cc945f916126af575b50610243565b91610243565b1115611749565b60206120e06120db600161123a565b61126f565b63ba08765293906121155f6120f430611317565b9661212061210130611317565b612109610231565b998a978896879561129f565b85526004850161178c565b03925af19182156126aa576121829261267e575b50602061215061214b6121465f61130a565b61135c565b611368565b6370a082319061217761216230611317565b9261216b610231565b9687948593849361129f565b835260048301610985565b03915afa8015612679576121ba925f9161264b575b506121b5816121ae6121a885610243565b91610243565b1015611817565b61185a565b806121cd6121c75f611019565b91610243565b11612330575b50806121e76121e15f611019565b91610243565b11612317575b50506122016121fc600161123a565b61126f565b6122506307a2d13a91602061221e612219600161123a565b61126f565b6370a082319061224561223030611317565b92612239610231565b9687948593849361129f565b835260048301610985565b03915afa9081156123125761228d936020935f936122df575b5061228290612276610231565b9586948593849361129f565b83526004830161045d565b03915afa80156122da576122aa915f916122ac575b506005611ba9565b565b6122cd915060203d81116122d3575b6122c581836106b7565b810190611332565b5f6122a2565b503d6122bb565b6112e6565b61228291935061230490853d811161230b575b6122fc81836106b7565b810190611332565b9290612269565b503d6122f2565b6112e6565b6123299161232491614bd1565b611b0d565b5f806121ed565b6123398161494e565b906123578261235061234a84610243565b91610243565b11156118d8565b61236281839061185a565b5061236c8261494e565b6123898161238261237c86610243565b91610243565b111561199a565b6123b660206123a061239b6003611a0a565b611a17565b6304cc7325906123ae610231565b93849261129f565b825281806123c6600482016102de565b03915afa908115612646575f91612618575b509161240760206123f16123ec6003611a0a565b611a17565b633b19e84a906123ff610231565b93849261129f565b82528180612417600482016102de565b03915afa908115612613575f916125e5575b5093602061244661244161243c5f61130a565b61135c565b611368565b9263a9059cbb936124755f61245d8c94879061185a565b96612480612469610231565b9889968795869461129f565b845260048401611a91565b03925af19182156125e0576020926125b5575b506124ad6124a86124a35f61130a565b61135c565b611368565b6124da5f6124c263a9059cbb9794879061185a565b966124e56124ce610231565b9889968795869461129f565b845260048401611a91565b03925af19182156125b057602092612585575b5061251261250d6125085f61130a565b61135c565b611368565b6125355f63a9059cbb959395612540612529610231565b9788968795869461129f565b845260048401611a91565b03925af1801561258057612554575b6121d3565b6125749060203d8111612579575b61256c81836106b7565b810190611a73565b61254f565b503d612562565b6112e6565b6125a490833d81116125a9575b61259c81836106b7565b810190611a73565b6124f8565b503d612592565b6112e6565b6125d490833d81116125d9575b6125cc81836106b7565b810190611a73565b612493565b503d6125c2565b6112e6565b612606915060203d811161260c575b6125fe81836106b7565b810190611a32565b5f612429565b503d6125f4565b6112e6565b612639915060203d811161263f575b61263181836106b7565b810190611a32565b5f6123d8565b503d612627565b6112e6565b61266c915060203d8111612672575b61266481836106b7565b810190611332565b5f612197565b503d61265a565b6112e6565b61269e9060203d81116126a3575b61269681836106b7565b810190611332565b612134565b503d61268c565b6112e6565b6126d0915060203d81116126d6575b6126c881836106b7565b810190611332565b5f6120b9565b503d6126be565b6112e6565b612703915060203d8111612709575b6126fb81836106b7565b810190611332565b5f611e0b565b503d6126f1565b6112e6565b612736915060203d811161273c575b61272e81836106b7565b810190611332565b5f611da7565b503d612724565b6112e6565b612769915060203d811161276f575b61276181836106b7565b810190611332565b5f611d42565b503d612757565b6112e6565b61279c915060203d81116127a2575b61279481836106b7565b8101906112c8565b5f611ce5565b503d61278a565b6112e6565b6127cf915060203d81116127d5575b6127c781836106b7565b8101906112c8565b5f611c8c565b503d6127bd565b6112e6565b906127eb91610fe3565b565b606090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b906001600283049216801561283f575b602083101461283a57565b6127f2565b91607f169161282f565b60209181520190565b5f5260205f2090565b905f929180549061287561286e8361281f565b8094612849565b916001811690815f146128cc5750600114612890575b505050565b61289d9192939450612852565b915f925b8184106128b457505001905f808061288b565b600181602092959395548486015201910192906128a1565b92949550505060ff19168252151560200201905f808061288b565b906128f19161285b565b90565b9061291461290d92612904610231565b938480926128e7565b03836106b7565b565b61291f906128f4565b90565b61292a6127ed565b5061293e6003612938614fa0565b01612916565b90565b5f90565b61296291612951612941565b5061295a614fc4565b919091614fd1565b600190565b5f90565b61297761297c91611208565b6105ad565b90565b612989905461296b565b90565b612994612967565b506129a860026129a2614fa0565b0161297f565b90565b916129d5926129b8612941565b506129cd6129c4614fc4565b82908491615021565b9190916150ec565b600190565b6129e390611247565b90565b6129ef906129da565b90565b6129fb90611263565b90565b604090612a27612a2e9496959396612a1d60608401985f850190610978565b6020830190610978565b0190610450565b565b612a3f612a4591939293610243565b92610243565b8201809211612a5057565b611393565b612a5d612967565b50612a8b6020612a75612a706003611a0a565b611a17565b63bb3ba04c90612a83610231565b93849261129f565b82528180612a9b600482016102de565b03915afa8015612f5657612ab6915f91612f28575b506129e6565b612ae36020612acd612ac86003611a0a565b611a17565b631bf01e9b90612adb610231565b93849261129f565b82528180612af3600482016102de565b03915afa908115612f23575f91612ef5575b5090612b105f611019565b612b596020612b27612b22600161123a565b61126f565b6370a0823190612b4e612b3930611317565b92612b42610231565b9586948593849361129f565b835260048301610985565b03915afa908115612ef057612bac916020915f91612ec3575b50612b85612b80600161123a565b61126f565b612ba16307a2d13a612b95610231565b9586948593849361129f565b83526004830161045d565b03915afa908115612ebe575f91612e90575b50612c106020612bde612bd9612bd4600261130a565b61135c565b611368565b6370a0823190612c05612bf030611317565b92612bf9610231565b9586948593849361129f565b835260048301610985565b03915afa908115612e8b575f91612e5d575b50612c2c5f61130a565b612c3e612c3887610282565b91610282565b03612dc1575b6020612c4f856129f2565b63248391ff90612c84612c62600261130a565b92612c8f612c6f5f61130a565b96612c78610231565b9788968795869561129f565b8552600485016129fe565b03915afa8015612dbc57612cb393612cae925f92612d8c575b50612a30565b612a30565b91612cbc612f75565b91612cc65f61130a565b612cd8612cd284610282565b91610282565b03612cee575b505090612ceb9190612a30565b90565b612cf96020916129f2565b9163248391ff92612d26612d0c5f61130a565b9294612d3187612d1a610231565b9788968795869561129f565b8552600485016129fe565b03915afa8015612d8757612ceb93612d50925f92612d57575b50612a30565b915f612cde565b612d7991925060203d8111612d80575b612d7181836106b7565b810190611332565b905f612d4a565b503d612d67565b6112e6565b612dae91925060203d8111612db5575b612da681836106b7565b810190611332565b905f612ca8565b503d612d9c565b6112e6565b91612dcb846129f2565b90602063248391ff92612ddd5f61130a565b90612dfb8995612e0688612def610231565b9889968795869561129f565b8552600485016129fe565b03915afa908115612e5857612e22925f92612e28575b50612a30565b91612c44565b612e4a91925060203d8111612e51575b612e4281836106b7565b810190611332565b905f612e1c565b503d612e38565b6112e6565b612e7e915060203d8111612e84575b612e7681836106b7565b810190611332565b5f612c22565b503d612e6c565b6112e6565b612eb1915060203d8111612eb7575b612ea981836106b7565b810190611332565b5f612bbe565b503d612e9f565b6112e6565b612ee39150823d8111612ee9575b612edb81836106b7565b810190611332565b5f612b72565b503d612ed1565b6112e6565b612f16915060203d8111612f1c575b612f0e81836106b7565b810190611a32565b5f612b05565b503d612f04565b6112e6565b612f49915060203d8111612f4f575b612f4181836106b7565b810190611a32565b5f612ab0565b503d612f37565b6112e6565b5f90565b612f67612f5b565b50612f726012611377565b90565b612f7d612967565b50612f90612f8b600161123a565b61126f565b612fdf6307a2d13a916020612fad612fa8600161123a565b61126f565b6370a0823190612fd4612fbf30611317565b92612fc8610231565b9687948593849361129f565b835260048301610985565b03915afa9081156130df5761301c936020935f936130ac575b5061301190613005610231565b9586948593849361129f565b83526004830161045d565b03915afa9081156130a7575f91613079575b508061304b613045613040600561297f565b610243565b91610243565b115f1461306a5761306690613060600561297f565b9061185a565b5b90565b506130745f611019565b613067565b61309a915060203d81116130a0575b61309281836106b7565b810190611332565b5f61302e565b503d613088565b6112e6565b6130119193506130d190853d81116130d8575b6130c981836106b7565b810190611332565b9290612ff8565b503d6130bf565b6112e6565b6130ec6151c9565b6130f46130f6565b565b6130fe6152d6565b565b6131086130e4565b565b9061311c916131176152ec565b61311e565b565b906131319161312c816153be565b61542e565b565b9061313d9161310a565b565b5f90565b6131549061314f61556c565b6131a2565b90565b90565b61316e61316961317392613157565b611b50565b6107eb565b90565b61319f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61315a565b90565b506131ab613176565b90565b6131be6131b961313f565b613143565b90565b60ff1690565b6131d36131d891611208565b6131c1565b90565b6131e590546131c7565b90565b6131f0612941565b506132035f6131fd6155ea565b016131db565b90565b90613218916132136147bc565b613222565b613220614868565b565b906132349161322f614885565b6132f4565b565b5f7f416d6f756e74206d7573742062652067726561746572207468616e207a65726f910152565b6132696020809261032a565b61327281613236565b0190565b61328b9060208101905f81830391015261325d565b90565b1561329557565b61329d610231565b7f08c379a0000000000000000000000000000000000000000000000000000000008152806132cd60048201613276565b0390fd5b9160206132f29294936132eb60408201965f830190610450565b0190610978565b565b6133108161330a6133045f611019565b91610243565b1161328e565b61331861562a565b61333161332c6133275f61130a565b61135c565b611368565b60206323b872dd9133906133615f61334830611317565b9561336c88613355610231565b9889978896879561129f565b8552600485016129fe565b03925af18015613a8957613a5d575b506133a9602061339361338e6003611a0a565b611a17565b6304cc7325906133a1610231565b93849261129f565b825281806133b9600482016102de565b03915afa908115613a58575f91613a2a575b506133f960206133e36133de6003611a0a565b611a17565b633b19e84a906133f1610231565b93849261129f565b82528180613409600482016102de565b03915afa908115613a25575f916139f7575b50916134268161494e565b916134308361494e565b602061344b6134466134415f61130a565b61135c565b611368565b63a9059cbb93906134795f61346189879061185a565b9661348461346d610231565b9889968795869461129f565b845260048401611a91565b03925af19182156139f2576020926139c7575b506134b16134ac6134a75f61130a565b61135c565b611368565b6134d45f63a9059cbb9793976134df6134c8610231565b998a968795869461129f565b845260048401611a91565b03925af19283156139c2576134f993613996575b5061185a565b9061351361350e6135095f61130a565b61135c565b611368565b602063095ea7b39161352d613528600161123a565b61126f565b9061354b5f879561355661353f610231565b9788968795869461129f565b845260048401611a91565b03925af1801561399157613965575b50613578613573600161123a565b61126f565b916020636e553f659382906135a85f61359030611317565b976135b361359c610231565b998a968795869461129f565b8452600484016132d1565b03925af1928315613960576135f993613934575b5060206135e36135de6135d95f61130a565b611287565b611293565b63313ce567906135f1610231565b95869261129f565b82528180613609600482016102de565b03915afa801561392f57613659935f91613901575b50602061364361363e613639613634600161123a565b61126f565b611287565b611293565b63313ce56790613651610231565b96879261129f565b82528180613669600482016102de565b03915afa80156138fc576136d36136de936136d8926136e4975f916138ce575b50938061369e6136988761054c565b9161054c565b115f146138ad576136bc6136b76136c2939287906113c0565b6113e4565b9061142d565b5b926136ce6012611377565b6113c0565b6113e4565b906115d3565b9061590e565b6136f66136f1600161123a565b61126f565b6137456307a2d13a91602061371361370e600161123a565b61126f565b6370a082319061373a61372530611317565b9261372e610231565b9687948593849361129f565b835260048301610985565b03915afa9081156138a857613782936020935f93613875575b506137779061376b610231565b9586948593849361129f565b83526004830161045d565b03915afa80156138705761379f915f91613842575b506005611ba9565b6137f060206137be6137b96137b4600261130a565b61135c565b611368565b6370a08231906137e56137d030611317565b926137d9610231565b9586948593849361129f565b835260048301610985565b03915afa801561383d5761380d915f9161380f575b506004611ba9565b565b613830915060203d8111613836575b61382881836106b7565b810190611332565b5f613805565b503d61381e565b6112e6565b613863915060203d8111613869575b61385b81836106b7565b810190611332565b5f613797565b503d613851565b6112e6565b61377791935061389a90853d81116138a1575b61389281836106b7565b810190611332565b929061375e565b503d613888565b6112e6565b6138c36138be6138c99392876113c0565b6113e4565b906115d3565b6136c3565b6138ef915060203d81116138f5575b6138e781836106b7565b8101906112c8565b5f613689565b503d6138dd565b6112e6565b613922915060203d8111613928575b61391a81836106b7565b8101906112c8565b5f61361e565b503d613910565b6112e6565b6139549060203d8111613959575b61394c81836106b7565b810190611332565b6135c7565b503d613942565b6112e6565b6139859060203d811161398a575b61397d81836106b7565b810190611a73565b613565565b503d613973565b6112e6565b6139b69060203d81116139bb575b6139ae81836106b7565b810190611a73565b6134f3565b503d6139a4565b6112e6565b6139e690833d81116139eb575b6139de81836106b7565b810190611a73565b613497565b503d6139d4565b6112e6565b613a18915060203d8111613a1e575b613a1081836106b7565b810190611a32565b5f61341b565b503d613a06565b6112e6565b613a4b915060203d8111613a51575b613a4381836106b7565b810190611a32565b5f6133cb565b503d613a39565b6112e6565b613a7d9060203d8111613a82575b613a7581836106b7565b810190611a73565b61337b565b503d613a6b565b6112e6565b90613a9891613206565b565b613aa390611263565b90565b90613ab090613a9a565b5f5260205260405f2090565b613adb613ae091613acb612967565b505f613ad5614fa0565b01613aa6565b61297f565b90565b613aeb6151c9565b613af3613b1d565b565b613b09613b04613b0e92611013565b611016565b610269565b90565b613b1a90613af5565b90565b613b2e613b295f613b11565b61598c565b565b613b38613ae3565b565b5f90565b613b46613b3a565b50613b59613b546003611a0a565b611a17565b90565b613b646151c9565b613b6c613b6e565b565b613b76615a62565b565b613b80613b5c565b565b60401c90565b613b94613b9991613b82565b6131c1565b90565b613ba69054613b88565b90565b67ffffffffffffffff1690565b613bc2613bc791611208565b613ba9565b90565b613bd49054613bb6565b90565b90613bea67ffffffffffffffff91611b50565b9181191691161790565b613c08613c03613c0d92610a7e565b611016565b610a7e565b90565b90565b90613c28613c23613c2f92613bf4565b613c10565b8254613bd7565b9055565b60401b90565b90613c4d68ff000000000000000091613c33565b9181191691161790565b613c60906103f3565b90565b90565b90613c7b613c76613c8292613c57565b613c63565b8254613c39565b9055565b613c8f90610a7e565b9052565b9190613ca6905f60208501940190613c86565b565b929591939490948296613cb9615a6c565b95613cc55f8801613b9c565b8015613d76575b613d3a57613cff97613cf696613ce48b5f8b01613c13565b613cf160015f8b01613c66565b614049565b5f809101613c66565b613d357fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d291613d2c610231565b91829182613c93565b0390a1565b613d42610231565b7ff92ee8a900000000000000000000000000000000000000000000000000000000815280613d72600482016102de565b0390fd5b50613d825f8801613bca565b613d94613d8e8b610a7e565b91610a7e565b1015613ccc565b90613dba73ffffffffffffffffffffffffffffffffffffffff91611b50565b9181191691161790565b90565b90613ddc613dd7613de392613a9a565b613dc4565b8254613d9b565b9055565b613df090611247565b90565b613dfc90613de7565b90565b613e0890613de7565b90565b90565b90613e23613e1e613e2a92613dff565b613e0b565b8254613d9b565b9055565b613e3790611247565b90565b613e4390613e2e565b90565b613e4f90613e2e565b90565b90565b90613e6a613e65613e7192613e46565b613e52565b8254613d9b565b9055565b5f7f496e76616c696420617373657441206164647265737300000000000000000000910152565b613ea9601660209261032a565b613eb281613e75565b0190565b613ecb9060208101905f818303910152613e9c565b90565b15613ed557565b613edd610231565b7f08c379a000000000000000000000000000000000000000000000000000000000815280613f0d60048201613eb6565b0390fd5b5f7f496e76616c696420596561726e205661756c7420616464726573730000000000910152565b613f45601b60209261032a565b613f4e81613f11565b0190565b613f679060208101905f818303910152613f38565b90565b15613f7157565b613f79610231565b7f08c379a000000000000000000000000000000000000000000000000000000000815280613fa960048201613f52565b0390fd5b5f7f496e76616c696420617373657442206164647265737300000000000000000000910152565b613fe1601660209261032a565b613fea81613fad565b0190565b6140039060208101905f818303910152613fd4565b90565b1561400d57565b614015610231565b7f08c379a00000000000000000000000000000000000000000000000000000000081528061404560048201613fee565b0390fd5b6140b196506140a5936140926140aa97969461407461409e956140979561406f33615aae565b615ad9565b61407c615aef565b614084615b15565b61408c615b3b565b5f613dc7565b613df3565b6001613e0e565b6002613dc7565b613e3a565b6003613e55565b6140de6140bd5f61130a565b6140d76140d16140cc5f613b11565b610282565b91610282565b1415613ece565b6141146140f36140ee600161123a565b61126f565b61410d6141076141025f613b11565b610282565b91610282565b1415613f6a565b614142614121600261130a565b61413b6141356141305f613b11565b610282565b91610282565b1415614006565b565b90614153969594939291613ca8565b565b61415d613b3a565b506141705f61416a615b45565b0161130a565b90565b61417b6127ed565b5061418f6004614189614fa0565b01612916565b90565b61419a613b3a565b506141ad6141a8600161123a565b61126f565b90565b6141b86147bc565b6141c06141ca565b6141c8614868565b565b6141d2614885565b6141da6141dc565b565b6141e4615d4c565b565b6141ee6141b0565b565b61420d916141fc612941565b50614205614fc4565b9190916150ec565b600190565b9061421c90613a9a565b5f5260205260405f2090565b6142569161424c6142519261423b612967565b506001614246614fa0565b01614212565b613aa6565b61297f565b90565b61426d61426861427292611013565b611016565b610a7e565b90565b90565b61428c61428761429192614275565b611016565b610a7e565b90565b61429d90611263565b90565b6142a990614278565b9052565b91906142c0905f602085019401906142a0565b565b929491949390936142d1615a6c565b956142e66142e05f8901613b9c565b156103f3565b956142f25f8901613bca565b806143056142ff5f614259565b91610a7e565b148061443f575b9061432061431a6001614278565b91610a7e565b1480614417575b6143329091156103f3565b9081614406575b506143ca576143629561435761434f6001614278565b5f8b01613c13565b876143b8575b614446565b61436a575b50565b614377905f809101613c66565b60016143af7fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2916143a6610231565b918291826142ad565b0390a15f614367565b6143c560015f8b01613c66565b61435d565b6143d2610231565b7ff92ee8a900000000000000000000000000000000000000000000000000000000815280614402600482016102de565b0390fd5b6144119150156103f3565b5f614339565b5061433261442430614294565b3b6144376144315f611019565b91610243565b149050614327565b508761430c565b6144926144ac969461448d6144a09561446f6144a599966144999661446a33615aae565b615ad9565b614477615aef565b61447f615b15565b614487615b3b565b5f613dc7565b613df3565b6001613e0e565b6002613dc7565b613e3a565b6003613e55565b6144d96144b85f61130a565b6144d26144cc6144c75f613b11565b610282565b91610282565b1415613ece565b61450f6144ee6144e9600161123a565b61126f565b6145086145026144fd5f613b11565b610282565b91610282565b1415613f6a565b61453d61451c600261130a565b61453661453061452b5f613b11565b610282565b91610282565b1415614006565b565b9061454d95949392916142c2565b565b90565b61456661456161456b9261454f565b611016565b610243565b90565b614576612967565b5061457f61298c565b61459161458b5f611019565b91610243565b146146f4576145c360206145ad6145a86003611a0a565b611a17565b631bf01e9b906145bb610231565b93849261129f565b825281806145d3600482016102de565b03915afa9081156146ef576145fd6145f8614613936020935f916146c2575b50611287565b611293565b63313ce5679061460b610231565b93849261129f565b82528180614623600482016102de565b03915afa80156146bd5761466761465a61465561467e9361468c955f9161468f575b506146506012611377565b6113c0565b6113e4565b614662612a55565b6115d3565b614678670de0b6b3a7640000614552565b906115d3565b61468661298c565b9061142d565b90565b6146b0915060203d81116146b6575b6146a881836106b7565b8101906112c8565b5f614645565b503d61469e565b6112e6565b6146e29150843d81116146e8575b6146da81836106b7565b810190611a32565b5f6145f2565b503d6146d0565b6112e6565b6146fd5f611019565b90565b6147119061470c6151c9565b614713565b565b8061472e6147286147235f613b11565b610282565b91610282565b1461473e5761473c9061598c565b565b61478161474a5f613b11565b614752610231565b9182917f1e4fbdf700000000000000000000000000000000000000000000000000000000835260048301610985565b0390fd5b61478e90614700565b565b90565b6147a76147a26147ac92614790565b611016565b610243565b90565b6147b96002614793565b90565b6147c4616208565b6147cf5f820161297f565b6147e86147e26147dd6147af565b610243565b91610243565b1461480357614801905f6147fa6147af565b9101611ba9565b565b61480b610231565b7f3ee5aeb50000000000000000000000000000000000000000000000000000000081528061483b600482016102de565b0390fd5b61485361484e61485892614275565b611016565b610243565b90565b614865600161483f565b90565b614883614873616208565b5f61487c61485b565b9101611ba9565b565b61488d6131e8565b61489357565b61489b610231565b7fd93c0665000000000000000000000000000000000000000000000000000000008152806148cb600482016102de565b0390fd5b90816148eb6148e56148e05f613b11565b610282565b91610282565b146149075761490591906148fe5f613b11565b909161623a565b565b61494a6149135f613b11565b61491b610231565b9182917f96c6fd1e00000000000000000000000000000000000000000000000000000000835260048301610985565b0390fd5b614956612967565b50614984602061496e6149696003611a0a565b611a17565b6385462d6f9061497c610231565b93849261129f565b82528180614994600482016102de565b03915afa908115614a6f575f91614a41575b50906149d560206149bf6149ba6003611a0a565b611a17565b634f4608a2906149cd610231565b93849261129f565b825281806149e5600482016102de565b03915afa928315614a3c57614a0b93614a06925f91614a0e575b50926115d3565b61142d565b90565b614a2f915060203d8111614a35575b614a2781836106b7565b810190611332565b5f6149ff565b503d614a1d565b6112e6565b614a62915060203d8111614a68575b614a5a81836106b7565b810190611332565b5f6149a6565b503d614a50565b6112e6565b5f7f496e73756666696369656e742071756f74652061737365742062616c616e6365910152565b614aa76020809261032a565b614ab081614a74565b0190565b614ac99060208101905f818303910152614a9b565b90565b15614ad357565b614adb610231565b7f08c379a000000000000000000000000000000000000000000000000000000000815280614b0b60048201614ab4565b0390fd5b60207f7400000000000000000000000000000000000000000000000000000000000000917f486169726375742065786365656473207769746864726177616c20616d6f756e5f8201520152565b614b69602160409261032a565b614b7281614b0f565b0190565b614b8b9060208101905f818303910152614b5c565b90565b15614b9557565b614b9d610231565b7f08c379a000000000000000000000000000000000000000000000000000000000815280614bcd60048201614b76565b0390fd5b614bd9612941565b50614c2c816020614bfa614bf5614bf0600261130a565b61135c565b611368565b6370a0823190614c21614c0c30611317565b92614c15610231565b9687948593849361129f565b835260048301610985565b03915afa8015614f9b57614c4e614c5491614c5b945f91614f6d575b50610243565b91610243565b1115614acc565b614c8c614c678261494e565b91614c8583614c7e614c7884610243565b91610243565b1115614b8e565b829061185a565b91614c968261494e565b90614cb482614cad614ca786610243565b91610243565b111561199a565b614ce16020614ccb614cc66003611a0a565b611a17565b6304cc732590614cd9610231565b93849261129f565b82528180614cf1600482016102de565b03915afa908115614f68575f91614f3a575b5092614d326020614d1c614d176003611a0a565b611a17565b633b19e84a90614d2a610231565b93849261129f565b82528180614d42600482016102de565b03915afa8015614f35576020915f91614f08575b5095614d72614d6d614d68600261130a565b61135c565b611368565b614d955f63a9059cbb969396614da0614d89610231565b9889968795869461129f565b845260048401611a91565b03925af1918215614f0357602092614ed8575b50614dce614dc9614dc4600261130a565b61135c565b611368565b614dfb5f614de363a9059cbb9794879061185a565b96614e06614def610231565b9889968795869461129f565b845260048401611a91565b03925af1918215614ed357602092614ea8575b50614e34614e2f614e2a600261130a565b61135c565b611368565b614e575f63a9059cbb959395614e62614e4b610231565b9788968795869461129f565b845260048401611a91565b03925af18015614ea357614e77575b50600190565b614e979060203d8111614e9c575b614e8f81836106b7565b810190611a73565b614e71565b503d614e85565b6112e6565b614ec790833d8111614ecc575b614ebf81836106b7565b810190611a73565b614e19565b503d614eb5565b6112e6565b614ef790833d8111614efc575b614eef81836106b7565b810190611a73565b614db3565b503d614ee5565b6112e6565b614f289150823d8111614f2e575b614f2081836106b7565b810190611a32565b5f614d56565b503d614f16565b6112e6565b614f5b915060203d8111614f61575b614f5381836106b7565b810190611a32565b5f614d03565b503d614f49565b6112e6565b614f8e915060203d8111614f94575b614f8681836106b7565b810190611332565b5f614c48565b503d614f7c565b6112e6565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0090565b614fcc613b3a565b503390565b91614fdf92916001926163e0565b565b60409061500a615011949695939661500060608401985f850190610978565b6020830190610450565b0190610450565b565b9061501e9103610243565b90565b92919261502f818390614228565b908161506361505d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610243565b91610243565b03615070575b5050509050565b8161508361507d87610243565b91610243565b106150a9576150a09394615098919392615013565b905f926163e0565b805f8080615069565b506150e8849291926150b9610231565b9384937ffb8f41b200000000000000000000000000000000000000000000000000000000855260048501614fe1565b0390fd5b91826151086151026150fd5f613b11565b610282565b91610282565b14615182578161512861512261511d5f613b11565b610282565b91610282565b1461513b576151399291909161623a565b565b61517e6151475f613b11565b61514f610231565b9182917fec442f0500000000000000000000000000000000000000000000000000000000835260048301610985565b0390fd5b6151c561518e5f613b11565b615196610231565b9182917f96c6fd1e00000000000000000000000000000000000000000000000000000000835260048301610985565b0390fd5b6151d1614155565b6151ea6151e46151df614fc4565b610282565b91610282565b036151f157565b6152336151fc614fc4565b615204610231565b9182917f118cdaa700000000000000000000000000000000000000000000000000000000835260048301610985565b0390fd5b61523f61653a565b61524761527f565b565b9061525560ff91611b50565b9181191691161790565b9061527461526f61527b92613c57565b613c63565b8254615249565b9055565b61529361528a6155ea565b5f80910161525f565b61529b614fc4565b6152d17f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa916152c8610231565b91829182610985565b0390a1565b6152de615237565b565b6152e990611263565b90565b6152f5306152e0565b6153276153217f0000000000000000000000000000000000000000000000000000000000000000610282565b91610282565b148015615371575b61533557565b61533d610231565b7fe07c8dba0000000000000000000000000000000000000000000000000000000081528061536d600482016102de565b0390fd5b5061537a61658d565b6153ac6153a67f0000000000000000000000000000000000000000000000000000000000000000610282565b91610282565b141561532f565b506153bc6151c9565b565b6153c7906153b3565b565b6153d290611247565b90565b6153de906153c9565b90565b6153ea90611263565b90565b6153f6816107eb565b036153fd57565b5f80fd5b9050519061540e826153ed565b565b9060208282031261542957615426915f01615401565b90565b61023b565b919061545c6020615446615441866153d5565b6153e1565b6352d1902d90615454610231565b93849261129f565b8252818061546c600482016102de565b03915afa80915f9261553c575b50155f146154cd57505090600161548e57505b565b6154c99061549a610231565b9182917f4c9c8ce300000000000000000000000000000000000000000000000000000000835260048301610985565b0390fd5b92836154e86154e26154dd613176565b6107eb565b916107eb565b036154fd576154f89293506165b7565b61548c565b61553884615509610231565b9182917faa1d49a4000000000000000000000000000000000000000000000000000000008352600483016107fb565b0390fd5b61555e91925060203d8111615565575b61555681836106b7565b810190615410565b905f615479565b503d61554c565b615575306152e0565b6155a76155a17f0000000000000000000000000000000000000000000000000000000000000000610282565b91610282565b036155ae57565b6155b6610231565b7fe07c8dba000000000000000000000000000000000000000000000000000000008152806155e6600482016102de565b0390fd5b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330090565b61562261561d61562792614790565b611016565b61054c565b90565b61563c615637600161123a565b61126f565b61568b6307a2d13a916020615659615654600161123a565b61126f565b6370a082319061568061566b30611317565b92615674610231565b9687948593849361129f565b835260048301610985565b03915afa908115615909576156c8936020935f936158d6575b506156bd906156b1610231565b9586948593849361129f565b83526004830161045d565b03915afa9081156158d1575f916158a3575b50806156f76156f16156ec600561297f565b610243565b91610243565b115f14615894576157129061570c600561297f565b9061185a565b5b615747602061573161572c6157275f61130a565b611287565b611293565b63313ce5679061573f610231565b93849261129f565b82528180615757600482016102de565b03915afa801561588f576157a06157a5916157ab935f91615861575b5061579b61579561579060019361578a600261560e565b906113c0565b6113e4565b9161483f565b6115d3565b610243565b91610243565b11615854575b61580260206157d06157cb6157c6600261130a565b61135c565b611368565b6370a08231906157f76157e230611317565b926157eb610231565b9586948593849361129f565b835260048301610985565b03915afa801561584f5761581f915f91615821575b506004611ba9565b565b615842915060203d8111615848575b61583a81836106b7565b810190611332565b5f615817565b503d615830565b6112e6565b61585c615d4c565b6157b1565b615882915060203d8111615888575b61587a81836106b7565b8101906112c8565b5f615773565b503d615870565b6112e6565b5061589e5f611019565b615713565b6158c4915060203d81116158ca575b6158bc81836106b7565b810190611332565b5f6156da565b503d6158b2565b6112e6565b6156bd9193506158fb90853d8111615902575b6158f381836106b7565b810190611332565b92906156a4565b503d6158e9565b6112e6565b8061592961592361591e5f613b11565b610282565b91610282565b14615945576159439161593b5f613b11565b91909161623a565b565b6159886159515f613b11565b615959610231565b9182917fec442f0500000000000000000000000000000000000000000000000000000000835260048301610985565b0390fd5b615994615b45565b6159ac6159a25f830161130a565b915f849101613dc7565b906159e06159da7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e093613a9a565b91613a9a565b916159e9610231565b806159f3816102de565b0390a3565b615a00614885565b615a08615a0a565b565b615a1f615a156155ea565b5f6001910161525f565b615a27614fc4565b615a5d7f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25891615a54610231565b91829182610985565b0390a1565b615a6a6159f8565b565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0090565b615aa190615a9c616640565b615aa3565b565b615aac90616718565b565b615ab790615a90565b565b90615acb91615ac6616640565b615acd565b565b90615ad79161695b565b565b90615ae391615ab9565b565b615aed616640565b565b615af7615ae5565b565b615b01616640565b615b09615b0b565b565b615b13616996565b565b615b1d615af9565b565b615b27616640565b615b2f615b31565b565b615b396169c8565b565b615b43615b1f565b565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930090565b60207f6c61626c65000000000000000000000000000000000000000000000000000000917f42616c756e695631795661756c743a204e6f20696e74657265737420617661695f8201520152565b615bc3602560409261032a565b615bcc81615b69565b0190565b615be59060208101905f818303910152615bb6565b90565b15615bef57565b615bf7610231565b7f08c379a000000000000000000000000000000000000000000000000000000000815280615c2760048201615bd0565b0390fd5b5f7f42616c756e695631795661756c743a2052656465656d204661696c6564000000910152565b615c5f601d60209261032a565b615c6881615c2b565b0190565b615c819060208101905f818303910152615c52565b90565b15615c8b57565b615c93610231565b7f08c379a000000000000000000000000000000000000000000000000000000000815280615cc360048201615c6c565b0390fd5b615cd090611247565b90565b615cdc90615cc7565b90565b615ce890611263565b90565b615d20615d2794615d16606094989795615d0c608086019a5f870190610978565b6020850190610978565b6040830190610450565b0190610978565b565b916020615d4a929493615d4360408201965f830190610450565b0190610450565b565b615d5e615d59600161123a565b61126f565b615dad6307a2d13a916020615d7b615d76600161123a565b61126f565b6370a0823190615da2615d8d30611317565b92615d96610231565b9687948593849361129f565b835260048301610985565b03915afa90811561620357615dea936020935f936161d0575b50615ddf90615dd3610231565b9586948593849361129f565b83526004830161045d565b03915afa9081156161cb575f9161619d575b5080615e19615e13615e0e600561297f565b610243565b91610243565b115f1461618e57615e3490615e2e600561297f565b9061185a565b5b615e5181615e4b615e455f611019565b91610243565b11615be8565b615e926020615e68615e63600161123a565b61126f565b63c6e6f59290615e878592615e7b610231565b9586948593849361129f565b83526004830161045d565b03915afa908115616189575f9161615b575b506020615eb9615eb4600161123a565b61126f565b63ba0876529290615eee5f615ecd30611317565b95615ef9615eda30611317565b615ee2610231565b9889978896879561129f565b85526004850161178c565b03925af1908115616156575f91616128575b50615f2881615f22615f1c5f611019565b91610243565b11615c84565b615f556020615f3f615f3a6003611a0a565b611a17565b6382755ebb90615f4d610231565b93849261129f565b82528180615f65600482016102de565b03915afa801561612357615f80915f916160f5575b50615cd3565b615f99615f94615f8f5f61130a565b61135c565b611368565b90602063095ea7b392615fab83615cdf565b90615fc95f8796615fd4615fbd610231565b9889968795869461129f565b845260048401611a91565b03925af19182156160f057615fee926160c4575b50615cdf565b6020632d6bc8ea91615fff5f61130a565b906160315f61600e600261130a565b9561603c8861601c30611317565b90616025610231565b998a988997889661129f565b865260048601615ceb565b03925af180156160bf57616093575b503390916160797f1cbc5ab135991bd2b6a4b034a04aa2aa086dac1371cb9b16b8b5e2ed6b036bed92613a9a565b9261608e616085610231565b92839283615d29565b0390a2565b6160b39060203d81116160b8575b6160ab81836106b7565b810190611332565b61604b565b503d6160a1565b6112e6565b6160e49060203d81116160e9575b6160dc81836106b7565b810190611a73565b615fe8565b503d6160d2565b6112e6565b616116915060203d811161611c575b61610e81836106b7565b810190611a32565b5f615f7a565b503d616104565b6112e6565b616149915060203d811161614f575b61614181836106b7565b810190611332565b5f615f0b565b503d616137565b6112e6565b61617c915060203d8111616182575b61617481836106b7565b810190611332565b5f615ea4565b503d61616a565b6112e6565b506161985f611019565b615e35565b6161be915060203d81116161c4575b6161b681836106b7565b810190611332565b5f615dfc565b503d6161ac565b6112e6565b615ddf9193506161f590853d81116161fc575b6161ed81836106b7565b810190611332565b9290615dc6565b503d6161e3565b6112e6565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0090565b906162379101610243565b90565b919091616245614fa0565b8161626061625a6162555f613b11565b610282565b91610282565b145f1461634b5761628783616281600284019161627c8361297f565b612a30565b90611ba9565b5b836162a361629d6162985f613b11565b610282565b91610282565b145f1461631c576162cb906162c56002859201916162c08361297f565b615013565b90611ba9565b5b9190916163176163056162ff7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef93613a9a565b93613a9a565b9361630e610231565b9182918261045d565b0390a3565b616346906163406163315f8693018790613aa6565b9161633b8361297f565b61622c565b90611ba9565b6162cc565b61636061635b5f83018490613aa6565b61297f565b8061637361636d86610243565b91610243565b1061639d57616386616398918590615013565b6163935f84018590613aa6565b611ba9565b616288565b916163dc915091926163ad610231565b9384937fe450d38c00000000000000000000000000000000000000000000000000000000855260048501614fe1565b0390fd5b90926163ea614fa0565b826164056163ff6163fa5f613b11565b610282565b91610282565b146164f3578461642561641f61641a5f613b11565b610282565b91610282565b146164ac5761644c9061644761644060018793018690614212565b8790613aa6565b611ba9565b616456575b505050565b9190916164a161648f6164897f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92593613a9a565b93613a9a565b93616498610231565b9182918261045d565b0390a35f8080616451565b6164ef6164b85f613b11565b6164c0610231565b9182917f94280d6200000000000000000000000000000000000000000000000000000000835260048301610985565b0390fd5b6165366164ff5f613b11565b616507610231565b9182917fe602df0500000000000000000000000000000000000000000000000000000000835260048301610985565b0390fd5b61654b6165456131e8565b156103f3565b61655157565b616559610231565b7f8dfc202b00000000000000000000000000000000000000000000000000000000815280616589600482016102de565b0390fd5b616595613b3a565b506165b05f6165aa6165a5613176565b6169d2565b0161130a565b90565b5190565b906165c1826169d5565b816165ec7fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b91613a9a565b906165f5610231565b806165ff816102de565b0390a261660b816165b3565b61661d6166175f611019565b91610243565b115f146166315761662d91616ae5565b505b565b505061663b616a4a565b61662f565b61665161664b616b14565b156103f3565b61665757565b61665f610231565b7fd7e6bcf80000000000000000000000000000000000000000000000000000000081528061668f600482016102de565b0390fd5b6166a49061669f616640565b6166a6565b565b806166c16166bb6166b65f613b11565b610282565b91610282565b146166d1576166cf9061598c565b565b6167146166dd5f613b11565b6166e5610231565b9182917f1e4fbdf700000000000000000000000000000000000000000000000000000000835260048301610985565b0390fd5b61672190616693565b565b9061673591616730616640565b616937565b565b601f602091010490565b1b90565b9190600861677f9102916167797fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84616741565b92616741565b9181191691161790565b919061679f61679a6167a793611b8a565b611ba6565b908354616745565b9055565b6167bd916167b7612967565b91616789565b565b5b8181106167cb575050565b806167d85f6001936167ab565b016167c0565b9190601f81116167ee575b505050565b6167fa61681f93612852565b90602061680684616737565b83019310616827575b61681890616737565b01906167bf565b5f80806167e9565b91506168188192905061680f565b90616845905f19906008026105a9565b191690565b8161685491616835565b906002021790565b9061686681610326565b9067ffffffffffffffff82116169265761688a82616884855461281f565b856167de565b602090601f83116001146168be579180916168ad935f926168b2575b505061684a565b90555b565b90915001515f806168a6565b601f198316916168cd85612852565b925f5b81811061690e575091600293918560019694106168f4575b505050020190556168b0565b616904910151601f841690616835565b90555f80806168e8565b919360206001819287870151815501950192016168d0565b61068a565b906169359161685c565b565b600461695992616952616948614fa0565b936003850161692b565b910161692b565b565b9061696591616723565b565b61696f616640565b616977616979565b565b616994616984616208565b5f61698d61485b565b9101611ba9565b565b61699e616967565b565b6169a8616640565b6169b06169b2565b565b6169c66169bd6155ea565b5f80910161525f565b565b6169d06169a0565b565b90565b803b6169e96169e35f611019565b91610243565b14616a0b57616a09905f616a036169fe613176565b6169d2565b01613dc7565b565b616a4690616a17610231565b9182917f4c9c8ce300000000000000000000000000000000000000000000000000000000835260048301610985565b0390fd5b34616a5d616a575f611019565b91610243565b11616a6457565b616a6c610231565b7fb398979f00000000000000000000000000000000000000000000000000000000815280616a9c600482016102de565b0390fd5b606090565b90616ab7616ab2836106f5565b6106e0565b918252565b3d5f14616ad757616acc3d616aa5565b903d5f602084013e5b565b616adf616aa0565b90616ad5565b5f80616b1193616af3616aa0565b508390602081019051915af490616b08616abc565b90919091616b32565b90565b616b1c612941565b50616b2f5f616b29615a6c565b01613b9c565b90565b90616b4690616b3f616aa0565b50156103f3565b5f14616b525750616bd6565b616b5b826165b3565b616b6d616b675f611019565b91610243565b1480616bbb575b616b7c575090565b616bb790616b88610231565b9182917f9996b31500000000000000000000000000000000000000000000000000000000835260048301610985565b0390fd5b50803b616bd0616bca5f611019565b91610243565b14616b74565b616bdf816165b3565b616bf1616beb5f611019565b91610243565b115f14616c0057805190602001fd5b616c08610231565b7f1425ea4200000000000000000000000000000000000000000000000000000000815280616c38600482016102de565b0390fdfea2646970667358221220476bd292c84f9b07c6d81d4b96a28e5086056df8ea15ccfb438bc561cab769a464736f6c63430008190033","opcodes":"PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE PUSH2 0x3E JUMPI PUSH2 0x11 PUSH2 0x4D JUMP JUMPDEST PUSH2 0x19 PUSH2 0x43 JUMP JUMPDEST PUSH2 0x6C72 PUSH2 0x102 DUP3 CODECOPY PUSH1 0x80 MLOAD DUP2 DUP2 DUP2 PUSH2 0x52FD ADD MSTORE DUP2 DUP2 PUSH2 0x5382 ADD MSTORE PUSH2 0x557D ADD MSTORE PUSH2 0x6C72 SWAP1 RETURN JUMPDEST PUSH2 0x49 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x55 PUSH2 0x57 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x5F PUSH2 0x61 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x69 PUSH2 0x6B JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x73 PUSH2 0x75 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x7D PUSH2 0x7F JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x87 PUSH2 0x89 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x91 PUSH2 0x93 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x9B PUSH2 0x9D JUMP JUMPDEST JUMP JUMPDEST PUSH2 0xA5 PUSH2 0xA7 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0xAF PUSH2 0xF3 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xD3 PUSH2 0xCE PUSH2 0xD8 SWAP3 PUSH2 0xB1 JUMP JUMPDEST PUSH2 0xBC JUMP JUMPDEST PUSH2 0xB1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xE4 SWAP1 PUSH2 0xBF JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xF0 SWAP1 PUSH2 0xDB JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xFC ADDRESS PUSH2 0xE7 JUMP JUMPDEST PUSH1 0x80 MSTORE JUMP INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x13 JUMPI JUMPDEST PUSH2 0xFDF JUMP JUMPDEST PUSH2 0x1D PUSH0 CALLDATALOAD PUSH2 0x22B JUMP JUMPDEST DUP1 PUSH3 0xF714CE EQ PUSH2 0x226 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x221 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x21C JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x217 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x212 JUMPI DUP1 PUSH4 0x295B9300 EQ PUSH2 0x20D JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x208 JUMPI DUP1 PUSH4 0x36B77107 EQ PUSH2 0x203 JUMPI DUP1 PUSH4 0x374261AB EQ PUSH2 0x1FE JUMPI DUP1 PUSH4 0x3F4BA83A EQ PUSH2 0x1F9 JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x1F4 JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH2 0x1EF JUMPI DUP1 PUSH4 0x5C975ABB EQ PUSH2 0x1EA JUMPI DUP1 PUSH4 0x6560BC80 EQ PUSH2 0x1E5 JUMPI DUP1 PUSH4 0x6E553F65 EQ PUSH2 0x1E0 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x1DB JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x1D6 JUMPI DUP1 PUSH4 0x7B103999 EQ PUSH2 0x1D1 JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH2 0x1CC JUMPI DUP1 PUSH4 0x88696F62 EQ PUSH2 0x1C7 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x1C2 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x1BD JUMPI DUP1 PUSH4 0x9DB5DF46 EQ PUSH2 0x1B8 JUMPI DUP1 PUSH4 0xA6F2AE3A EQ PUSH2 0x1B3 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x1AE JUMPI DUP1 PUSH4 0xAD3CB1CC EQ PUSH2 0x1A9 JUMPI DUP1 PUSH4 0xCDF456E1 EQ PUSH2 0x1A4 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x19F JUMPI DUP1 PUSH4 0xE56F2FE4 EQ PUSH2 0x19A JUMPI DUP1 PUSH4 0xE73FAA2D EQ PUSH2 0x195 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x190 JUMPI DUP1 PUSH4 0xF7FDE10F EQ PUSH2 0x18B JUMPI PUSH4 0xFDF262B7 SUB PUSH2 0xE JUMPI PUSH2 0xFAA JUMP JUMPDEST PUSH2 0xF66 JUMP JUMPDEST PUSH2 0xF24 JUMP JUMPDEST PUSH2 0xEEF JUMP JUMPDEST PUSH2 0xEB5 JUMP JUMPDEST PUSH2 0xDEB JUMP JUMPDEST PUSH2 0xD89 JUMP JUMPDEST PUSH2 0xD08 JUMP JUMPDEST PUSH2 0xC5A JUMP JUMPDEST PUSH2 0xC27 JUMP JUMPDEST PUSH2 0xBF2 JUMP JUMPDEST PUSH2 0xBBD JUMP JUMPDEST PUSH2 0xB88 JUMP JUMPDEST PUSH2 0xB4E JUMP JUMPDEST PUSH2 0x9CF JUMP JUMPDEST PUSH2 0x99A JUMP JUMPDEST PUSH2 0x945 JUMP JUMPDEST PUSH2 0x910 JUMP JUMPDEST PUSH2 0x8BE JUMP JUMPDEST PUSH2 0x889 JUMP JUMPDEST PUSH2 0x845 JUMP JUMPDEST PUSH2 0x810 JUMP JUMPDEST PUSH2 0x7C1 JUMP JUMPDEST PUSH2 0x64F JUMP JUMPDEST PUSH2 0x61A JUMP JUMPDEST PUSH2 0x5E5 JUMP JUMPDEST PUSH2 0x574 JUMP JUMPDEST PUSH2 0x517 JUMP JUMPDEST PUSH2 0x4E1 JUMP JUMPDEST PUSH2 0x472 JUMP JUMPDEST PUSH2 0x41A JUMP JUMPDEST PUSH2 0x391 JUMP JUMPDEST PUSH2 0x2E3 JUMP JUMPDEST PUSH1 0xE0 SHR SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x24F DUP2 PUSH2 0x243 JUMP JUMPDEST SUB PUSH2 0x256 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0x267 DUP3 PUSH2 0x246 JUMP JUMPDEST JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x28B SWAP1 PUSH2 0x269 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x297 DUP2 PUSH2 0x282 JUMP JUMPDEST SUB PUSH2 0x29E JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0x2AF DUP3 PUSH2 0x28E JUMP JUMPDEST JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x40 DUP4 DUP3 SUB SLT PUSH2 0x2D9 JUMPI DUP1 PUSH2 0x2CD PUSH2 0x2D6 SWAP3 PUSH0 DUP7 ADD PUSH2 0x25A JUMP JUMPDEST SWAP4 PUSH1 0x20 ADD PUSH2 0x2A2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x23B JUMP JUMPDEST PUSH0 ADD SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x312 JUMPI PUSH2 0x2FC PUSH2 0x2F6 CALLDATASIZE PUSH1 0x4 PUSH2 0x2B1 JUMP JUMPDEST SWAP1 PUSH2 0x27E1 JUMP JUMPDEST PUSH2 0x304 PUSH2 0x231 JUMP JUMPDEST DUP1 PUSH2 0x30E DUP2 PUSH2 0x2DE JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST PUSH0 SWAP2 SUB SLT PUSH2 0x321 JUMPI JUMP JUMPDEST PUSH2 0x23B JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP2 MSTORE ADD SWAP1 JUMP JUMPDEST SWAP1 DUP3 PUSH0 SWAP4 SWAP3 DUP3 MCOPY ADD MSTORE JUMP JUMPDEST PUSH1 0x1F DUP1 NOT SWAP2 ADD AND SWAP1 JUMP JUMPDEST PUSH2 0x367 PUSH2 0x370 PUSH1 0x20 SWAP4 PUSH2 0x375 SWAP4 PUSH2 0x35E DUP2 PUSH2 0x326 JUMP JUMPDEST SWAP4 DUP5 DUP1 SWAP4 PUSH2 0x32A JUMP JUMPDEST SWAP6 DUP7 SWAP2 ADD PUSH2 0x333 JUMP JUMPDEST PUSH2 0x33E JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x38E SWAP2 PUSH1 0x20 DUP3 ADD SWAP2 PUSH0 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x348 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x3C1 JUMPI PUSH2 0x3A1 CALLDATASIZE PUSH1 0x4 PUSH2 0x317 JUMP JUMPDEST PUSH2 0x3BD PUSH2 0x3AC PUSH2 0x2922 JUMP JUMPDEST PUSH2 0x3B4 PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x379 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x40 DUP4 DUP3 SUB SLT PUSH2 0x3EE JUMPI DUP1 PUSH2 0x3E2 PUSH2 0x3EB SWAP3 PUSH0 DUP7 ADD PUSH2 0x2A2 JUMP JUMPDEST SWAP4 PUSH1 0x20 ADD PUSH2 0x25A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x23B JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH2 0x401 SWAP1 PUSH2 0x3F3 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x418 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x3F8 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x44B JUMPI PUSH2 0x447 PUSH2 0x436 PUSH2 0x430 CALLDATASIZE PUSH1 0x4 PUSH2 0x3C6 JUMP JUMPDEST SWAP1 PUSH2 0x2945 JUMP JUMPDEST PUSH2 0x43E PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x405 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST PUSH2 0x459 SWAP1 PUSH2 0x243 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x470 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x450 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x4A2 JUMPI PUSH2 0x482 CALLDATASIZE PUSH1 0x4 PUSH2 0x317 JUMP JUMPDEST PUSH2 0x49E PUSH2 0x48D PUSH2 0x298C JUMP JUMPDEST PUSH2 0x495 PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x45D JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST SWAP1 SWAP2 PUSH1 0x60 DUP3 DUP5 SUB SLT PUSH2 0x4DC JUMPI PUSH2 0x4D9 PUSH2 0x4C2 DUP5 PUSH0 DUP6 ADD PUSH2 0x2A2 JUMP JUMPDEST SWAP4 PUSH2 0x4D0 DUP2 PUSH1 0x20 DUP7 ADD PUSH2 0x2A2 JUMP JUMPDEST SWAP4 PUSH1 0x40 ADD PUSH2 0x25A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x23B JUMP JUMPDEST CALLVALUE PUSH2 0x512 JUMPI PUSH2 0x50E PUSH2 0x4FD PUSH2 0x4F7 CALLDATASIZE PUSH1 0x4 PUSH2 0x4A7 JUMP JUMPDEST SWAP2 PUSH2 0x29AB JUMP JUMPDEST PUSH2 0x505 PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x405 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST CALLVALUE PUSH2 0x547 JUMPI PUSH2 0x527 CALLDATASIZE PUSH1 0x4 PUSH2 0x317 JUMP JUMPDEST PUSH2 0x543 PUSH2 0x532 PUSH2 0x2A55 JUMP JUMPDEST PUSH2 0x53A PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x45D JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x55B SWAP1 PUSH2 0x54C JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x572 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x552 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x5A4 JUMPI PUSH2 0x584 CALLDATASIZE PUSH1 0x4 PUSH2 0x317 JUMP JUMPDEST PUSH2 0x5A0 PUSH2 0x58F PUSH2 0x2F5F JUMP JUMPDEST PUSH2 0x597 PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x55F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST SHR SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x5C0 SWAP1 PUSH1 0x8 PUSH2 0x5C5 SWAP4 MUL PUSH2 0x5A9 JUMP JUMPDEST PUSH2 0x5AD JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x5D3 SWAP2 SLOAD PUSH2 0x5B0 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x5E2 PUSH1 0x5 PUSH0 SWAP1 PUSH2 0x5C8 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x615 JUMPI PUSH2 0x5F5 CALLDATASIZE PUSH1 0x4 PUSH2 0x317 JUMP JUMPDEST PUSH2 0x611 PUSH2 0x600 PUSH2 0x5D6 JUMP JUMPDEST PUSH2 0x608 PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x45D JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST CALLVALUE PUSH2 0x64A JUMPI PUSH2 0x62A CALLDATASIZE PUSH1 0x4 PUSH2 0x317 JUMP JUMPDEST PUSH2 0x646 PUSH2 0x635 PUSH2 0x2F75 JUMP JUMPDEST PUSH2 0x63D PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x45D JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST CALLVALUE PUSH2 0x67D JUMPI PUSH2 0x65F CALLDATASIZE PUSH1 0x4 PUSH2 0x317 JUMP JUMPDEST PUSH2 0x667 PUSH2 0x3100 JUMP JUMPDEST PUSH2 0x66F PUSH2 0x231 JUMP JUMPDEST DUP1 PUSH2 0x679 DUP2 PUSH2 0x2DE JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH2 0x6C1 SWAP1 PUSH2 0x33E JUMP JUMPDEST DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x6DB JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH2 0x68A JUMP JUMPDEST SWAP1 PUSH2 0x6F3 PUSH2 0x6EC PUSH2 0x231 JUMP JUMPDEST SWAP3 DUP4 PUSH2 0x6B7 JUMP JUMPDEST JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x713 JUMPI PUSH2 0x70F PUSH1 0x20 SWAP2 PUSH2 0x33E JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x68A JUMP JUMPDEST SWAP1 DUP3 PUSH0 SWAP4 SWAP3 DUP3 CALLDATACOPY ADD MSTORE JUMP JUMPDEST SWAP1 SWAP3 SWAP2 SWAP3 PUSH2 0x738 PUSH2 0x733 DUP3 PUSH2 0x6F5 JUMP JUMPDEST PUSH2 0x6E0 JUMP JUMPDEST SWAP4 DUP2 DUP6 MSTORE PUSH1 0x20 DUP6 ADD SWAP1 DUP3 DUP5 ADD GT PUSH2 0x754 JUMPI PUSH2 0x752 SWAP3 PUSH2 0x718 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x686 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x777 JUMPI DUP2 PUSH1 0x20 PUSH2 0x774 SWAP4 CALLDATALOAD SWAP2 ADD PUSH2 0x723 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x682 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH1 0x40 DUP2 DUP5 SUB SLT PUSH2 0x7BC JUMPI PUSH2 0x795 DUP4 PUSH0 DUP4 ADD PUSH2 0x2A2 JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x7B7 JUMPI PUSH2 0x7B4 SWAP3 ADD PUSH2 0x759 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x23F JUMP JUMPDEST PUSH2 0x23B JUMP JUMPDEST PUSH2 0x7D5 PUSH2 0x7CF CALLDATASIZE PUSH1 0x4 PUSH2 0x77C JUMP JUMPDEST SWAP1 PUSH2 0x3133 JUMP JUMPDEST PUSH2 0x7DD PUSH2 0x231 JUMP JUMPDEST DUP1 PUSH2 0x7E7 DUP2 PUSH2 0x2DE JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x7F7 SWAP1 PUSH2 0x7EB JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x80E SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x7EE JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x840 JUMPI PUSH2 0x820 CALLDATASIZE PUSH1 0x4 PUSH2 0x317 JUMP JUMPDEST PUSH2 0x83C PUSH2 0x82B PUSH2 0x31AE JUMP JUMPDEST PUSH2 0x833 PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x7FB JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST CALLVALUE PUSH2 0x875 JUMPI PUSH2 0x855 CALLDATASIZE PUSH1 0x4 PUSH2 0x317 JUMP JUMPDEST PUSH2 0x871 PUSH2 0x860 PUSH2 0x31E8 JUMP JUMPDEST PUSH2 0x868 PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x405 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST PUSH2 0x886 PUSH1 0x6 PUSH0 SWAP1 PUSH2 0x5C8 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x8B9 JUMPI PUSH2 0x899 CALLDATASIZE PUSH1 0x4 PUSH2 0x317 JUMP JUMPDEST PUSH2 0x8B5 PUSH2 0x8A4 PUSH2 0x87A JUMP JUMPDEST PUSH2 0x8AC PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x45D JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST CALLVALUE PUSH2 0x8ED JUMPI PUSH2 0x8D7 PUSH2 0x8D1 CALLDATASIZE PUSH1 0x4 PUSH2 0x2B1 JUMP JUMPDEST SWAP1 PUSH2 0x3A8E JUMP JUMPDEST PUSH2 0x8DF PUSH2 0x231 JUMP JUMPDEST DUP1 PUSH2 0x8E9 DUP2 PUSH2 0x2DE JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x90B JUMPI PUSH2 0x908 SWAP2 PUSH0 ADD PUSH2 0x2A2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x23B JUMP JUMPDEST CALLVALUE PUSH2 0x940 JUMPI PUSH2 0x93C PUSH2 0x92B PUSH2 0x926 CALLDATASIZE PUSH1 0x4 PUSH2 0x8F2 JUMP JUMPDEST PUSH2 0x3ABC JUMP JUMPDEST PUSH2 0x933 PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x45D JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST CALLVALUE PUSH2 0x973 JUMPI PUSH2 0x955 CALLDATASIZE PUSH1 0x4 PUSH2 0x317 JUMP JUMPDEST PUSH2 0x95D PUSH2 0x3B30 JUMP JUMPDEST PUSH2 0x965 PUSH2 0x231 JUMP JUMPDEST DUP1 PUSH2 0x96F DUP2 PUSH2 0x2DE JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST PUSH2 0x981 SWAP1 PUSH2 0x282 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x998 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x978 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x9CA JUMPI PUSH2 0x9AA CALLDATASIZE PUSH1 0x4 PUSH2 0x317 JUMP JUMPDEST PUSH2 0x9C6 PUSH2 0x9B5 PUSH2 0x3B3E JUMP JUMPDEST PUSH2 0x9BD PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x985 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST CALLVALUE PUSH2 0x9FD JUMPI PUSH2 0x9DF CALLDATASIZE PUSH1 0x4 PUSH2 0x317 JUMP JUMPDEST PUSH2 0x9E7 PUSH2 0x3B78 JUMP JUMPDEST PUSH2 0x9EF PUSH2 0x231 JUMP JUMPDEST DUP1 PUSH2 0x9F9 DUP2 PUSH2 0x2DE JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xA20 JUMPI PUSH2 0xA1C PUSH1 0x20 SWAP2 PUSH2 0x33E JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x68A JUMP JUMPDEST SWAP1 SWAP3 SWAP2 SWAP3 PUSH2 0xA3A PUSH2 0xA35 DUP3 PUSH2 0xA02 JUMP JUMPDEST PUSH2 0x6E0 JUMP JUMPDEST SWAP4 DUP2 DUP6 MSTORE PUSH1 0x20 DUP6 ADD SWAP1 DUP3 DUP5 ADD GT PUSH2 0xA56 JUMPI PUSH2 0xA54 SWAP3 PUSH2 0x718 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x686 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0xA79 JUMPI DUP2 PUSH1 0x20 PUSH2 0xA76 SWAP4 CALLDATALOAD SWAP2 ADD PUSH2 0xA25 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x682 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0xA94 DUP2 PUSH2 0xA7E JUMP JUMPDEST SUB PUSH2 0xA9B JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0xAAC DUP3 PUSH2 0xA8B JUMP JUMPDEST JUMP JUMPDEST PUSH1 0xE0 DUP2 DUP4 SUB SLT PUSH2 0xB49 JUMPI PUSH0 DUP2 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xB44 JUMPI DUP3 PUSH2 0xAD7 SWAP2 DUP4 ADD PUSH2 0xA5B JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xB3F JUMPI DUP4 PUSH2 0xAF8 SWAP2 DUP5 ADD PUSH2 0xA5B JUMP JUMPDEST SWAP3 PUSH2 0xB06 DUP2 PUSH1 0x40 DUP6 ADD PUSH2 0x2A2 JUMP JUMPDEST SWAP3 PUSH2 0xB14 DUP3 PUSH1 0x60 DUP4 ADD PUSH2 0x2A2 JUMP JUMPDEST SWAP3 PUSH2 0xB3C PUSH2 0xB25 DUP5 PUSH1 0x80 DUP6 ADD PUSH2 0x2A2 JUMP JUMPDEST SWAP4 PUSH2 0xB33 DUP2 PUSH1 0xA0 DUP7 ADD PUSH2 0x2A2 JUMP JUMPDEST SWAP4 PUSH1 0xC0 ADD PUSH2 0xA9F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x23F JUMP JUMPDEST PUSH2 0x23F JUMP JUMPDEST PUSH2 0x23B JUMP JUMPDEST CALLVALUE PUSH2 0xB83 JUMPI PUSH2 0xB6D PUSH2 0xB61 CALLDATASIZE PUSH1 0x4 PUSH2 0xAAE JUMP JUMPDEST SWAP6 SWAP5 SWAP1 SWAP5 SWAP4 SWAP2 SWAP4 PUSH2 0x4144 JUMP JUMPDEST PUSH2 0xB75 PUSH2 0x231 JUMP JUMPDEST DUP1 PUSH2 0xB7F DUP2 PUSH2 0x2DE JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST CALLVALUE PUSH2 0xBB8 JUMPI PUSH2 0xB98 CALLDATASIZE PUSH1 0x4 PUSH2 0x317 JUMP JUMPDEST PUSH2 0xBB4 PUSH2 0xBA3 PUSH2 0x4155 JUMP JUMPDEST PUSH2 0xBAB PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x985 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST CALLVALUE PUSH2 0xBED JUMPI PUSH2 0xBCD CALLDATASIZE PUSH1 0x4 PUSH2 0x317 JUMP JUMPDEST PUSH2 0xBE9 PUSH2 0xBD8 PUSH2 0x4173 JUMP JUMPDEST PUSH2 0xBE0 PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x379 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST CALLVALUE PUSH2 0xC22 JUMPI PUSH2 0xC02 CALLDATASIZE PUSH1 0x4 PUSH2 0x317 JUMP JUMPDEST PUSH2 0xC1E PUSH2 0xC0D PUSH2 0x4192 JUMP JUMPDEST PUSH2 0xC15 PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x985 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST CALLVALUE PUSH2 0xC55 JUMPI PUSH2 0xC37 CALLDATASIZE PUSH1 0x4 PUSH2 0x317 JUMP JUMPDEST PUSH2 0xC3F PUSH2 0x41E6 JUMP JUMPDEST PUSH2 0xC47 PUSH2 0x231 JUMP JUMPDEST DUP1 PUSH2 0xC51 DUP2 PUSH2 0x2DE JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST CALLVALUE PUSH2 0xC8B JUMPI PUSH2 0xC87 PUSH2 0xC76 PUSH2 0xC70 CALLDATASIZE PUSH1 0x4 PUSH2 0x3C6 JUMP JUMPDEST SWAP1 PUSH2 0x41F0 JUMP JUMPDEST PUSH2 0xC7E PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x405 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST SWAP1 PUSH2 0xCA2 PUSH2 0xC9D DUP4 PUSH2 0xA02 JUMP JUMPDEST PUSH2 0x6E0 JUMP JUMPDEST SWAP2 DUP3 MSTORE JUMP JUMPDEST PUSH0 PUSH32 0x352E302E30000000000000000000000000000000000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0xCD8 PUSH1 0x5 PUSH2 0xC90 JUMP JUMPDEST SWAP1 PUSH2 0xCE5 PUSH1 0x20 DUP4 ADD PUSH2 0xCA7 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0xCEF PUSH2 0xCCE JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xCFA PUSH2 0xCE7 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xD05 PUSH2 0xCF2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0xD38 JUMPI PUSH2 0xD18 CALLDATASIZE PUSH1 0x4 PUSH2 0x317 JUMP JUMPDEST PUSH2 0xD34 PUSH2 0xD23 PUSH2 0xCFD JUMP JUMPDEST PUSH2 0xD2B PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x379 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0xD66 SWAP1 PUSH1 0x8 PUSH2 0xD6B SWAP4 MUL PUSH2 0x5A9 JUMP JUMPDEST PUSH2 0xD3D JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xD79 SWAP2 SLOAD PUSH2 0xD56 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xD86 PUSH0 DUP1 PUSH2 0xD6E JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0xDB9 JUMPI PUSH2 0xD99 CALLDATASIZE PUSH1 0x4 PUSH2 0x317 JUMP JUMPDEST PUSH2 0xDB5 PUSH2 0xDA4 PUSH2 0xD7C JUMP JUMPDEST PUSH2 0xDAC PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x985 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x40 DUP4 DUP3 SUB SLT PUSH2 0xDE6 JUMPI DUP1 PUSH2 0xDDA PUSH2 0xDE3 SWAP3 PUSH0 DUP7 ADD PUSH2 0x2A2 JUMP JUMPDEST SWAP4 PUSH1 0x20 ADD PUSH2 0x2A2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x23B JUMP JUMPDEST CALLVALUE PUSH2 0xE1C JUMPI PUSH2 0xE18 PUSH2 0xE07 PUSH2 0xE01 CALLDATASIZE PUSH1 0x4 PUSH2 0xDBE JUMP JUMPDEST SWAP1 PUSH2 0x4228 JUMP JUMPDEST PUSH2 0xE0F PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x45D JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST SWAP1 SWAP2 PUSH1 0xC0 DUP3 DUP5 SUB SLT PUSH2 0xEB0 JUMPI PUSH0 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xEAB JUMPI DUP4 PUSH2 0xE4C SWAP2 DUP5 ADD PUSH2 0xA5B JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xEA6 JUMPI DUP2 PUSH2 0xE6D SWAP2 DUP6 ADD PUSH2 0xA5B JUMP JUMPDEST SWAP3 PUSH2 0xE7B DUP3 PUSH1 0x40 DUP4 ADD PUSH2 0x2A2 JUMP JUMPDEST SWAP3 PUSH2 0xEA3 PUSH2 0xE8C DUP5 PUSH1 0x60 DUP6 ADD PUSH2 0x2A2 JUMP JUMPDEST SWAP4 PUSH2 0xE9A DUP2 PUSH1 0x80 DUP7 ADD PUSH2 0x2A2 JUMP JUMPDEST SWAP4 PUSH1 0xA0 ADD PUSH2 0x2A2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x23F JUMP JUMPDEST PUSH2 0x23F JUMP JUMPDEST PUSH2 0x23B JUMP JUMPDEST CALLVALUE PUSH2 0xEEA JUMPI PUSH2 0xED4 PUSH2 0xEC8 CALLDATASIZE PUSH1 0x4 PUSH2 0xE21 JUMP JUMPDEST SWAP5 SWAP4 SWAP1 SWAP4 SWAP3 SWAP2 SWAP3 PUSH2 0x453F JUMP JUMPDEST PUSH2 0xEDC PUSH2 0x231 JUMP JUMPDEST DUP1 PUSH2 0xEE6 DUP2 PUSH2 0x2DE JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST CALLVALUE PUSH2 0xF1F JUMPI PUSH2 0xEFF CALLDATASIZE PUSH1 0x4 PUSH2 0x317 JUMP JUMPDEST PUSH2 0xF1B PUSH2 0xF0A PUSH2 0x456E JUMP JUMPDEST PUSH2 0xF12 PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x45D JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST CALLVALUE PUSH2 0xF52 JUMPI PUSH2 0xF3C PUSH2 0xF37 CALLDATASIZE PUSH1 0x4 PUSH2 0x8F2 JUMP JUMPDEST PUSH2 0x4785 JUMP JUMPDEST PUSH2 0xF44 PUSH2 0x231 JUMP JUMPDEST DUP1 PUSH2 0xF4E DUP2 PUSH2 0x2DE JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST PUSH2 0xF63 PUSH1 0x4 PUSH0 SWAP1 PUSH2 0x5C8 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0xF96 JUMPI PUSH2 0xF76 CALLDATASIZE PUSH1 0x4 PUSH2 0x317 JUMP JUMPDEST PUSH2 0xF92 PUSH2 0xF81 PUSH2 0xF57 JUMP JUMPDEST PUSH2 0xF89 PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x45D JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST PUSH2 0xFA7 PUSH1 0x2 PUSH0 SWAP1 PUSH2 0xD6E JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0xFDA JUMPI PUSH2 0xFBA CALLDATASIZE PUSH1 0x4 PUSH2 0x317 JUMP JUMPDEST PUSH2 0xFD6 PUSH2 0xFC5 PUSH2 0xF9B JUMP JUMPDEST PUSH2 0xFCD PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x985 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 PUSH2 0xFF5 SWAP2 PUSH2 0xFF0 PUSH2 0x47BC JUMP JUMPDEST PUSH2 0xFFF JUMP JUMPDEST PUSH2 0xFFD PUSH2 0x4868 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x1011 SWAP2 PUSH2 0x100C PUSH2 0x4885 JUMP JUMPDEST PUSH2 0x1BC9 JUMP JUMPDEST JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x102D PUSH2 0x1028 PUSH2 0x1032 SWAP3 PUSH2 0x1013 JUMP JUMPDEST PUSH2 0x1016 JUMP JUMPDEST PUSH2 0x243 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 PUSH32 0x536861726573206D7573742062652067726561746572207468616E207A65726F SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x1068 PUSH1 0x20 DUP1 SWAP3 PUSH2 0x32A JUMP JUMPDEST PUSH2 0x1071 DUP2 PUSH2 0x1035 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x108A SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x105C JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x1094 JUMPI JUMP JUMPDEST PUSH2 0x109C PUSH2 0x231 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x10CC PUSH1 0x4 DUP3 ADD PUSH2 0x1075 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH32 0x496E73756666696369656E742062616C616E6365000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x1104 PUSH1 0x14 PUSH1 0x20 SWAP3 PUSH2 0x32A JUMP JUMPDEST PUSH2 0x110D DUP2 PUSH2 0x10D0 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x1126 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x10F7 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x1130 JUMPI JUMP JUMPDEST PUSH2 0x1138 PUSH2 0x231 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x1168 PUSH1 0x4 DUP3 ADD PUSH2 0x1111 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH32 0x546F74616C20737570706C792063616E6E6F74206265207A65726F0000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x11A0 PUSH1 0x1B PUSH1 0x20 SWAP3 PUSH2 0x32A JUMP JUMPDEST PUSH2 0x11A9 DUP2 PUSH2 0x116C JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x11C2 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x1193 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x11CC JUMPI JUMP JUMPDEST PUSH2 0x11D4 PUSH2 0x231 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x1204 PUSH1 0x4 DUP3 ADD PUSH2 0x11AD JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH0 SHR SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x1232 PUSH2 0x1237 SWAP2 PUSH2 0x1208 JUMP JUMPDEST PUSH2 0x120D JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1244 SWAP1 SLOAD PUSH2 0x1226 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x125B PUSH2 0x1256 PUSH2 0x1260 SWAP3 PUSH2 0x269 JUMP JUMPDEST PUSH2 0x1016 JUMP JUMPDEST PUSH2 0x269 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x126C SWAP1 PUSH2 0x1247 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1278 SWAP1 PUSH2 0x1263 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1284 SWAP1 PUSH2 0x1247 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1290 SWAP1 PUSH2 0x127B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x129C SWAP1 PUSH2 0x1263 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0xE0 SHL SWAP1 JUMP JUMPDEST PUSH2 0x12AE DUP2 PUSH2 0x54C JUMP JUMPDEST SUB PUSH2 0x12B5 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0x12C6 DUP3 PUSH2 0x12A5 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x12E1 JUMPI PUSH2 0x12DE SWAP2 PUSH0 ADD PUSH2 0x12B9 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x23B JUMP JUMPDEST PUSH2 0x12EE PUSH2 0x231 JUMP JUMPDEST RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH2 0x1302 PUSH2 0x1307 SWAP2 PUSH2 0x1208 JUMP JUMPDEST PUSH2 0xD3D JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1314 SWAP1 SLOAD PUSH2 0x12F6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1320 SWAP1 PUSH2 0x1263 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0x1330 DUP3 PUSH2 0x246 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x134B JUMPI PUSH2 0x1348 SWAP2 PUSH0 ADD PUSH2 0x1323 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x23B JUMP JUMPDEST PUSH2 0x1359 SWAP1 PUSH2 0x1247 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1365 SWAP1 PUSH2 0x1350 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1371 SWAP1 PUSH2 0x1263 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x138B PUSH2 0x1386 PUSH2 0x1390 SWAP3 PUSH2 0x1374 JUMP JUMPDEST PUSH2 0x1016 JUMP JUMPDEST PUSH2 0x54C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0x13CC PUSH2 0x13D2 SWAP2 PUSH2 0x54C JUMP JUMPDEST SWAP2 PUSH2 0x54C JUMP JUMPDEST SWAP1 SUB SWAP1 PUSH1 0xFF DUP3 GT PUSH2 0x13DF JUMPI JUMP JUMPDEST PUSH2 0x1393 JUMP JUMPDEST PUSH2 0x13ED SWAP1 PUSH2 0x54C JUMP JUMPDEST PUSH1 0x4D DUP2 GT PUSH2 0x13FB JUMPI PUSH1 0xA EXP SWAP1 JUMP JUMPDEST PUSH2 0x1393 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0x1439 PUSH2 0x143F SWAP2 PUSH2 0x243 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST SWAP1 DUP2 ISZERO PUSH2 0x144A JUMPI DIV SWAP1 JUMP JUMPDEST PUSH2 0x1400 JUMP JUMPDEST PUSH1 0x20 PUSH32 0x206F766572666C6F770000000000000000000000000000000000000000000000 SWAP2 PUSH32 0x596561726E5661756C742062616C616E6365207363616C696E6720776F756C64 PUSH0 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST PUSH2 0x14A9 PUSH1 0x29 PUSH1 0x40 SWAP3 PUSH2 0x32A JUMP JUMPDEST PUSH2 0x14B2 DUP2 PUSH2 0x144F JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x14CB SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x149C JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x14D5 JUMPI JUMP JUMPDEST PUSH2 0x14DD PUSH2 0x231 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x150D PUSH1 0x4 DUP3 ADD PUSH2 0x14B6 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH1 0x20 PUSH32 0x666C6F7700000000000000000000000000000000000000000000000000000000 SWAP2 PUSH32 0x51756F74652062616C616E6365207363616C696E6720776F756C64206F766572 PUSH0 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST PUSH2 0x156B PUSH1 0x24 PUSH1 0x40 SWAP3 PUSH2 0x32A JUMP JUMPDEST PUSH2 0x1574 DUP2 PUSH2 0x1511 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x158D SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x155E JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x1597 JUMPI JUMP JUMPDEST PUSH2 0x159F PUSH2 0x231 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x15CF PUSH1 0x4 DUP3 ADD PUSH2 0x1578 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x15E2 PUSH2 0x15E8 SWAP2 SWAP4 SWAP3 SWAP4 PUSH2 0x243 JUMP JUMPDEST SWAP3 PUSH2 0x243 JUMP JUMPDEST SWAP2 PUSH2 0x15F4 DUP4 DUP3 MUL PUSH2 0x243 JUMP JUMPDEST SWAP3 DUP2 DUP5 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0x1603 JUMPI JUMP JUMPDEST PUSH2 0x1393 JUMP JUMPDEST PUSH1 0x20 PUSH32 0x7700000000000000000000000000000000000000000000000000000000000000 SWAP2 PUSH32 0x5368617265732063616C63756C6174696F6E20776F756C64206F766572666C6F PUSH0 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST PUSH2 0x1662 PUSH1 0x21 PUSH1 0x40 SWAP3 PUSH2 0x32A JUMP JUMPDEST PUSH2 0x166B DUP2 PUSH2 0x1608 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x1684 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x1655 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x168E JUMPI JUMP JUMPDEST PUSH2 0x1696 PUSH2 0x231 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x16C6 PUSH1 0x4 DUP3 ADD PUSH2 0x166F JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH1 0x20 PUSH32 0x6C74000000000000000000000000000000000000000000000000000000000000 SWAP2 PUSH32 0x496E73756666696369656E742061737365747320696E20596561726E20566175 PUSH0 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST PUSH2 0x1724 PUSH1 0x22 PUSH1 0x40 SWAP3 PUSH2 0x32A JUMP JUMPDEST PUSH2 0x172D DUP2 PUSH2 0x16CA JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x1746 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x1717 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x1750 JUMPI JUMP JUMPDEST PUSH2 0x1758 PUSH2 0x231 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x1788 PUSH1 0x4 DUP3 ADD PUSH2 0x1731 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 SWAP1 PUSH2 0x17B5 PUSH2 0x17BC SWAP5 SWAP7 SWAP6 SWAP4 SWAP7 PUSH2 0x17AB PUSH1 0x60 DUP5 ADD SWAP9 PUSH0 DUP6 ADD SWAP1 PUSH2 0x450 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x978 JUMP JUMPDEST ADD SWAP1 PUSH2 0x978 JUMP JUMPDEST JUMP JUMPDEST PUSH0 PUSH32 0x426173652062616C616E636520636865636B206661696C656400000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x17F2 PUSH1 0x19 PUSH1 0x20 SWAP3 PUSH2 0x32A JUMP JUMPDEST PUSH2 0x17FB DUP2 PUSH2 0x17BE JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x1814 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x17E5 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x181E JUMPI JUMP JUMPDEST PUSH2 0x1826 PUSH2 0x231 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x1856 PUSH1 0x4 DUP3 ADD PUSH2 0x17FF JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x1869 PUSH2 0x186F SWAP2 SWAP4 SWAP3 SWAP4 PUSH2 0x243 JUMP JUMPDEST SWAP3 PUSH2 0x243 JUMP JUMPDEST DUP3 SUB SWAP2 DUP3 GT PUSH2 0x187A JUMPI JUMP JUMPDEST PUSH2 0x1393 JUMP JUMPDEST PUSH0 PUSH32 0x48616972637574206578636565647320616D6F756E7400000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x18B3 PUSH1 0x16 PUSH1 0x20 SWAP3 PUSH2 0x32A JUMP JUMPDEST PUSH2 0x18BC DUP2 PUSH2 0x187F JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x18D5 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x18A6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x18DF JUMPI JUMP JUMPDEST PUSH2 0x18E7 PUSH2 0x231 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x1917 PUSH1 0x4 DUP3 ADD PUSH2 0x18C0 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH1 0x20 PUSH32 0x7920686169726375740000000000000000000000000000000000000000000000 SWAP2 PUSH32 0x5365636F6E6461727920686169726375742065786365656473207072696D6172 PUSH0 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST PUSH2 0x1975 PUSH1 0x29 PUSH1 0x40 SWAP3 PUSH2 0x32A JUMP JUMPDEST PUSH2 0x197E DUP2 PUSH2 0x191B JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x1997 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x1968 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x19A1 JUMPI JUMP JUMPDEST PUSH2 0x19A9 PUSH2 0x231 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x19D9 PUSH1 0x4 DUP3 ADD PUSH2 0x1982 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x1A02 PUSH2 0x1A07 SWAP2 PUSH2 0x1208 JUMP JUMPDEST PUSH2 0x19DD JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1A14 SWAP1 SLOAD PUSH2 0x19F6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1A20 SWAP1 PUSH2 0x1263 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0x1A30 DUP3 PUSH2 0x28E JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x1A4B JUMPI PUSH2 0x1A48 SWAP2 PUSH0 ADD PUSH2 0x1A23 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x23B JUMP JUMPDEST PUSH2 0x1A59 DUP2 PUSH2 0x3F3 JUMP JUMPDEST SUB PUSH2 0x1A60 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0x1A71 DUP3 PUSH2 0x1A50 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x1A8C JUMPI PUSH2 0x1A89 SWAP2 PUSH0 ADD PUSH2 0x1A64 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x23B JUMP JUMPDEST SWAP2 PUSH1 0x20 PUSH2 0x1AB2 SWAP3 SWAP5 SWAP4 PUSH2 0x1AAB PUSH1 0x40 DUP3 ADD SWAP7 PUSH0 DUP4 ADD SWAP1 PUSH2 0x978 JUMP JUMPDEST ADD SWAP1 PUSH2 0x450 JUMP JUMPDEST JUMP JUMPDEST PUSH0 PUSH32 0x4661696C656420746F207472616E736665722071756F74654173736574000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x1AE8 PUSH1 0x1D PUSH1 0x20 SWAP3 PUSH2 0x32A JUMP JUMPDEST PUSH2 0x1AF1 DUP2 PUSH2 0x1AB4 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x1B0A SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x1ADB JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x1B14 JUMPI JUMP JUMPDEST PUSH2 0x1B1C PUSH2 0x231 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x1B4C PUSH1 0x4 DUP3 ADD PUSH2 0x1AF5 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH0 SHL SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x1B80 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 PUSH2 0x1B50 JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0x1B9E PUSH2 0x1B99 PUSH2 0x1BA3 SWAP3 PUSH2 0x243 JUMP JUMPDEST PUSH2 0x1016 JUMP JUMPDEST PUSH2 0x243 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x1BBE PUSH2 0x1BB9 PUSH2 0x1BC5 SWAP3 PUSH2 0x1B8A JUMP JUMPDEST PUSH2 0x1BA6 JUMP JUMPDEST DUP3 SLOAD PUSH2 0x1B55 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x1BE5 DUP2 PUSH2 0x1BDF PUSH2 0x1BD9 PUSH0 PUSH2 0x1019 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST GT PUSH2 0x108D JUMP JUMPDEST PUSH2 0x1C0A PUSH2 0x1BF1 CALLER PUSH2 0x3ABC JUMP JUMPDEST PUSH2 0x1C03 PUSH2 0x1BFD DUP5 PUSH2 0x243 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST LT ISZERO PUSH2 0x1129 JUMP JUMPDEST PUSH2 0x1C2D PUSH2 0x1C15 PUSH2 0x298C JUMP JUMPDEST PUSH2 0x1C27 PUSH2 0x1C21 PUSH0 PUSH2 0x1019 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST GT PUSH2 0x11C5 JUMP JUMPDEST PUSH2 0x1C6A PUSH1 0x20 PUSH2 0x1C54 PUSH2 0x1C4F PUSH2 0x1C4A PUSH2 0x1C45 PUSH1 0x1 PUSH2 0x123A JUMP JUMPDEST PUSH2 0x126F JUMP JUMPDEST PUSH2 0x1287 JUMP JUMPDEST PUSH2 0x1293 JUMP JUMPDEST PUSH4 0x313CE567 SWAP1 PUSH2 0x1C62 PUSH2 0x231 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x129F JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x1C7A PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x27DC JUMPI PUSH0 SWAP2 PUSH2 0x27AE JUMPI JUMPDEST POP SWAP1 PUSH2 0x1CC3 PUSH1 0x20 PUSH2 0x1CAD PUSH2 0x1CA8 PUSH2 0x1CA3 PUSH1 0x2 PUSH2 0x130A JUMP JUMPDEST PUSH2 0x1287 JUMP JUMPDEST PUSH2 0x1293 JUMP JUMPDEST PUSH4 0x313CE567 SWAP1 PUSH2 0x1CBB PUSH2 0x231 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x129F JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x1CD3 PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x27A9 JUMPI PUSH0 SWAP2 PUSH2 0x277B JUMPI JUMPDEST POP SWAP1 PUSH2 0x1D30 PUSH1 0x20 PUSH2 0x1CFE PUSH2 0x1CF9 PUSH1 0x1 PUSH2 0x123A JUMP JUMPDEST PUSH2 0x126F JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x1D25 PUSH2 0x1D10 ADDRESS PUSH2 0x1317 JUMP JUMPDEST SWAP3 PUSH2 0x1D19 PUSH2 0x231 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x129F JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x985 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x2776 JUMPI PUSH0 SWAP2 PUSH2 0x2748 JUMPI JUMPDEST POP SWAP1 PUSH2 0x1D95 PUSH1 0x20 PUSH2 0x1D63 PUSH2 0x1D5E PUSH2 0x1D59 PUSH1 0x2 PUSH2 0x130A JUMP JUMPDEST PUSH2 0x135C JUMP JUMPDEST PUSH2 0x1368 JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x1D8A PUSH2 0x1D75 ADDRESS PUSH2 0x1317 JUMP JUMPDEST SWAP3 PUSH2 0x1D7E PUSH2 0x231 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x129F JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x985 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x2743 JUMPI PUSH0 SWAP2 PUSH2 0x2715 JUMPI JUMPDEST POP SWAP4 PUSH2 0x1DF9 PUSH1 0x20 PUSH2 0x1DC7 PUSH2 0x1DC2 PUSH2 0x1DBD PUSH0 PUSH2 0x130A JUMP JUMPDEST PUSH2 0x135C JUMP JUMPDEST PUSH2 0x1368 JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x1DEE PUSH2 0x1DD9 ADDRESS PUSH2 0x1317 JUMP JUMPDEST SWAP3 PUSH2 0x1DE2 PUSH2 0x231 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x129F JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x985 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x2710 JUMPI PUSH0 SWAP2 PUSH2 0x26E2 JUMPI JUMPDEST POP SWAP3 DUP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x12 DUP5 SWAP1 PUSH2 0x1E3C SWAP1 PUSH2 0x1377 JUMP JUMPDEST SWAP1 PUSH2 0x1E46 SWAP2 PUSH2 0x13C0 JUMP JUMPDEST PUSH2 0x1E4F SWAP1 PUSH2 0x13E4 JUMP JUMPDEST PUSH2 0x1E58 SWAP2 PUSH2 0x142D JUMP JUMPDEST PUSH2 0x1E61 SWAP1 PUSH2 0x243 JUMP JUMPDEST SWAP1 PUSH2 0x1E6B SWAP1 PUSH2 0x243 JUMP JUMPDEST GT ISZERO PUSH2 0x1E76 SWAP1 PUSH2 0x14CE JUMP JUMPDEST DUP6 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x12 DUP8 SWAP1 PUSH2 0x1EA5 SWAP1 PUSH2 0x1377 JUMP JUMPDEST SWAP1 PUSH2 0x1EAF SWAP2 PUSH2 0x13C0 JUMP JUMPDEST PUSH2 0x1EB8 SWAP1 PUSH2 0x13E4 JUMP JUMPDEST PUSH2 0x1EC1 SWAP2 PUSH2 0x142D JUMP JUMPDEST PUSH2 0x1ECA SWAP1 PUSH2 0x243 JUMP JUMPDEST SWAP1 PUSH2 0x1ED4 SWAP1 PUSH2 0x243 JUMP JUMPDEST GT ISZERO PUSH2 0x1EDF SWAP1 PUSH2 0x1590 JUMP JUMPDEST PUSH1 0x12 DUP3 SWAP1 PUSH2 0x1EEC SWAP1 PUSH2 0x1377 JUMP JUMPDEST SWAP1 PUSH2 0x1EF6 SWAP2 PUSH2 0x13C0 JUMP JUMPDEST PUSH2 0x1EFF SWAP1 PUSH2 0x13E4 JUMP JUMPDEST PUSH2 0x1F08 SWAP2 PUSH2 0x15D3 JUMP JUMPDEST SWAP5 PUSH1 0x12 DUP6 SWAP1 PUSH2 0x1F16 SWAP1 PUSH2 0x1377 JUMP JUMPDEST SWAP1 PUSH2 0x1F20 SWAP2 PUSH2 0x13C0 JUMP JUMPDEST PUSH2 0x1F29 SWAP1 PUSH2 0x13E4 JUMP JUMPDEST PUSH2 0x1F32 SWAP2 PUSH2 0x15D3 JUMP JUMPDEST SWAP1 DUP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 PUSH2 0x1F5F SWAP2 PUSH2 0x142D JUMP JUMPDEST PUSH2 0x1F68 SWAP1 PUSH2 0x243 JUMP JUMPDEST SWAP1 PUSH2 0x1F72 SWAP1 PUSH2 0x243 JUMP JUMPDEST GT ISZERO PUSH2 0x1F7D SWAP1 PUSH2 0x1687 JUMP JUMPDEST DUP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 PUSH2 0x1FA9 SWAP2 PUSH2 0x142D JUMP JUMPDEST PUSH2 0x1FB2 SWAP1 PUSH2 0x243 JUMP JUMPDEST SWAP1 PUSH2 0x1FBC SWAP1 PUSH2 0x243 JUMP JUMPDEST GT ISZERO PUSH2 0x1FC7 SWAP1 PUSH2 0x1687 JUMP JUMPDEST DUP3 DUP7 PUSH2 0x1FD2 SWAP2 PUSH2 0x15D3 JUMP JUMPDEST PUSH2 0x1FDA PUSH2 0x298C JUMP JUMPDEST PUSH2 0x1FE3 SWAP2 PUSH2 0x142D JUMP JUMPDEST SWAP2 DUP4 SWAP1 PUSH2 0x1FEF SWAP2 PUSH2 0x15D3 JUMP JUMPDEST PUSH2 0x1FF7 PUSH2 0x298C JUMP JUMPDEST PUSH2 0x2000 SWAP2 PUSH2 0x142D JUMP JUMPDEST SWAP3 CALLER SWAP1 PUSH2 0x200C SWAP2 PUSH2 0x48CF JUMP JUMPDEST PUSH1 0x12 PUSH2 0x2017 SWAP1 PUSH2 0x1377 JUMP JUMPDEST SWAP1 PUSH2 0x2021 SWAP2 PUSH2 0x13C0 JUMP JUMPDEST PUSH2 0x202A SWAP1 PUSH2 0x13E4 JUMP JUMPDEST PUSH2 0x2033 SWAP2 PUSH2 0x142D JUMP JUMPDEST SWAP3 PUSH1 0x12 PUSH2 0x203F SWAP1 PUSH2 0x1377 JUMP JUMPDEST SWAP1 PUSH2 0x2049 SWAP2 PUSH2 0x13C0 JUMP JUMPDEST PUSH2 0x2052 SWAP1 PUSH2 0x13E4 JUMP JUMPDEST PUSH2 0x205B SWAP2 PUSH2 0x142D JUMP JUMPDEST SWAP3 DUP3 PUSH2 0x2067 PUSH1 0x1 PUSH2 0x123A JUMP JUMPDEST PUSH2 0x2070 SWAP1 PUSH2 0x126F JUMP JUMPDEST PUSH4 0x7A2D13A PUSH2 0x207D PUSH2 0x231 JUMP JUMPDEST DUP1 SWAP5 PUSH2 0x2089 DUP3 SWAP4 PUSH2 0x129F JUMP JUMPDEST DUP3 MSTORE PUSH1 0x4 DUP3 ADD SWAP1 PUSH2 0x2099 SWAP2 PUSH2 0x45D JUMP JUMPDEST SUB DUP2 GAS SWAP4 PUSH1 0x20 SWAP5 STATICCALL DUP1 ISZERO PUSH2 0x26DD JUMPI PUSH2 0x20BF PUSH2 0x20C5 SWAP2 PUSH2 0x20CC SWAP5 PUSH0 SWAP2 PUSH2 0x26AF JUMPI JUMPDEST POP PUSH2 0x243 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST GT ISZERO PUSH2 0x1749 JUMP JUMPDEST PUSH1 0x20 PUSH2 0x20E0 PUSH2 0x20DB PUSH1 0x1 PUSH2 0x123A JUMP JUMPDEST PUSH2 0x126F JUMP JUMPDEST PUSH4 0xBA087652 SWAP4 SWAP1 PUSH2 0x2115 PUSH0 PUSH2 0x20F4 ADDRESS PUSH2 0x1317 JUMP JUMPDEST SWAP7 PUSH2 0x2120 PUSH2 0x2101 ADDRESS PUSH2 0x1317 JUMP JUMPDEST PUSH2 0x2109 PUSH2 0x231 JUMP JUMPDEST SWAP10 DUP11 SWAP8 DUP9 SWAP7 DUP8 SWAP6 PUSH2 0x129F JUMP JUMPDEST DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0x178C JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x26AA JUMPI PUSH2 0x2182 SWAP3 PUSH2 0x267E JUMPI JUMPDEST POP PUSH1 0x20 PUSH2 0x2150 PUSH2 0x214B PUSH2 0x2146 PUSH0 PUSH2 0x130A JUMP JUMPDEST PUSH2 0x135C JUMP JUMPDEST PUSH2 0x1368 JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x2177 PUSH2 0x2162 ADDRESS PUSH2 0x1317 JUMP JUMPDEST SWAP3 PUSH2 0x216B PUSH2 0x231 JUMP JUMPDEST SWAP7 DUP8 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x129F JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x985 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x2679 JUMPI PUSH2 0x21BA SWAP3 PUSH0 SWAP2 PUSH2 0x264B JUMPI JUMPDEST POP PUSH2 0x21B5 DUP2 PUSH2 0x21AE PUSH2 0x21A8 DUP6 PUSH2 0x243 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST LT ISZERO PUSH2 0x1817 JUMP JUMPDEST PUSH2 0x185A JUMP JUMPDEST DUP1 PUSH2 0x21CD PUSH2 0x21C7 PUSH0 PUSH2 0x1019 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST GT PUSH2 0x2330 JUMPI JUMPDEST POP DUP1 PUSH2 0x21E7 PUSH2 0x21E1 PUSH0 PUSH2 0x1019 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST GT PUSH2 0x2317 JUMPI JUMPDEST POP POP PUSH2 0x2201 PUSH2 0x21FC PUSH1 0x1 PUSH2 0x123A JUMP JUMPDEST PUSH2 0x126F JUMP JUMPDEST PUSH2 0x2250 PUSH4 0x7A2D13A SWAP2 PUSH1 0x20 PUSH2 0x221E PUSH2 0x2219 PUSH1 0x1 PUSH2 0x123A JUMP JUMPDEST PUSH2 0x126F JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x2245 PUSH2 0x2230 ADDRESS PUSH2 0x1317 JUMP JUMPDEST SWAP3 PUSH2 0x2239 PUSH2 0x231 JUMP JUMPDEST SWAP7 DUP8 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x129F JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x985 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x2312 JUMPI PUSH2 0x228D SWAP4 PUSH1 0x20 SWAP4 PUSH0 SWAP4 PUSH2 0x22DF JUMPI JUMPDEST POP PUSH2 0x2282 SWAP1 PUSH2 0x2276 PUSH2 0x231 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x129F JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x45D JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x22DA JUMPI PUSH2 0x22AA SWAP2 PUSH0 SWAP2 PUSH2 0x22AC JUMPI JUMPDEST POP PUSH1 0x5 PUSH2 0x1BA9 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x22CD SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x22D3 JUMPI JUMPDEST PUSH2 0x22C5 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1332 JUMP JUMPDEST PUSH0 PUSH2 0x22A2 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x22BB JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST PUSH2 0x2282 SWAP2 SWAP4 POP PUSH2 0x2304 SWAP1 DUP6 RETURNDATASIZE DUP2 GT PUSH2 0x230B JUMPI JUMPDEST PUSH2 0x22FC DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1332 JUMP JUMPDEST SWAP3 SWAP1 PUSH2 0x2269 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x22F2 JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST PUSH2 0x2329 SWAP2 PUSH2 0x2324 SWAP2 PUSH2 0x4BD1 JUMP JUMPDEST PUSH2 0x1B0D JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x21ED JUMP JUMPDEST PUSH2 0x2339 DUP2 PUSH2 0x494E JUMP JUMPDEST SWAP1 PUSH2 0x2357 DUP3 PUSH2 0x2350 PUSH2 0x234A DUP5 PUSH2 0x243 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST GT ISZERO PUSH2 0x18D8 JUMP JUMPDEST PUSH2 0x2362 DUP2 DUP4 SWAP1 PUSH2 0x185A JUMP JUMPDEST POP PUSH2 0x236C DUP3 PUSH2 0x494E JUMP JUMPDEST PUSH2 0x2389 DUP2 PUSH2 0x2382 PUSH2 0x237C DUP7 PUSH2 0x243 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST GT ISZERO PUSH2 0x199A JUMP JUMPDEST PUSH2 0x23B6 PUSH1 0x20 PUSH2 0x23A0 PUSH2 0x239B PUSH1 0x3 PUSH2 0x1A0A JUMP JUMPDEST PUSH2 0x1A17 JUMP JUMPDEST PUSH4 0x4CC7325 SWAP1 PUSH2 0x23AE PUSH2 0x231 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x129F JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x23C6 PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x2646 JUMPI PUSH0 SWAP2 PUSH2 0x2618 JUMPI JUMPDEST POP SWAP2 PUSH2 0x2407 PUSH1 0x20 PUSH2 0x23F1 PUSH2 0x23EC PUSH1 0x3 PUSH2 0x1A0A JUMP JUMPDEST PUSH2 0x1A17 JUMP JUMPDEST PUSH4 0x3B19E84A SWAP1 PUSH2 0x23FF PUSH2 0x231 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x129F JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x2417 PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x2613 JUMPI PUSH0 SWAP2 PUSH2 0x25E5 JUMPI JUMPDEST POP SWAP4 PUSH1 0x20 PUSH2 0x2446 PUSH2 0x2441 PUSH2 0x243C PUSH0 PUSH2 0x130A JUMP JUMPDEST PUSH2 0x135C JUMP JUMPDEST PUSH2 0x1368 JUMP JUMPDEST SWAP3 PUSH4 0xA9059CBB SWAP4 PUSH2 0x2475 PUSH0 PUSH2 0x245D DUP13 SWAP5 DUP8 SWAP1 PUSH2 0x185A JUMP JUMPDEST SWAP7 PUSH2 0x2480 PUSH2 0x2469 PUSH2 0x231 JUMP JUMPDEST SWAP9 DUP10 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x129F JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x1A91 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x25E0 JUMPI PUSH1 0x20 SWAP3 PUSH2 0x25B5 JUMPI JUMPDEST POP PUSH2 0x24AD PUSH2 0x24A8 PUSH2 0x24A3 PUSH0 PUSH2 0x130A JUMP JUMPDEST PUSH2 0x135C JUMP JUMPDEST PUSH2 0x1368 JUMP JUMPDEST PUSH2 0x24DA PUSH0 PUSH2 0x24C2 PUSH4 0xA9059CBB SWAP8 SWAP5 DUP8 SWAP1 PUSH2 0x185A JUMP JUMPDEST SWAP7 PUSH2 0x24E5 PUSH2 0x24CE PUSH2 0x231 JUMP JUMPDEST SWAP9 DUP10 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x129F JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x1A91 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x25B0 JUMPI PUSH1 0x20 SWAP3 PUSH2 0x2585 JUMPI JUMPDEST POP PUSH2 0x2512 PUSH2 0x250D PUSH2 0x2508 PUSH0 PUSH2 0x130A JUMP JUMPDEST PUSH2 0x135C JUMP JUMPDEST PUSH2 0x1368 JUMP JUMPDEST PUSH2 0x2535 PUSH0 PUSH4 0xA9059CBB SWAP6 SWAP4 SWAP6 PUSH2 0x2540 PUSH2 0x2529 PUSH2 0x231 JUMP JUMPDEST SWAP8 DUP9 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x129F JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x1A91 JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x2580 JUMPI PUSH2 0x2554 JUMPI JUMPDEST PUSH2 0x21D3 JUMP JUMPDEST PUSH2 0x2574 SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2579 JUMPI JUMPDEST PUSH2 0x256C DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1A73 JUMP JUMPDEST PUSH2 0x254F JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2562 JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST PUSH2 0x25A4 SWAP1 DUP4 RETURNDATASIZE DUP2 GT PUSH2 0x25A9 JUMPI JUMPDEST PUSH2 0x259C DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1A73 JUMP JUMPDEST PUSH2 0x24F8 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2592 JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST PUSH2 0x25D4 SWAP1 DUP4 RETURNDATASIZE DUP2 GT PUSH2 0x25D9 JUMPI JUMPDEST PUSH2 0x25CC DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1A73 JUMP JUMPDEST PUSH2 0x2493 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x25C2 JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST PUSH2 0x2606 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x260C JUMPI JUMPDEST PUSH2 0x25FE DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1A32 JUMP JUMPDEST PUSH0 PUSH2 0x2429 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x25F4 JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST PUSH2 0x2639 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x263F JUMPI JUMPDEST PUSH2 0x2631 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1A32 JUMP JUMPDEST PUSH0 PUSH2 0x23D8 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2627 JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST PUSH2 0x266C SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2672 JUMPI JUMPDEST PUSH2 0x2664 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1332 JUMP JUMPDEST PUSH0 PUSH2 0x2197 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x265A JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST PUSH2 0x269E SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x26A3 JUMPI JUMPDEST PUSH2 0x2696 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1332 JUMP JUMPDEST PUSH2 0x2134 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x268C JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST PUSH2 0x26D0 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x26D6 JUMPI JUMPDEST PUSH2 0x26C8 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1332 JUMP JUMPDEST PUSH0 PUSH2 0x20B9 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x26BE JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST PUSH2 0x2703 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2709 JUMPI JUMPDEST PUSH2 0x26FB DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1332 JUMP JUMPDEST PUSH0 PUSH2 0x1E0B JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x26F1 JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST PUSH2 0x2736 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x273C JUMPI JUMPDEST PUSH2 0x272E DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1332 JUMP JUMPDEST PUSH0 PUSH2 0x1DA7 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2724 JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST PUSH2 0x2769 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x276F JUMPI JUMPDEST PUSH2 0x2761 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1332 JUMP JUMPDEST PUSH0 PUSH2 0x1D42 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2757 JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST PUSH2 0x279C SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x27A2 JUMPI JUMPDEST PUSH2 0x2794 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x12C8 JUMP JUMPDEST PUSH0 PUSH2 0x1CE5 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x278A JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST PUSH2 0x27CF SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x27D5 JUMPI JUMPDEST PUSH2 0x27C7 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x12C8 JUMP JUMPDEST PUSH0 PUSH2 0x1C8C JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x27BD JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST SWAP1 PUSH2 0x27EB SWAP2 PUSH2 0xFE3 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH1 0x1 PUSH1 0x2 DUP4 DIV SWAP3 AND DUP1 ISZERO PUSH2 0x283F JUMPI JUMPDEST PUSH1 0x20 DUP4 LT EQ PUSH2 0x283A JUMPI JUMP JUMPDEST PUSH2 0x27F2 JUMP JUMPDEST SWAP2 PUSH1 0x7F AND SWAP2 PUSH2 0x282F JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP2 MSTORE ADD SWAP1 JUMP JUMPDEST PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP1 PUSH0 SWAP3 SWAP2 DUP1 SLOAD SWAP1 PUSH2 0x2875 PUSH2 0x286E DUP4 PUSH2 0x281F JUMP JUMPDEST DUP1 SWAP5 PUSH2 0x2849 JUMP JUMPDEST SWAP2 PUSH1 0x1 DUP2 AND SWAP1 DUP2 PUSH0 EQ PUSH2 0x28CC JUMPI POP PUSH1 0x1 EQ PUSH2 0x2890 JUMPI JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x289D SWAP2 SWAP3 SWAP4 SWAP5 POP PUSH2 0x2852 JUMP JUMPDEST SWAP2 PUSH0 SWAP3 JUMPDEST DUP2 DUP5 LT PUSH2 0x28B4 JUMPI POP POP ADD SWAP1 PUSH0 DUP1 DUP1 PUSH2 0x288B JUMP JUMPDEST PUSH1 0x1 DUP2 PUSH1 0x20 SWAP3 SWAP6 SWAP4 SWAP6 SLOAD DUP5 DUP7 ADD MSTORE ADD SWAP2 ADD SWAP3 SWAP1 PUSH2 0x28A1 JUMP JUMPDEST SWAP3 SWAP5 SWAP6 POP POP POP PUSH1 0xFF NOT AND DUP3 MSTORE ISZERO ISZERO PUSH1 0x20 MUL ADD SWAP1 PUSH0 DUP1 DUP1 PUSH2 0x288B JUMP JUMPDEST SWAP1 PUSH2 0x28F1 SWAP2 PUSH2 0x285B JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x2914 PUSH2 0x290D SWAP3 PUSH2 0x2904 PUSH2 0x231 JUMP JUMPDEST SWAP4 DUP5 DUP1 SWAP3 PUSH2 0x28E7 JUMP JUMPDEST SUB DUP4 PUSH2 0x6B7 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x291F SWAP1 PUSH2 0x28F4 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x292A PUSH2 0x27ED JUMP JUMPDEST POP PUSH2 0x293E PUSH1 0x3 PUSH2 0x2938 PUSH2 0x4FA0 JUMP JUMPDEST ADD PUSH2 0x2916 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x2962 SWAP2 PUSH2 0x2951 PUSH2 0x2941 JUMP JUMPDEST POP PUSH2 0x295A PUSH2 0x4FC4 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH2 0x4FD1 JUMP JUMPDEST PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x2977 PUSH2 0x297C SWAP2 PUSH2 0x1208 JUMP JUMPDEST PUSH2 0x5AD JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2989 SWAP1 SLOAD PUSH2 0x296B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2994 PUSH2 0x2967 JUMP JUMPDEST POP PUSH2 0x29A8 PUSH1 0x2 PUSH2 0x29A2 PUSH2 0x4FA0 JUMP JUMPDEST ADD PUSH2 0x297F JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP2 PUSH2 0x29D5 SWAP3 PUSH2 0x29B8 PUSH2 0x2941 JUMP JUMPDEST POP PUSH2 0x29CD PUSH2 0x29C4 PUSH2 0x4FC4 JUMP JUMPDEST DUP3 SWAP1 DUP5 SWAP2 PUSH2 0x5021 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH2 0x50EC JUMP JUMPDEST PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH2 0x29E3 SWAP1 PUSH2 0x1247 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x29EF SWAP1 PUSH2 0x29DA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x29FB SWAP1 PUSH2 0x1263 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x40 SWAP1 PUSH2 0x2A27 PUSH2 0x2A2E SWAP5 SWAP7 SWAP6 SWAP4 SWAP7 PUSH2 0x2A1D PUSH1 0x60 DUP5 ADD SWAP9 PUSH0 DUP6 ADD SWAP1 PUSH2 0x978 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x978 JUMP JUMPDEST ADD SWAP1 PUSH2 0x450 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2A3F PUSH2 0x2A45 SWAP2 SWAP4 SWAP3 SWAP4 PUSH2 0x243 JUMP JUMPDEST SWAP3 PUSH2 0x243 JUMP JUMPDEST DUP3 ADD DUP1 SWAP3 GT PUSH2 0x2A50 JUMPI JUMP JUMPDEST PUSH2 0x1393 JUMP JUMPDEST PUSH2 0x2A5D PUSH2 0x2967 JUMP JUMPDEST POP PUSH2 0x2A8B PUSH1 0x20 PUSH2 0x2A75 PUSH2 0x2A70 PUSH1 0x3 PUSH2 0x1A0A JUMP JUMPDEST PUSH2 0x1A17 JUMP JUMPDEST PUSH4 0xBB3BA04C SWAP1 PUSH2 0x2A83 PUSH2 0x231 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x129F JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x2A9B PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x2F56 JUMPI PUSH2 0x2AB6 SWAP2 PUSH0 SWAP2 PUSH2 0x2F28 JUMPI JUMPDEST POP PUSH2 0x29E6 JUMP JUMPDEST PUSH2 0x2AE3 PUSH1 0x20 PUSH2 0x2ACD PUSH2 0x2AC8 PUSH1 0x3 PUSH2 0x1A0A JUMP JUMPDEST PUSH2 0x1A17 JUMP JUMPDEST PUSH4 0x1BF01E9B SWAP1 PUSH2 0x2ADB PUSH2 0x231 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x129F JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x2AF3 PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x2F23 JUMPI PUSH0 SWAP2 PUSH2 0x2EF5 JUMPI JUMPDEST POP SWAP1 PUSH2 0x2B10 PUSH0 PUSH2 0x1019 JUMP JUMPDEST PUSH2 0x2B59 PUSH1 0x20 PUSH2 0x2B27 PUSH2 0x2B22 PUSH1 0x1 PUSH2 0x123A JUMP JUMPDEST PUSH2 0x126F JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x2B4E PUSH2 0x2B39 ADDRESS PUSH2 0x1317 JUMP JUMPDEST SWAP3 PUSH2 0x2B42 PUSH2 0x231 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x129F JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x985 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x2EF0 JUMPI PUSH2 0x2BAC SWAP2 PUSH1 0x20 SWAP2 PUSH0 SWAP2 PUSH2 0x2EC3 JUMPI JUMPDEST POP PUSH2 0x2B85 PUSH2 0x2B80 PUSH1 0x1 PUSH2 0x123A JUMP JUMPDEST PUSH2 0x126F JUMP JUMPDEST PUSH2 0x2BA1 PUSH4 0x7A2D13A PUSH2 0x2B95 PUSH2 0x231 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x129F JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x45D JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x2EBE JUMPI PUSH0 SWAP2 PUSH2 0x2E90 JUMPI JUMPDEST POP PUSH2 0x2C10 PUSH1 0x20 PUSH2 0x2BDE PUSH2 0x2BD9 PUSH2 0x2BD4 PUSH1 0x2 PUSH2 0x130A JUMP JUMPDEST PUSH2 0x135C JUMP JUMPDEST PUSH2 0x1368 JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x2C05 PUSH2 0x2BF0 ADDRESS PUSH2 0x1317 JUMP JUMPDEST SWAP3 PUSH2 0x2BF9 PUSH2 0x231 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x129F JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x985 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x2E8B JUMPI PUSH0 SWAP2 PUSH2 0x2E5D JUMPI JUMPDEST POP PUSH2 0x2C2C PUSH0 PUSH2 0x130A JUMP JUMPDEST PUSH2 0x2C3E PUSH2 0x2C38 DUP8 PUSH2 0x282 JUMP JUMPDEST SWAP2 PUSH2 0x282 JUMP JUMPDEST SUB PUSH2 0x2DC1 JUMPI JUMPDEST PUSH1 0x20 PUSH2 0x2C4F DUP6 PUSH2 0x29F2 JUMP JUMPDEST PUSH4 0x248391FF SWAP1 PUSH2 0x2C84 PUSH2 0x2C62 PUSH1 0x2 PUSH2 0x130A JUMP JUMPDEST SWAP3 PUSH2 0x2C8F PUSH2 0x2C6F PUSH0 PUSH2 0x130A JUMP JUMPDEST SWAP7 PUSH2 0x2C78 PUSH2 0x231 JUMP JUMPDEST SWAP8 DUP9 SWAP7 DUP8 SWAP6 DUP7 SWAP6 PUSH2 0x129F JUMP JUMPDEST DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0x29FE JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x2DBC JUMPI PUSH2 0x2CB3 SWAP4 PUSH2 0x2CAE SWAP3 PUSH0 SWAP3 PUSH2 0x2D8C JUMPI JUMPDEST POP PUSH2 0x2A30 JUMP JUMPDEST PUSH2 0x2A30 JUMP JUMPDEST SWAP2 PUSH2 0x2CBC PUSH2 0x2F75 JUMP JUMPDEST SWAP2 PUSH2 0x2CC6 PUSH0 PUSH2 0x130A JUMP JUMPDEST PUSH2 0x2CD8 PUSH2 0x2CD2 DUP5 PUSH2 0x282 JUMP JUMPDEST SWAP2 PUSH2 0x282 JUMP JUMPDEST SUB PUSH2 0x2CEE JUMPI JUMPDEST POP POP SWAP1 PUSH2 0x2CEB SWAP2 SWAP1 PUSH2 0x2A30 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2CF9 PUSH1 0x20 SWAP2 PUSH2 0x29F2 JUMP JUMPDEST SWAP2 PUSH4 0x248391FF SWAP3 PUSH2 0x2D26 PUSH2 0x2D0C PUSH0 PUSH2 0x130A JUMP JUMPDEST SWAP3 SWAP5 PUSH2 0x2D31 DUP8 PUSH2 0x2D1A PUSH2 0x231 JUMP JUMPDEST SWAP8 DUP9 SWAP7 DUP8 SWAP6 DUP7 SWAP6 PUSH2 0x129F JUMP JUMPDEST DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0x29FE JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x2D87 JUMPI PUSH2 0x2CEB SWAP4 PUSH2 0x2D50 SWAP3 PUSH0 SWAP3 PUSH2 0x2D57 JUMPI JUMPDEST POP PUSH2 0x2A30 JUMP JUMPDEST SWAP2 PUSH0 PUSH2 0x2CDE JUMP JUMPDEST PUSH2 0x2D79 SWAP2 SWAP3 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2D80 JUMPI JUMPDEST PUSH2 0x2D71 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1332 JUMP JUMPDEST SWAP1 PUSH0 PUSH2 0x2D4A JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2D67 JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST PUSH2 0x2DAE SWAP2 SWAP3 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2DB5 JUMPI JUMPDEST PUSH2 0x2DA6 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1332 JUMP JUMPDEST SWAP1 PUSH0 PUSH2 0x2CA8 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2D9C JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST SWAP2 PUSH2 0x2DCB DUP5 PUSH2 0x29F2 JUMP JUMPDEST SWAP1 PUSH1 0x20 PUSH4 0x248391FF SWAP3 PUSH2 0x2DDD PUSH0 PUSH2 0x130A JUMP JUMPDEST SWAP1 PUSH2 0x2DFB DUP10 SWAP6 PUSH2 0x2E06 DUP9 PUSH2 0x2DEF PUSH2 0x231 JUMP JUMPDEST SWAP9 DUP10 SWAP7 DUP8 SWAP6 DUP7 SWAP6 PUSH2 0x129F JUMP JUMPDEST DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0x29FE JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x2E58 JUMPI PUSH2 0x2E22 SWAP3 PUSH0 SWAP3 PUSH2 0x2E28 JUMPI JUMPDEST POP PUSH2 0x2A30 JUMP JUMPDEST SWAP2 PUSH2 0x2C44 JUMP JUMPDEST PUSH2 0x2E4A SWAP2 SWAP3 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2E51 JUMPI JUMPDEST PUSH2 0x2E42 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1332 JUMP JUMPDEST SWAP1 PUSH0 PUSH2 0x2E1C JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2E38 JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST PUSH2 0x2E7E SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2E84 JUMPI JUMPDEST PUSH2 0x2E76 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1332 JUMP JUMPDEST PUSH0 PUSH2 0x2C22 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2E6C JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST PUSH2 0x2EB1 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2EB7 JUMPI JUMPDEST PUSH2 0x2EA9 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1332 JUMP JUMPDEST PUSH0 PUSH2 0x2BBE JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2E9F JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST PUSH2 0x2EE3 SWAP2 POP DUP3 RETURNDATASIZE DUP2 GT PUSH2 0x2EE9 JUMPI JUMPDEST PUSH2 0x2EDB DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1332 JUMP JUMPDEST PUSH0 PUSH2 0x2B72 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2ED1 JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST PUSH2 0x2F16 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2F1C JUMPI JUMPDEST PUSH2 0x2F0E DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1A32 JUMP JUMPDEST PUSH0 PUSH2 0x2B05 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2F04 JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST PUSH2 0x2F49 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2F4F JUMPI JUMPDEST PUSH2 0x2F41 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1A32 JUMP JUMPDEST PUSH0 PUSH2 0x2AB0 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2F37 JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x2F67 PUSH2 0x2F5B JUMP JUMPDEST POP PUSH2 0x2F72 PUSH1 0x12 PUSH2 0x1377 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2F7D PUSH2 0x2967 JUMP JUMPDEST POP PUSH2 0x2F90 PUSH2 0x2F8B PUSH1 0x1 PUSH2 0x123A JUMP JUMPDEST PUSH2 0x126F JUMP JUMPDEST PUSH2 0x2FDF PUSH4 0x7A2D13A SWAP2 PUSH1 0x20 PUSH2 0x2FAD PUSH2 0x2FA8 PUSH1 0x1 PUSH2 0x123A JUMP JUMPDEST PUSH2 0x126F JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x2FD4 PUSH2 0x2FBF ADDRESS PUSH2 0x1317 JUMP JUMPDEST SWAP3 PUSH2 0x2FC8 PUSH2 0x231 JUMP JUMPDEST SWAP7 DUP8 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x129F JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x985 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x30DF JUMPI PUSH2 0x301C SWAP4 PUSH1 0x20 SWAP4 PUSH0 SWAP4 PUSH2 0x30AC JUMPI JUMPDEST POP PUSH2 0x3011 SWAP1 PUSH2 0x3005 PUSH2 0x231 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x129F JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x45D JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x30A7 JUMPI PUSH0 SWAP2 PUSH2 0x3079 JUMPI JUMPDEST POP DUP1 PUSH2 0x304B PUSH2 0x3045 PUSH2 0x3040 PUSH1 0x5 PUSH2 0x297F JUMP JUMPDEST PUSH2 0x243 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST GT PUSH0 EQ PUSH2 0x306A JUMPI PUSH2 0x3066 SWAP1 PUSH2 0x3060 PUSH1 0x5 PUSH2 0x297F JUMP JUMPDEST SWAP1 PUSH2 0x185A JUMP JUMPDEST JUMPDEST SWAP1 JUMP JUMPDEST POP PUSH2 0x3074 PUSH0 PUSH2 0x1019 JUMP JUMPDEST PUSH2 0x3067 JUMP JUMPDEST PUSH2 0x309A SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x30A0 JUMPI JUMPDEST PUSH2 0x3092 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1332 JUMP JUMPDEST PUSH0 PUSH2 0x302E JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x3088 JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST PUSH2 0x3011 SWAP2 SWAP4 POP PUSH2 0x30D1 SWAP1 DUP6 RETURNDATASIZE DUP2 GT PUSH2 0x30D8 JUMPI JUMPDEST PUSH2 0x30C9 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1332 JUMP JUMPDEST SWAP3 SWAP1 PUSH2 0x2FF8 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x30BF JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST PUSH2 0x30EC PUSH2 0x51C9 JUMP JUMPDEST PUSH2 0x30F4 PUSH2 0x30F6 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x30FE PUSH2 0x52D6 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x3108 PUSH2 0x30E4 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x311C SWAP2 PUSH2 0x3117 PUSH2 0x52EC JUMP JUMPDEST PUSH2 0x311E JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x3131 SWAP2 PUSH2 0x312C DUP2 PUSH2 0x53BE JUMP JUMPDEST PUSH2 0x542E JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x313D SWAP2 PUSH2 0x310A JUMP JUMPDEST JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x3154 SWAP1 PUSH2 0x314F PUSH2 0x556C JUMP JUMPDEST PUSH2 0x31A2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x316E PUSH2 0x3169 PUSH2 0x3173 SWAP3 PUSH2 0x3157 JUMP JUMPDEST PUSH2 0x1B50 JUMP JUMPDEST PUSH2 0x7EB JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x319F PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC PUSH2 0x315A JUMP JUMPDEST SWAP1 JUMP JUMPDEST POP PUSH2 0x31AB PUSH2 0x3176 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x31BE PUSH2 0x31B9 PUSH2 0x313F JUMP JUMPDEST PUSH2 0x3143 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x31D3 PUSH2 0x31D8 SWAP2 PUSH2 0x1208 JUMP JUMPDEST PUSH2 0x31C1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x31E5 SWAP1 SLOAD PUSH2 0x31C7 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x31F0 PUSH2 0x2941 JUMP JUMPDEST POP PUSH2 0x3203 PUSH0 PUSH2 0x31FD PUSH2 0x55EA JUMP JUMPDEST ADD PUSH2 0x31DB JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x3218 SWAP2 PUSH2 0x3213 PUSH2 0x47BC JUMP JUMPDEST PUSH2 0x3222 JUMP JUMPDEST PUSH2 0x3220 PUSH2 0x4868 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x3234 SWAP2 PUSH2 0x322F PUSH2 0x4885 JUMP JUMPDEST PUSH2 0x32F4 JUMP JUMPDEST JUMP JUMPDEST PUSH0 PUSH32 0x416D6F756E74206D7573742062652067726561746572207468616E207A65726F SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x3269 PUSH1 0x20 DUP1 SWAP3 PUSH2 0x32A JUMP JUMPDEST PUSH2 0x3272 DUP2 PUSH2 0x3236 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x328B SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x325D JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x3295 JUMPI JUMP JUMPDEST PUSH2 0x329D PUSH2 0x231 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x32CD PUSH1 0x4 DUP3 ADD PUSH2 0x3276 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP2 PUSH1 0x20 PUSH2 0x32F2 SWAP3 SWAP5 SWAP4 PUSH2 0x32EB PUSH1 0x40 DUP3 ADD SWAP7 PUSH0 DUP4 ADD SWAP1 PUSH2 0x450 JUMP JUMPDEST ADD SWAP1 PUSH2 0x978 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x3310 DUP2 PUSH2 0x330A PUSH2 0x3304 PUSH0 PUSH2 0x1019 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST GT PUSH2 0x328E JUMP JUMPDEST PUSH2 0x3318 PUSH2 0x562A JUMP JUMPDEST PUSH2 0x3331 PUSH2 0x332C PUSH2 0x3327 PUSH0 PUSH2 0x130A JUMP JUMPDEST PUSH2 0x135C JUMP JUMPDEST PUSH2 0x1368 JUMP JUMPDEST PUSH1 0x20 PUSH4 0x23B872DD SWAP2 CALLER SWAP1 PUSH2 0x3361 PUSH0 PUSH2 0x3348 ADDRESS PUSH2 0x1317 JUMP JUMPDEST SWAP6 PUSH2 0x336C DUP9 PUSH2 0x3355 PUSH2 0x231 JUMP JUMPDEST SWAP9 DUP10 SWAP8 DUP9 SWAP7 DUP8 SWAP6 PUSH2 0x129F JUMP JUMPDEST DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0x29FE JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x3A89 JUMPI PUSH2 0x3A5D JUMPI JUMPDEST POP PUSH2 0x33A9 PUSH1 0x20 PUSH2 0x3393 PUSH2 0x338E PUSH1 0x3 PUSH2 0x1A0A JUMP JUMPDEST PUSH2 0x1A17 JUMP JUMPDEST PUSH4 0x4CC7325 SWAP1 PUSH2 0x33A1 PUSH2 0x231 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x129F JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x33B9 PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x3A58 JUMPI PUSH0 SWAP2 PUSH2 0x3A2A JUMPI JUMPDEST POP PUSH2 0x33F9 PUSH1 0x20 PUSH2 0x33E3 PUSH2 0x33DE PUSH1 0x3 PUSH2 0x1A0A JUMP JUMPDEST PUSH2 0x1A17 JUMP JUMPDEST PUSH4 0x3B19E84A SWAP1 PUSH2 0x33F1 PUSH2 0x231 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x129F JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x3409 PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x3A25 JUMPI PUSH0 SWAP2 PUSH2 0x39F7 JUMPI JUMPDEST POP SWAP2 PUSH2 0x3426 DUP2 PUSH2 0x494E JUMP JUMPDEST SWAP2 PUSH2 0x3430 DUP4 PUSH2 0x494E JUMP JUMPDEST PUSH1 0x20 PUSH2 0x344B PUSH2 0x3446 PUSH2 0x3441 PUSH0 PUSH2 0x130A JUMP JUMPDEST PUSH2 0x135C JUMP JUMPDEST PUSH2 0x1368 JUMP JUMPDEST PUSH4 0xA9059CBB SWAP4 SWAP1 PUSH2 0x3479 PUSH0 PUSH2 0x3461 DUP10 DUP8 SWAP1 PUSH2 0x185A JUMP JUMPDEST SWAP7 PUSH2 0x3484 PUSH2 0x346D PUSH2 0x231 JUMP JUMPDEST SWAP9 DUP10 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x129F JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x1A91 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x39F2 JUMPI PUSH1 0x20 SWAP3 PUSH2 0x39C7 JUMPI JUMPDEST POP PUSH2 0x34B1 PUSH2 0x34AC PUSH2 0x34A7 PUSH0 PUSH2 0x130A JUMP JUMPDEST PUSH2 0x135C JUMP JUMPDEST PUSH2 0x1368 JUMP JUMPDEST PUSH2 0x34D4 PUSH0 PUSH4 0xA9059CBB SWAP8 SWAP4 SWAP8 PUSH2 0x34DF PUSH2 0x34C8 PUSH2 0x231 JUMP JUMPDEST SWAP10 DUP11 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x129F JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x1A91 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP3 DUP4 ISZERO PUSH2 0x39C2 JUMPI PUSH2 0x34F9 SWAP4 PUSH2 0x3996 JUMPI JUMPDEST POP PUSH2 0x185A JUMP JUMPDEST SWAP1 PUSH2 0x3513 PUSH2 0x350E PUSH2 0x3509 PUSH0 PUSH2 0x130A JUMP JUMPDEST PUSH2 0x135C JUMP JUMPDEST PUSH2 0x1368 JUMP JUMPDEST PUSH1 0x20 PUSH4 0x95EA7B3 SWAP2 PUSH2 0x352D PUSH2 0x3528 PUSH1 0x1 PUSH2 0x123A JUMP JUMPDEST PUSH2 0x126F JUMP JUMPDEST SWAP1 PUSH2 0x354B PUSH0 DUP8 SWAP6 PUSH2 0x3556 PUSH2 0x353F PUSH2 0x231 JUMP JUMPDEST SWAP8 DUP9 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x129F JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x1A91 JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x3991 JUMPI PUSH2 0x3965 JUMPI JUMPDEST POP PUSH2 0x3578 PUSH2 0x3573 PUSH1 0x1 PUSH2 0x123A JUMP JUMPDEST PUSH2 0x126F JUMP JUMPDEST SWAP2 PUSH1 0x20 PUSH4 0x6E553F65 SWAP4 DUP3 SWAP1 PUSH2 0x35A8 PUSH0 PUSH2 0x3590 ADDRESS PUSH2 0x1317 JUMP JUMPDEST SWAP8 PUSH2 0x35B3 PUSH2 0x359C PUSH2 0x231 JUMP JUMPDEST SWAP10 DUP11 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x129F JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x32D1 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP3 DUP4 ISZERO PUSH2 0x3960 JUMPI PUSH2 0x35F9 SWAP4 PUSH2 0x3934 JUMPI JUMPDEST POP PUSH1 0x20 PUSH2 0x35E3 PUSH2 0x35DE PUSH2 0x35D9 PUSH0 PUSH2 0x130A JUMP JUMPDEST PUSH2 0x1287 JUMP JUMPDEST PUSH2 0x1293 JUMP JUMPDEST PUSH4 0x313CE567 SWAP1 PUSH2 0x35F1 PUSH2 0x231 JUMP JUMPDEST SWAP6 DUP7 SWAP3 PUSH2 0x129F JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x3609 PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x392F JUMPI PUSH2 0x3659 SWAP4 PUSH0 SWAP2 PUSH2 0x3901 JUMPI JUMPDEST POP PUSH1 0x20 PUSH2 0x3643 PUSH2 0x363E PUSH2 0x3639 PUSH2 0x3634 PUSH1 0x1 PUSH2 0x123A JUMP JUMPDEST PUSH2 0x126F JUMP JUMPDEST PUSH2 0x1287 JUMP JUMPDEST PUSH2 0x1293 JUMP JUMPDEST PUSH4 0x313CE567 SWAP1 PUSH2 0x3651 PUSH2 0x231 JUMP JUMPDEST SWAP7 DUP8 SWAP3 PUSH2 0x129F JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x3669 PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x38FC JUMPI PUSH2 0x36D3 PUSH2 0x36DE SWAP4 PUSH2 0x36D8 SWAP3 PUSH2 0x36E4 SWAP8 PUSH0 SWAP2 PUSH2 0x38CE JUMPI JUMPDEST POP SWAP4 DUP1 PUSH2 0x369E PUSH2 0x3698 DUP8 PUSH2 0x54C JUMP JUMPDEST SWAP2 PUSH2 0x54C JUMP JUMPDEST GT PUSH0 EQ PUSH2 0x38AD JUMPI PUSH2 0x36BC PUSH2 0x36B7 PUSH2 0x36C2 SWAP4 SWAP3 DUP8 SWAP1 PUSH2 0x13C0 JUMP JUMPDEST PUSH2 0x13E4 JUMP JUMPDEST SWAP1 PUSH2 0x142D JUMP JUMPDEST JUMPDEST SWAP3 PUSH2 0x36CE PUSH1 0x12 PUSH2 0x1377 JUMP JUMPDEST PUSH2 0x13C0 JUMP JUMPDEST PUSH2 0x13E4 JUMP JUMPDEST SWAP1 PUSH2 0x15D3 JUMP JUMPDEST SWAP1 PUSH2 0x590E JUMP JUMPDEST PUSH2 0x36F6 PUSH2 0x36F1 PUSH1 0x1 PUSH2 0x123A JUMP JUMPDEST PUSH2 0x126F JUMP JUMPDEST PUSH2 0x3745 PUSH4 0x7A2D13A SWAP2 PUSH1 0x20 PUSH2 0x3713 PUSH2 0x370E PUSH1 0x1 PUSH2 0x123A JUMP JUMPDEST PUSH2 0x126F JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x373A PUSH2 0x3725 ADDRESS PUSH2 0x1317 JUMP JUMPDEST SWAP3 PUSH2 0x372E PUSH2 0x231 JUMP JUMPDEST SWAP7 DUP8 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x129F JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x985 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x38A8 JUMPI PUSH2 0x3782 SWAP4 PUSH1 0x20 SWAP4 PUSH0 SWAP4 PUSH2 0x3875 JUMPI JUMPDEST POP PUSH2 0x3777 SWAP1 PUSH2 0x376B PUSH2 0x231 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x129F JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x45D JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x3870 JUMPI PUSH2 0x379F SWAP2 PUSH0 SWAP2 PUSH2 0x3842 JUMPI JUMPDEST POP PUSH1 0x5 PUSH2 0x1BA9 JUMP JUMPDEST PUSH2 0x37F0 PUSH1 0x20 PUSH2 0x37BE PUSH2 0x37B9 PUSH2 0x37B4 PUSH1 0x2 PUSH2 0x130A JUMP JUMPDEST PUSH2 0x135C JUMP JUMPDEST PUSH2 0x1368 JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x37E5 PUSH2 0x37D0 ADDRESS PUSH2 0x1317 JUMP JUMPDEST SWAP3 PUSH2 0x37D9 PUSH2 0x231 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x129F JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x985 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x383D JUMPI PUSH2 0x380D SWAP2 PUSH0 SWAP2 PUSH2 0x380F JUMPI JUMPDEST POP PUSH1 0x4 PUSH2 0x1BA9 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x3830 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x3836 JUMPI JUMPDEST PUSH2 0x3828 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1332 JUMP JUMPDEST PUSH0 PUSH2 0x3805 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x381E JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST PUSH2 0x3863 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x3869 JUMPI JUMPDEST PUSH2 0x385B DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1332 JUMP JUMPDEST PUSH0 PUSH2 0x3797 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x3851 JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST PUSH2 0x3777 SWAP2 SWAP4 POP PUSH2 0x389A SWAP1 DUP6 RETURNDATASIZE DUP2 GT PUSH2 0x38A1 JUMPI JUMPDEST PUSH2 0x3892 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1332 JUMP JUMPDEST SWAP3 SWAP1 PUSH2 0x375E JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x3888 JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST PUSH2 0x38C3 PUSH2 0x38BE PUSH2 0x38C9 SWAP4 SWAP3 DUP8 PUSH2 0x13C0 JUMP JUMPDEST PUSH2 0x13E4 JUMP JUMPDEST SWAP1 PUSH2 0x15D3 JUMP JUMPDEST PUSH2 0x36C3 JUMP JUMPDEST PUSH2 0x38EF SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x38F5 JUMPI JUMPDEST PUSH2 0x38E7 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x12C8 JUMP JUMPDEST PUSH0 PUSH2 0x3689 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x38DD JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST PUSH2 0x3922 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x3928 JUMPI JUMPDEST PUSH2 0x391A DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x12C8 JUMP JUMPDEST PUSH0 PUSH2 0x361E JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x3910 JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST PUSH2 0x3954 SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x3959 JUMPI JUMPDEST PUSH2 0x394C DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1332 JUMP JUMPDEST PUSH2 0x35C7 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x3942 JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST PUSH2 0x3985 SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x398A JUMPI JUMPDEST PUSH2 0x397D DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1A73 JUMP JUMPDEST PUSH2 0x3565 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x3973 JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST PUSH2 0x39B6 SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x39BB JUMPI JUMPDEST PUSH2 0x39AE DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1A73 JUMP JUMPDEST PUSH2 0x34F3 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x39A4 JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST PUSH2 0x39E6 SWAP1 DUP4 RETURNDATASIZE DUP2 GT PUSH2 0x39EB JUMPI JUMPDEST PUSH2 0x39DE DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1A73 JUMP JUMPDEST PUSH2 0x3497 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x39D4 JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST PUSH2 0x3A18 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x3A1E JUMPI JUMPDEST PUSH2 0x3A10 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1A32 JUMP JUMPDEST PUSH0 PUSH2 0x341B JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x3A06 JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST PUSH2 0x3A4B SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x3A51 JUMPI JUMPDEST PUSH2 0x3A43 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1A32 JUMP JUMPDEST PUSH0 PUSH2 0x33CB JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x3A39 JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST PUSH2 0x3A7D SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x3A82 JUMPI JUMPDEST PUSH2 0x3A75 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1A73 JUMP JUMPDEST PUSH2 0x337B JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x3A6B JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST SWAP1 PUSH2 0x3A98 SWAP2 PUSH2 0x3206 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x3AA3 SWAP1 PUSH2 0x1263 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x3AB0 SWAP1 PUSH2 0x3A9A JUMP JUMPDEST PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0x3ADB PUSH2 0x3AE0 SWAP2 PUSH2 0x3ACB PUSH2 0x2967 JUMP JUMPDEST POP PUSH0 PUSH2 0x3AD5 PUSH2 0x4FA0 JUMP JUMPDEST ADD PUSH2 0x3AA6 JUMP JUMPDEST PUSH2 0x297F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3AEB PUSH2 0x51C9 JUMP JUMPDEST PUSH2 0x3AF3 PUSH2 0x3B1D JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x3B09 PUSH2 0x3B04 PUSH2 0x3B0E SWAP3 PUSH2 0x1013 JUMP JUMPDEST PUSH2 0x1016 JUMP JUMPDEST PUSH2 0x269 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3B1A SWAP1 PUSH2 0x3AF5 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3B2E PUSH2 0x3B29 PUSH0 PUSH2 0x3B11 JUMP JUMPDEST PUSH2 0x598C JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x3B38 PUSH2 0x3AE3 JUMP JUMPDEST JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x3B46 PUSH2 0x3B3A JUMP JUMPDEST POP PUSH2 0x3B59 PUSH2 0x3B54 PUSH1 0x3 PUSH2 0x1A0A JUMP JUMPDEST PUSH2 0x1A17 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3B64 PUSH2 0x51C9 JUMP JUMPDEST PUSH2 0x3B6C PUSH2 0x3B6E JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x3B76 PUSH2 0x5A62 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x3B80 PUSH2 0x3B5C JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x40 SHR SWAP1 JUMP JUMPDEST PUSH2 0x3B94 PUSH2 0x3B99 SWAP2 PUSH2 0x3B82 JUMP JUMPDEST PUSH2 0x31C1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3BA6 SWAP1 SLOAD PUSH2 0x3B88 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x3BC2 PUSH2 0x3BC7 SWAP2 PUSH2 0x1208 JUMP JUMPDEST PUSH2 0x3BA9 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3BD4 SWAP1 SLOAD PUSH2 0x3BB6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x3BEA PUSH8 0xFFFFFFFFFFFFFFFF SWAP2 PUSH2 0x1B50 JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0x3C08 PUSH2 0x3C03 PUSH2 0x3C0D SWAP3 PUSH2 0xA7E JUMP JUMPDEST PUSH2 0x1016 JUMP JUMPDEST PUSH2 0xA7E JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x3C28 PUSH2 0x3C23 PUSH2 0x3C2F SWAP3 PUSH2 0x3BF4 JUMP JUMPDEST PUSH2 0x3C10 JUMP JUMPDEST DUP3 SLOAD PUSH2 0x3BD7 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 SHL SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x3C4D PUSH9 0xFF0000000000000000 SWAP2 PUSH2 0x3C33 JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0x3C60 SWAP1 PUSH2 0x3F3 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x3C7B PUSH2 0x3C76 PUSH2 0x3C82 SWAP3 PUSH2 0x3C57 JUMP JUMPDEST PUSH2 0x3C63 JUMP JUMPDEST DUP3 SLOAD PUSH2 0x3C39 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x3C8F SWAP1 PUSH2 0xA7E JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x3CA6 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x3C86 JUMP JUMPDEST JUMP JUMPDEST SWAP3 SWAP6 SWAP2 SWAP4 SWAP5 SWAP1 SWAP5 DUP3 SWAP7 PUSH2 0x3CB9 PUSH2 0x5A6C JUMP JUMPDEST SWAP6 PUSH2 0x3CC5 PUSH0 DUP9 ADD PUSH2 0x3B9C JUMP JUMPDEST DUP1 ISZERO PUSH2 0x3D76 JUMPI JUMPDEST PUSH2 0x3D3A JUMPI PUSH2 0x3CFF SWAP8 PUSH2 0x3CF6 SWAP7 PUSH2 0x3CE4 DUP12 PUSH0 DUP12 ADD PUSH2 0x3C13 JUMP JUMPDEST PUSH2 0x3CF1 PUSH1 0x1 PUSH0 DUP12 ADD PUSH2 0x3C66 JUMP JUMPDEST PUSH2 0x4049 JUMP JUMPDEST PUSH0 DUP1 SWAP2 ADD PUSH2 0x3C66 JUMP JUMPDEST PUSH2 0x3D35 PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 SWAP2 PUSH2 0x3D2C PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x3C93 JUMP JUMPDEST SUB SWAP1 LOG1 JUMP JUMPDEST PUSH2 0x3D42 PUSH2 0x231 JUMP JUMPDEST PUSH32 0xF92EE8A900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x3D72 PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST POP PUSH2 0x3D82 PUSH0 DUP9 ADD PUSH2 0x3BCA JUMP JUMPDEST PUSH2 0x3D94 PUSH2 0x3D8E DUP12 PUSH2 0xA7E JUMP JUMPDEST SWAP2 PUSH2 0xA7E JUMP JUMPDEST LT ISZERO PUSH2 0x3CCC JUMP JUMPDEST SWAP1 PUSH2 0x3DBA PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 PUSH2 0x1B50 JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x3DDC PUSH2 0x3DD7 PUSH2 0x3DE3 SWAP3 PUSH2 0x3A9A JUMP JUMPDEST PUSH2 0x3DC4 JUMP JUMPDEST DUP3 SLOAD PUSH2 0x3D9B JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x3DF0 SWAP1 PUSH2 0x1247 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3DFC SWAP1 PUSH2 0x3DE7 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3E08 SWAP1 PUSH2 0x3DE7 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x3E23 PUSH2 0x3E1E PUSH2 0x3E2A SWAP3 PUSH2 0x3DFF JUMP JUMPDEST PUSH2 0x3E0B JUMP JUMPDEST DUP3 SLOAD PUSH2 0x3D9B JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x3E37 SWAP1 PUSH2 0x1247 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3E43 SWAP1 PUSH2 0x3E2E JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3E4F SWAP1 PUSH2 0x3E2E JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x3E6A PUSH2 0x3E65 PUSH2 0x3E71 SWAP3 PUSH2 0x3E46 JUMP JUMPDEST PUSH2 0x3E52 JUMP JUMPDEST DUP3 SLOAD PUSH2 0x3D9B JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH0 PUSH32 0x496E76616C696420617373657441206164647265737300000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x3EA9 PUSH1 0x16 PUSH1 0x20 SWAP3 PUSH2 0x32A JUMP JUMPDEST PUSH2 0x3EB2 DUP2 PUSH2 0x3E75 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x3ECB SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x3E9C JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x3ED5 JUMPI JUMP JUMPDEST PUSH2 0x3EDD PUSH2 0x231 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x3F0D PUSH1 0x4 DUP3 ADD PUSH2 0x3EB6 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH32 0x496E76616C696420596561726E205661756C7420616464726573730000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x3F45 PUSH1 0x1B PUSH1 0x20 SWAP3 PUSH2 0x32A JUMP JUMPDEST PUSH2 0x3F4E DUP2 PUSH2 0x3F11 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x3F67 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x3F38 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x3F71 JUMPI JUMP JUMPDEST PUSH2 0x3F79 PUSH2 0x231 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x3FA9 PUSH1 0x4 DUP3 ADD PUSH2 0x3F52 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH32 0x496E76616C696420617373657442206164647265737300000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x3FE1 PUSH1 0x16 PUSH1 0x20 SWAP3 PUSH2 0x32A JUMP JUMPDEST PUSH2 0x3FEA DUP2 PUSH2 0x3FAD JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x4003 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x3FD4 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x400D JUMPI JUMP JUMPDEST PUSH2 0x4015 PUSH2 0x231 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x4045 PUSH1 0x4 DUP3 ADD PUSH2 0x3FEE JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x40B1 SWAP7 POP PUSH2 0x40A5 SWAP4 PUSH2 0x4092 PUSH2 0x40AA SWAP8 SWAP7 SWAP5 PUSH2 0x4074 PUSH2 0x409E SWAP6 PUSH2 0x4097 SWAP6 PUSH2 0x406F CALLER PUSH2 0x5AAE JUMP JUMPDEST PUSH2 0x5AD9 JUMP JUMPDEST PUSH2 0x407C PUSH2 0x5AEF JUMP JUMPDEST PUSH2 0x4084 PUSH2 0x5B15 JUMP JUMPDEST PUSH2 0x408C PUSH2 0x5B3B JUMP JUMPDEST PUSH0 PUSH2 0x3DC7 JUMP JUMPDEST PUSH2 0x3DF3 JUMP JUMPDEST PUSH1 0x1 PUSH2 0x3E0E JUMP JUMPDEST PUSH1 0x2 PUSH2 0x3DC7 JUMP JUMPDEST PUSH2 0x3E3A JUMP JUMPDEST PUSH1 0x3 PUSH2 0x3E55 JUMP JUMPDEST PUSH2 0x40DE PUSH2 0x40BD PUSH0 PUSH2 0x130A JUMP JUMPDEST PUSH2 0x40D7 PUSH2 0x40D1 PUSH2 0x40CC PUSH0 PUSH2 0x3B11 JUMP JUMPDEST PUSH2 0x282 JUMP JUMPDEST SWAP2 PUSH2 0x282 JUMP JUMPDEST EQ ISZERO PUSH2 0x3ECE JUMP JUMPDEST PUSH2 0x4114 PUSH2 0x40F3 PUSH2 0x40EE PUSH1 0x1 PUSH2 0x123A JUMP JUMPDEST PUSH2 0x126F JUMP JUMPDEST PUSH2 0x410D PUSH2 0x4107 PUSH2 0x4102 PUSH0 PUSH2 0x3B11 JUMP JUMPDEST PUSH2 0x282 JUMP JUMPDEST SWAP2 PUSH2 0x282 JUMP JUMPDEST EQ ISZERO PUSH2 0x3F6A JUMP JUMPDEST PUSH2 0x4142 PUSH2 0x4121 PUSH1 0x2 PUSH2 0x130A JUMP JUMPDEST PUSH2 0x413B PUSH2 0x4135 PUSH2 0x4130 PUSH0 PUSH2 0x3B11 JUMP JUMPDEST PUSH2 0x282 JUMP JUMPDEST SWAP2 PUSH2 0x282 JUMP JUMPDEST EQ ISZERO PUSH2 0x4006 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x4153 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 PUSH2 0x3CA8 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x415D PUSH2 0x3B3A JUMP JUMPDEST POP PUSH2 0x4170 PUSH0 PUSH2 0x416A PUSH2 0x5B45 JUMP JUMPDEST ADD PUSH2 0x130A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x417B PUSH2 0x27ED JUMP JUMPDEST POP PUSH2 0x418F PUSH1 0x4 PUSH2 0x4189 PUSH2 0x4FA0 JUMP JUMPDEST ADD PUSH2 0x2916 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x419A PUSH2 0x3B3A JUMP JUMPDEST POP PUSH2 0x41AD PUSH2 0x41A8 PUSH1 0x1 PUSH2 0x123A JUMP JUMPDEST PUSH2 0x126F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x41B8 PUSH2 0x47BC JUMP JUMPDEST PUSH2 0x41C0 PUSH2 0x41CA JUMP JUMPDEST PUSH2 0x41C8 PUSH2 0x4868 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x41D2 PUSH2 0x4885 JUMP JUMPDEST PUSH2 0x41DA PUSH2 0x41DC JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x41E4 PUSH2 0x5D4C JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x41EE PUSH2 0x41B0 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x420D SWAP2 PUSH2 0x41FC PUSH2 0x2941 JUMP JUMPDEST POP PUSH2 0x4205 PUSH2 0x4FC4 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH2 0x50EC JUMP JUMPDEST PUSH1 0x1 SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x421C SWAP1 PUSH2 0x3A9A JUMP JUMPDEST PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0x4256 SWAP2 PUSH2 0x424C PUSH2 0x4251 SWAP3 PUSH2 0x423B PUSH2 0x2967 JUMP JUMPDEST POP PUSH1 0x1 PUSH2 0x4246 PUSH2 0x4FA0 JUMP JUMPDEST ADD PUSH2 0x4212 JUMP JUMPDEST PUSH2 0x3AA6 JUMP JUMPDEST PUSH2 0x297F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x426D PUSH2 0x4268 PUSH2 0x4272 SWAP3 PUSH2 0x1013 JUMP JUMPDEST PUSH2 0x1016 JUMP JUMPDEST PUSH2 0xA7E JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x428C PUSH2 0x4287 PUSH2 0x4291 SWAP3 PUSH2 0x4275 JUMP JUMPDEST PUSH2 0x1016 JUMP JUMPDEST PUSH2 0xA7E JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x429D SWAP1 PUSH2 0x1263 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x42A9 SWAP1 PUSH2 0x4278 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x42C0 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x42A0 JUMP JUMPDEST JUMP JUMPDEST SWAP3 SWAP5 SWAP2 SWAP5 SWAP4 SWAP1 SWAP4 PUSH2 0x42D1 PUSH2 0x5A6C JUMP JUMPDEST SWAP6 PUSH2 0x42E6 PUSH2 0x42E0 PUSH0 DUP10 ADD PUSH2 0x3B9C JUMP JUMPDEST ISZERO PUSH2 0x3F3 JUMP JUMPDEST SWAP6 PUSH2 0x42F2 PUSH0 DUP10 ADD PUSH2 0x3BCA JUMP JUMPDEST DUP1 PUSH2 0x4305 PUSH2 0x42FF PUSH0 PUSH2 0x4259 JUMP JUMPDEST SWAP2 PUSH2 0xA7E JUMP JUMPDEST EQ DUP1 PUSH2 0x443F JUMPI JUMPDEST SWAP1 PUSH2 0x4320 PUSH2 0x431A PUSH1 0x1 PUSH2 0x4278 JUMP JUMPDEST SWAP2 PUSH2 0xA7E JUMP JUMPDEST EQ DUP1 PUSH2 0x4417 JUMPI JUMPDEST PUSH2 0x4332 SWAP1 SWAP2 ISZERO PUSH2 0x3F3 JUMP JUMPDEST SWAP1 DUP2 PUSH2 0x4406 JUMPI JUMPDEST POP PUSH2 0x43CA JUMPI PUSH2 0x4362 SWAP6 PUSH2 0x4357 PUSH2 0x434F PUSH1 0x1 PUSH2 0x4278 JUMP JUMPDEST PUSH0 DUP12 ADD PUSH2 0x3C13 JUMP JUMPDEST DUP8 PUSH2 0x43B8 JUMPI JUMPDEST PUSH2 0x4446 JUMP JUMPDEST PUSH2 0x436A JUMPI JUMPDEST POP JUMP JUMPDEST PUSH2 0x4377 SWAP1 PUSH0 DUP1 SWAP2 ADD PUSH2 0x3C66 JUMP JUMPDEST PUSH1 0x1 PUSH2 0x43AF PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 SWAP2 PUSH2 0x43A6 PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x42AD JUMP JUMPDEST SUB SWAP1 LOG1 PUSH0 PUSH2 0x4367 JUMP JUMPDEST PUSH2 0x43C5 PUSH1 0x1 PUSH0 DUP12 ADD PUSH2 0x3C66 JUMP JUMPDEST PUSH2 0x435D JUMP JUMPDEST PUSH2 0x43D2 PUSH2 0x231 JUMP JUMPDEST PUSH32 0xF92EE8A900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x4402 PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x4411 SWAP2 POP ISZERO PUSH2 0x3F3 JUMP JUMPDEST PUSH0 PUSH2 0x4339 JUMP JUMPDEST POP PUSH2 0x4332 PUSH2 0x4424 ADDRESS PUSH2 0x4294 JUMP JUMPDEST EXTCODESIZE PUSH2 0x4437 PUSH2 0x4431 PUSH0 PUSH2 0x1019 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST EQ SWAP1 POP PUSH2 0x4327 JUMP JUMPDEST POP DUP8 PUSH2 0x430C JUMP JUMPDEST PUSH2 0x4492 PUSH2 0x44AC SWAP7 SWAP5 PUSH2 0x448D PUSH2 0x44A0 SWAP6 PUSH2 0x446F PUSH2 0x44A5 SWAP10 SWAP7 PUSH2 0x4499 SWAP7 PUSH2 0x446A CALLER PUSH2 0x5AAE JUMP JUMPDEST PUSH2 0x5AD9 JUMP JUMPDEST PUSH2 0x4477 PUSH2 0x5AEF JUMP JUMPDEST PUSH2 0x447F PUSH2 0x5B15 JUMP JUMPDEST PUSH2 0x4487 PUSH2 0x5B3B JUMP JUMPDEST PUSH0 PUSH2 0x3DC7 JUMP JUMPDEST PUSH2 0x3DF3 JUMP JUMPDEST PUSH1 0x1 PUSH2 0x3E0E JUMP JUMPDEST PUSH1 0x2 PUSH2 0x3DC7 JUMP JUMPDEST PUSH2 0x3E3A JUMP JUMPDEST PUSH1 0x3 PUSH2 0x3E55 JUMP JUMPDEST PUSH2 0x44D9 PUSH2 0x44B8 PUSH0 PUSH2 0x130A JUMP JUMPDEST PUSH2 0x44D2 PUSH2 0x44CC PUSH2 0x44C7 PUSH0 PUSH2 0x3B11 JUMP JUMPDEST PUSH2 0x282 JUMP JUMPDEST SWAP2 PUSH2 0x282 JUMP JUMPDEST EQ ISZERO PUSH2 0x3ECE JUMP JUMPDEST PUSH2 0x450F PUSH2 0x44EE PUSH2 0x44E9 PUSH1 0x1 PUSH2 0x123A JUMP JUMPDEST PUSH2 0x126F JUMP JUMPDEST PUSH2 0x4508 PUSH2 0x4502 PUSH2 0x44FD PUSH0 PUSH2 0x3B11 JUMP JUMPDEST PUSH2 0x282 JUMP JUMPDEST SWAP2 PUSH2 0x282 JUMP JUMPDEST EQ ISZERO PUSH2 0x3F6A JUMP JUMPDEST PUSH2 0x453D PUSH2 0x451C PUSH1 0x2 PUSH2 0x130A JUMP JUMPDEST PUSH2 0x4536 PUSH2 0x4530 PUSH2 0x452B PUSH0 PUSH2 0x3B11 JUMP JUMPDEST PUSH2 0x282 JUMP JUMPDEST SWAP2 PUSH2 0x282 JUMP JUMPDEST EQ ISZERO PUSH2 0x4006 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x454D SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 PUSH2 0x42C2 JUMP JUMPDEST JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x4566 PUSH2 0x4561 PUSH2 0x456B SWAP3 PUSH2 0x454F JUMP JUMPDEST PUSH2 0x1016 JUMP JUMPDEST PUSH2 0x243 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x4576 PUSH2 0x2967 JUMP JUMPDEST POP PUSH2 0x457F PUSH2 0x298C JUMP JUMPDEST PUSH2 0x4591 PUSH2 0x458B PUSH0 PUSH2 0x1019 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST EQ PUSH2 0x46F4 JUMPI PUSH2 0x45C3 PUSH1 0x20 PUSH2 0x45AD PUSH2 0x45A8 PUSH1 0x3 PUSH2 0x1A0A JUMP JUMPDEST PUSH2 0x1A17 JUMP JUMPDEST PUSH4 0x1BF01E9B SWAP1 PUSH2 0x45BB PUSH2 0x231 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x129F JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x45D3 PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x46EF JUMPI PUSH2 0x45FD PUSH2 0x45F8 PUSH2 0x4613 SWAP4 PUSH1 0x20 SWAP4 PUSH0 SWAP2 PUSH2 0x46C2 JUMPI JUMPDEST POP PUSH2 0x1287 JUMP JUMPDEST PUSH2 0x1293 JUMP JUMPDEST PUSH4 0x313CE567 SWAP1 PUSH2 0x460B PUSH2 0x231 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x129F JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x4623 PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x46BD JUMPI PUSH2 0x4667 PUSH2 0x465A PUSH2 0x4655 PUSH2 0x467E SWAP4 PUSH2 0x468C SWAP6 PUSH0 SWAP2 PUSH2 0x468F JUMPI JUMPDEST POP PUSH2 0x4650 PUSH1 0x12 PUSH2 0x1377 JUMP JUMPDEST PUSH2 0x13C0 JUMP JUMPDEST PUSH2 0x13E4 JUMP JUMPDEST PUSH2 0x4662 PUSH2 0x2A55 JUMP JUMPDEST PUSH2 0x15D3 JUMP JUMPDEST PUSH2 0x4678 PUSH8 0xDE0B6B3A7640000 PUSH2 0x4552 JUMP JUMPDEST SWAP1 PUSH2 0x15D3 JUMP JUMPDEST PUSH2 0x4686 PUSH2 0x298C JUMP JUMPDEST SWAP1 PUSH2 0x142D JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x46B0 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x46B6 JUMPI JUMPDEST PUSH2 0x46A8 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x12C8 JUMP JUMPDEST PUSH0 PUSH2 0x4645 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x469E JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST PUSH2 0x46E2 SWAP2 POP DUP5 RETURNDATASIZE DUP2 GT PUSH2 0x46E8 JUMPI JUMPDEST PUSH2 0x46DA DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1A32 JUMP JUMPDEST PUSH0 PUSH2 0x45F2 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x46D0 JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST PUSH2 0x46FD PUSH0 PUSH2 0x1019 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x4711 SWAP1 PUSH2 0x470C PUSH2 0x51C9 JUMP JUMPDEST PUSH2 0x4713 JUMP JUMPDEST JUMP JUMPDEST DUP1 PUSH2 0x472E PUSH2 0x4728 PUSH2 0x4723 PUSH0 PUSH2 0x3B11 JUMP JUMPDEST PUSH2 0x282 JUMP JUMPDEST SWAP2 PUSH2 0x282 JUMP JUMPDEST EQ PUSH2 0x473E JUMPI PUSH2 0x473C SWAP1 PUSH2 0x598C JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x4781 PUSH2 0x474A PUSH0 PUSH2 0x3B11 JUMP JUMPDEST PUSH2 0x4752 PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x1E4FBDF700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x985 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x478E SWAP1 PUSH2 0x4700 JUMP JUMPDEST JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x47A7 PUSH2 0x47A2 PUSH2 0x47AC SWAP3 PUSH2 0x4790 JUMP JUMPDEST PUSH2 0x1016 JUMP JUMPDEST PUSH2 0x243 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x47B9 PUSH1 0x2 PUSH2 0x4793 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x47C4 PUSH2 0x6208 JUMP JUMPDEST PUSH2 0x47CF PUSH0 DUP3 ADD PUSH2 0x297F JUMP JUMPDEST PUSH2 0x47E8 PUSH2 0x47E2 PUSH2 0x47DD PUSH2 0x47AF JUMP JUMPDEST PUSH2 0x243 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST EQ PUSH2 0x4803 JUMPI PUSH2 0x4801 SWAP1 PUSH0 PUSH2 0x47FA PUSH2 0x47AF JUMP JUMPDEST SWAP2 ADD PUSH2 0x1BA9 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x480B PUSH2 0x231 JUMP JUMPDEST PUSH32 0x3EE5AEB500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x483B PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x4853 PUSH2 0x484E PUSH2 0x4858 SWAP3 PUSH2 0x4275 JUMP JUMPDEST PUSH2 0x1016 JUMP JUMPDEST PUSH2 0x243 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x4865 PUSH1 0x1 PUSH2 0x483F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x4883 PUSH2 0x4873 PUSH2 0x6208 JUMP JUMPDEST PUSH0 PUSH2 0x487C PUSH2 0x485B JUMP JUMPDEST SWAP2 ADD PUSH2 0x1BA9 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x488D PUSH2 0x31E8 JUMP JUMPDEST PUSH2 0x4893 JUMPI JUMP JUMPDEST PUSH2 0x489B PUSH2 0x231 JUMP JUMPDEST PUSH32 0xD93C066500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x48CB PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP1 DUP2 PUSH2 0x48EB PUSH2 0x48E5 PUSH2 0x48E0 PUSH0 PUSH2 0x3B11 JUMP JUMPDEST PUSH2 0x282 JUMP JUMPDEST SWAP2 PUSH2 0x282 JUMP JUMPDEST EQ PUSH2 0x4907 JUMPI PUSH2 0x4905 SWAP2 SWAP1 PUSH2 0x48FE PUSH0 PUSH2 0x3B11 JUMP JUMPDEST SWAP1 SWAP2 PUSH2 0x623A JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x494A PUSH2 0x4913 PUSH0 PUSH2 0x3B11 JUMP JUMPDEST PUSH2 0x491B PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x96C6FD1E00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x985 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x4956 PUSH2 0x2967 JUMP JUMPDEST POP PUSH2 0x4984 PUSH1 0x20 PUSH2 0x496E PUSH2 0x4969 PUSH1 0x3 PUSH2 0x1A0A JUMP JUMPDEST PUSH2 0x1A17 JUMP JUMPDEST PUSH4 0x85462D6F SWAP1 PUSH2 0x497C PUSH2 0x231 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x129F JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x4994 PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x4A6F JUMPI PUSH0 SWAP2 PUSH2 0x4A41 JUMPI JUMPDEST POP SWAP1 PUSH2 0x49D5 PUSH1 0x20 PUSH2 0x49BF PUSH2 0x49BA PUSH1 0x3 PUSH2 0x1A0A JUMP JUMPDEST PUSH2 0x1A17 JUMP JUMPDEST PUSH4 0x4F4608A2 SWAP1 PUSH2 0x49CD PUSH2 0x231 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x129F JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x49E5 PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP3 DUP4 ISZERO PUSH2 0x4A3C JUMPI PUSH2 0x4A0B SWAP4 PUSH2 0x4A06 SWAP3 PUSH0 SWAP2 PUSH2 0x4A0E JUMPI JUMPDEST POP SWAP3 PUSH2 0x15D3 JUMP JUMPDEST PUSH2 0x142D JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x4A2F SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x4A35 JUMPI JUMPDEST PUSH2 0x4A27 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1332 JUMP JUMPDEST PUSH0 PUSH2 0x49FF JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x4A1D JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST PUSH2 0x4A62 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x4A68 JUMPI JUMPDEST PUSH2 0x4A5A DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1332 JUMP JUMPDEST PUSH0 PUSH2 0x49A6 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x4A50 JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST PUSH0 PUSH32 0x496E73756666696369656E742071756F74652061737365742062616C616E6365 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x4AA7 PUSH1 0x20 DUP1 SWAP3 PUSH2 0x32A JUMP JUMPDEST PUSH2 0x4AB0 DUP2 PUSH2 0x4A74 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x4AC9 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x4A9B JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x4AD3 JUMPI JUMP JUMPDEST PUSH2 0x4ADB PUSH2 0x231 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x4B0B PUSH1 0x4 DUP3 ADD PUSH2 0x4AB4 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH1 0x20 PUSH32 0x7400000000000000000000000000000000000000000000000000000000000000 SWAP2 PUSH32 0x486169726375742065786365656473207769746864726177616C20616D6F756E PUSH0 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST PUSH2 0x4B69 PUSH1 0x21 PUSH1 0x40 SWAP3 PUSH2 0x32A JUMP JUMPDEST PUSH2 0x4B72 DUP2 PUSH2 0x4B0F JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x4B8B SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x4B5C JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x4B95 JUMPI JUMP JUMPDEST PUSH2 0x4B9D PUSH2 0x231 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x4BCD PUSH1 0x4 DUP3 ADD PUSH2 0x4B76 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x4BD9 PUSH2 0x2941 JUMP JUMPDEST POP PUSH2 0x4C2C DUP2 PUSH1 0x20 PUSH2 0x4BFA PUSH2 0x4BF5 PUSH2 0x4BF0 PUSH1 0x2 PUSH2 0x130A JUMP JUMPDEST PUSH2 0x135C JUMP JUMPDEST PUSH2 0x1368 JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x4C21 PUSH2 0x4C0C ADDRESS PUSH2 0x1317 JUMP JUMPDEST SWAP3 PUSH2 0x4C15 PUSH2 0x231 JUMP JUMPDEST SWAP7 DUP8 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x129F JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x985 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x4F9B JUMPI PUSH2 0x4C4E PUSH2 0x4C54 SWAP2 PUSH2 0x4C5B SWAP5 PUSH0 SWAP2 PUSH2 0x4F6D JUMPI JUMPDEST POP PUSH2 0x243 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST GT ISZERO PUSH2 0x4ACC JUMP JUMPDEST PUSH2 0x4C8C PUSH2 0x4C67 DUP3 PUSH2 0x494E JUMP JUMPDEST SWAP2 PUSH2 0x4C85 DUP4 PUSH2 0x4C7E PUSH2 0x4C78 DUP5 PUSH2 0x243 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST GT ISZERO PUSH2 0x4B8E JUMP JUMPDEST DUP3 SWAP1 PUSH2 0x185A JUMP JUMPDEST SWAP2 PUSH2 0x4C96 DUP3 PUSH2 0x494E JUMP JUMPDEST SWAP1 PUSH2 0x4CB4 DUP3 PUSH2 0x4CAD PUSH2 0x4CA7 DUP7 PUSH2 0x243 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST GT ISZERO PUSH2 0x199A JUMP JUMPDEST PUSH2 0x4CE1 PUSH1 0x20 PUSH2 0x4CCB PUSH2 0x4CC6 PUSH1 0x3 PUSH2 0x1A0A JUMP JUMPDEST PUSH2 0x1A17 JUMP JUMPDEST PUSH4 0x4CC7325 SWAP1 PUSH2 0x4CD9 PUSH2 0x231 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x129F JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x4CF1 PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x4F68 JUMPI PUSH0 SWAP2 PUSH2 0x4F3A JUMPI JUMPDEST POP SWAP3 PUSH2 0x4D32 PUSH1 0x20 PUSH2 0x4D1C PUSH2 0x4D17 PUSH1 0x3 PUSH2 0x1A0A JUMP JUMPDEST PUSH2 0x1A17 JUMP JUMPDEST PUSH4 0x3B19E84A SWAP1 PUSH2 0x4D2A PUSH2 0x231 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x129F JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x4D42 PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x4F35 JUMPI PUSH1 0x20 SWAP2 PUSH0 SWAP2 PUSH2 0x4F08 JUMPI JUMPDEST POP SWAP6 PUSH2 0x4D72 PUSH2 0x4D6D PUSH2 0x4D68 PUSH1 0x2 PUSH2 0x130A JUMP JUMPDEST PUSH2 0x135C JUMP JUMPDEST PUSH2 0x1368 JUMP JUMPDEST PUSH2 0x4D95 PUSH0 PUSH4 0xA9059CBB SWAP7 SWAP4 SWAP7 PUSH2 0x4DA0 PUSH2 0x4D89 PUSH2 0x231 JUMP JUMPDEST SWAP9 DUP10 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x129F JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x1A91 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x4F03 JUMPI PUSH1 0x20 SWAP3 PUSH2 0x4ED8 JUMPI JUMPDEST POP PUSH2 0x4DCE PUSH2 0x4DC9 PUSH2 0x4DC4 PUSH1 0x2 PUSH2 0x130A JUMP JUMPDEST PUSH2 0x135C JUMP JUMPDEST PUSH2 0x1368 JUMP JUMPDEST PUSH2 0x4DFB PUSH0 PUSH2 0x4DE3 PUSH4 0xA9059CBB SWAP8 SWAP5 DUP8 SWAP1 PUSH2 0x185A JUMP JUMPDEST SWAP7 PUSH2 0x4E06 PUSH2 0x4DEF PUSH2 0x231 JUMP JUMPDEST SWAP9 DUP10 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x129F JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x1A91 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x4ED3 JUMPI PUSH1 0x20 SWAP3 PUSH2 0x4EA8 JUMPI JUMPDEST POP PUSH2 0x4E34 PUSH2 0x4E2F PUSH2 0x4E2A PUSH1 0x2 PUSH2 0x130A JUMP JUMPDEST PUSH2 0x135C JUMP JUMPDEST PUSH2 0x1368 JUMP JUMPDEST PUSH2 0x4E57 PUSH0 PUSH4 0xA9059CBB SWAP6 SWAP4 SWAP6 PUSH2 0x4E62 PUSH2 0x4E4B PUSH2 0x231 JUMP JUMPDEST SWAP8 DUP9 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x129F JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x1A91 JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x4EA3 JUMPI PUSH2 0x4E77 JUMPI JUMPDEST POP PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH2 0x4E97 SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x4E9C JUMPI JUMPDEST PUSH2 0x4E8F DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1A73 JUMP JUMPDEST PUSH2 0x4E71 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x4E85 JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST PUSH2 0x4EC7 SWAP1 DUP4 RETURNDATASIZE DUP2 GT PUSH2 0x4ECC JUMPI JUMPDEST PUSH2 0x4EBF DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1A73 JUMP JUMPDEST PUSH2 0x4E19 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x4EB5 JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST PUSH2 0x4EF7 SWAP1 DUP4 RETURNDATASIZE DUP2 GT PUSH2 0x4EFC JUMPI JUMPDEST PUSH2 0x4EEF DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1A73 JUMP JUMPDEST PUSH2 0x4DB3 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x4EE5 JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST PUSH2 0x4F28 SWAP2 POP DUP3 RETURNDATASIZE DUP2 GT PUSH2 0x4F2E JUMPI JUMPDEST PUSH2 0x4F20 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1A32 JUMP JUMPDEST PUSH0 PUSH2 0x4D56 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x4F16 JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST PUSH2 0x4F5B SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x4F61 JUMPI JUMPDEST PUSH2 0x4F53 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1A32 JUMP JUMPDEST PUSH0 PUSH2 0x4D03 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x4F49 JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST PUSH2 0x4F8E SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x4F94 JUMPI JUMPDEST PUSH2 0x4F86 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1332 JUMP JUMPDEST PUSH0 PUSH2 0x4C48 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x4F7C JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE00 SWAP1 JUMP JUMPDEST PUSH2 0x4FCC PUSH2 0x3B3A JUMP JUMPDEST POP CALLER SWAP1 JUMP JUMPDEST SWAP2 PUSH2 0x4FDF SWAP3 SWAP2 PUSH1 0x1 SWAP3 PUSH2 0x63E0 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x40 SWAP1 PUSH2 0x500A PUSH2 0x5011 SWAP5 SWAP7 SWAP6 SWAP4 SWAP7 PUSH2 0x5000 PUSH1 0x60 DUP5 ADD SWAP9 PUSH0 DUP6 ADD SWAP1 PUSH2 0x978 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x450 JUMP JUMPDEST ADD SWAP1 PUSH2 0x450 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x501E SWAP2 SUB PUSH2 0x243 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP3 SWAP2 SWAP3 PUSH2 0x502F DUP2 DUP4 SWAP1 PUSH2 0x4228 JUMP JUMPDEST SWAP1 DUP2 PUSH2 0x5063 PUSH2 0x505D PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x243 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST SUB PUSH2 0x5070 JUMPI JUMPDEST POP POP POP SWAP1 POP JUMP JUMPDEST DUP2 PUSH2 0x5083 PUSH2 0x507D DUP8 PUSH2 0x243 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST LT PUSH2 0x50A9 JUMPI PUSH2 0x50A0 SWAP4 SWAP5 PUSH2 0x5098 SWAP2 SWAP4 SWAP3 PUSH2 0x5013 JUMP JUMPDEST SWAP1 PUSH0 SWAP3 PUSH2 0x63E0 JUMP JUMPDEST DUP1 PUSH0 DUP1 DUP1 PUSH2 0x5069 JUMP JUMPDEST POP PUSH2 0x50E8 DUP5 SWAP3 SWAP2 SWAP3 PUSH2 0x50B9 PUSH2 0x231 JUMP JUMPDEST SWAP4 DUP5 SWAP4 PUSH32 0xFB8F41B200000000000000000000000000000000000000000000000000000000 DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0x4FE1 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP2 DUP3 PUSH2 0x5108 PUSH2 0x5102 PUSH2 0x50FD PUSH0 PUSH2 0x3B11 JUMP JUMPDEST PUSH2 0x282 JUMP JUMPDEST SWAP2 PUSH2 0x282 JUMP JUMPDEST EQ PUSH2 0x5182 JUMPI DUP2 PUSH2 0x5128 PUSH2 0x5122 PUSH2 0x511D PUSH0 PUSH2 0x3B11 JUMP JUMPDEST PUSH2 0x282 JUMP JUMPDEST SWAP2 PUSH2 0x282 JUMP JUMPDEST EQ PUSH2 0x513B JUMPI PUSH2 0x5139 SWAP3 SWAP2 SWAP1 SWAP2 PUSH2 0x623A JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x517E PUSH2 0x5147 PUSH0 PUSH2 0x3B11 JUMP JUMPDEST PUSH2 0x514F PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0xEC442F0500000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x985 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x51C5 PUSH2 0x518E PUSH0 PUSH2 0x3B11 JUMP JUMPDEST PUSH2 0x5196 PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x96C6FD1E00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x985 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x51D1 PUSH2 0x4155 JUMP JUMPDEST PUSH2 0x51EA PUSH2 0x51E4 PUSH2 0x51DF PUSH2 0x4FC4 JUMP JUMPDEST PUSH2 0x282 JUMP JUMPDEST SWAP2 PUSH2 0x282 JUMP JUMPDEST SUB PUSH2 0x51F1 JUMPI JUMP JUMPDEST PUSH2 0x5233 PUSH2 0x51FC PUSH2 0x4FC4 JUMP JUMPDEST PUSH2 0x5204 PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x118CDAA700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x985 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x523F PUSH2 0x653A JUMP JUMPDEST PUSH2 0x5247 PUSH2 0x527F JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x5255 PUSH1 0xFF SWAP2 PUSH2 0x1B50 JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x5274 PUSH2 0x526F PUSH2 0x527B SWAP3 PUSH2 0x3C57 JUMP JUMPDEST PUSH2 0x3C63 JUMP JUMPDEST DUP3 SLOAD PUSH2 0x5249 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x5293 PUSH2 0x528A PUSH2 0x55EA JUMP JUMPDEST PUSH0 DUP1 SWAP2 ADD PUSH2 0x525F JUMP JUMPDEST PUSH2 0x529B PUSH2 0x4FC4 JUMP JUMPDEST PUSH2 0x52D1 PUSH32 0x5DB9EE0A495BF2E6FF9C91A7834C1BA4FDD244A5E8AA4E537BD38AEAE4B073AA SWAP2 PUSH2 0x52C8 PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x985 JUMP JUMPDEST SUB SWAP1 LOG1 JUMP JUMPDEST PUSH2 0x52DE PUSH2 0x5237 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x52E9 SWAP1 PUSH2 0x1263 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x52F5 ADDRESS PUSH2 0x52E0 JUMP JUMPDEST PUSH2 0x5327 PUSH2 0x5321 PUSH32 0x0 PUSH2 0x282 JUMP JUMPDEST SWAP2 PUSH2 0x282 JUMP JUMPDEST EQ DUP1 ISZERO PUSH2 0x5371 JUMPI JUMPDEST PUSH2 0x5335 JUMPI JUMP JUMPDEST PUSH2 0x533D PUSH2 0x231 JUMP JUMPDEST PUSH32 0xE07C8DBA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x536D PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST POP PUSH2 0x537A PUSH2 0x658D JUMP JUMPDEST PUSH2 0x53AC PUSH2 0x53A6 PUSH32 0x0 PUSH2 0x282 JUMP JUMPDEST SWAP2 PUSH2 0x282 JUMP JUMPDEST EQ ISZERO PUSH2 0x532F JUMP JUMPDEST POP PUSH2 0x53BC PUSH2 0x51C9 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x53C7 SWAP1 PUSH2 0x53B3 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x53D2 SWAP1 PUSH2 0x1247 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x53DE SWAP1 PUSH2 0x53C9 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x53EA SWAP1 PUSH2 0x1263 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x53F6 DUP2 PUSH2 0x7EB JUMP JUMPDEST SUB PUSH2 0x53FD JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0x540E DUP3 PUSH2 0x53ED JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x5429 JUMPI PUSH2 0x5426 SWAP2 PUSH0 ADD PUSH2 0x5401 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x23B JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x545C PUSH1 0x20 PUSH2 0x5446 PUSH2 0x5441 DUP7 PUSH2 0x53D5 JUMP JUMPDEST PUSH2 0x53E1 JUMP JUMPDEST PUSH4 0x52D1902D SWAP1 PUSH2 0x5454 PUSH2 0x231 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x129F JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x546C PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 SWAP2 PUSH0 SWAP3 PUSH2 0x553C JUMPI JUMPDEST POP ISZERO PUSH0 EQ PUSH2 0x54CD JUMPI POP POP SWAP1 PUSH1 0x1 PUSH2 0x548E JUMPI POP JUMPDEST JUMP JUMPDEST PUSH2 0x54C9 SWAP1 PUSH2 0x549A PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x4C9C8CE300000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x985 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP3 DUP4 PUSH2 0x54E8 PUSH2 0x54E2 PUSH2 0x54DD PUSH2 0x3176 JUMP JUMPDEST PUSH2 0x7EB JUMP JUMPDEST SWAP2 PUSH2 0x7EB JUMP JUMPDEST SUB PUSH2 0x54FD JUMPI PUSH2 0x54F8 SWAP3 SWAP4 POP PUSH2 0x65B7 JUMP JUMPDEST PUSH2 0x548C JUMP JUMPDEST PUSH2 0x5538 DUP5 PUSH2 0x5509 PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0xAA1D49A400000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x7FB JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x555E SWAP2 SWAP3 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x5565 JUMPI JUMPDEST PUSH2 0x5556 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x5410 JUMP JUMPDEST SWAP1 PUSH0 PUSH2 0x5479 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x554C JUMP JUMPDEST PUSH2 0x5575 ADDRESS PUSH2 0x52E0 JUMP JUMPDEST PUSH2 0x55A7 PUSH2 0x55A1 PUSH32 0x0 PUSH2 0x282 JUMP JUMPDEST SWAP2 PUSH2 0x282 JUMP JUMPDEST SUB PUSH2 0x55AE JUMPI JUMP JUMPDEST PUSH2 0x55B6 PUSH2 0x231 JUMP JUMPDEST PUSH32 0xE07C8DBA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x55E6 PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH32 0xCD5ED15C6E187E77E9AEE88184C21F4F2182AB5827CB3B7E07FBEDCD63F03300 SWAP1 JUMP JUMPDEST PUSH2 0x5622 PUSH2 0x561D PUSH2 0x5627 SWAP3 PUSH2 0x4790 JUMP JUMPDEST PUSH2 0x1016 JUMP JUMPDEST PUSH2 0x54C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x563C PUSH2 0x5637 PUSH1 0x1 PUSH2 0x123A JUMP JUMPDEST PUSH2 0x126F JUMP JUMPDEST PUSH2 0x568B PUSH4 0x7A2D13A SWAP2 PUSH1 0x20 PUSH2 0x5659 PUSH2 0x5654 PUSH1 0x1 PUSH2 0x123A JUMP JUMPDEST PUSH2 0x126F JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x5680 PUSH2 0x566B ADDRESS PUSH2 0x1317 JUMP JUMPDEST SWAP3 PUSH2 0x5674 PUSH2 0x231 JUMP JUMPDEST SWAP7 DUP8 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x129F JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x985 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x5909 JUMPI PUSH2 0x56C8 SWAP4 PUSH1 0x20 SWAP4 PUSH0 SWAP4 PUSH2 0x58D6 JUMPI JUMPDEST POP PUSH2 0x56BD SWAP1 PUSH2 0x56B1 PUSH2 0x231 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x129F JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x45D JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x58D1 JUMPI PUSH0 SWAP2 PUSH2 0x58A3 JUMPI JUMPDEST POP DUP1 PUSH2 0x56F7 PUSH2 0x56F1 PUSH2 0x56EC PUSH1 0x5 PUSH2 0x297F JUMP JUMPDEST PUSH2 0x243 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST GT PUSH0 EQ PUSH2 0x5894 JUMPI PUSH2 0x5712 SWAP1 PUSH2 0x570C PUSH1 0x5 PUSH2 0x297F JUMP JUMPDEST SWAP1 PUSH2 0x185A JUMP JUMPDEST JUMPDEST PUSH2 0x5747 PUSH1 0x20 PUSH2 0x5731 PUSH2 0x572C PUSH2 0x5727 PUSH0 PUSH2 0x130A JUMP JUMPDEST PUSH2 0x1287 JUMP JUMPDEST PUSH2 0x1293 JUMP JUMPDEST PUSH4 0x313CE567 SWAP1 PUSH2 0x573F PUSH2 0x231 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x129F JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x5757 PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x588F JUMPI PUSH2 0x57A0 PUSH2 0x57A5 SWAP2 PUSH2 0x57AB SWAP4 PUSH0 SWAP2 PUSH2 0x5861 JUMPI JUMPDEST POP PUSH2 0x579B PUSH2 0x5795 PUSH2 0x5790 PUSH1 0x1 SWAP4 PUSH2 0x578A PUSH1 0x2 PUSH2 0x560E JUMP JUMPDEST SWAP1 PUSH2 0x13C0 JUMP JUMPDEST PUSH2 0x13E4 JUMP JUMPDEST SWAP2 PUSH2 0x483F JUMP JUMPDEST PUSH2 0x15D3 JUMP JUMPDEST PUSH2 0x243 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST GT PUSH2 0x5854 JUMPI JUMPDEST PUSH2 0x5802 PUSH1 0x20 PUSH2 0x57D0 PUSH2 0x57CB PUSH2 0x57C6 PUSH1 0x2 PUSH2 0x130A JUMP JUMPDEST PUSH2 0x135C JUMP JUMPDEST PUSH2 0x1368 JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x57F7 PUSH2 0x57E2 ADDRESS PUSH2 0x1317 JUMP JUMPDEST SWAP3 PUSH2 0x57EB PUSH2 0x231 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x129F JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x985 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x584F JUMPI PUSH2 0x581F SWAP2 PUSH0 SWAP2 PUSH2 0x5821 JUMPI JUMPDEST POP PUSH1 0x4 PUSH2 0x1BA9 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x5842 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x5848 JUMPI JUMPDEST PUSH2 0x583A DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1332 JUMP JUMPDEST PUSH0 PUSH2 0x5817 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x5830 JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST PUSH2 0x585C PUSH2 0x5D4C JUMP JUMPDEST PUSH2 0x57B1 JUMP JUMPDEST PUSH2 0x5882 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x5888 JUMPI JUMPDEST PUSH2 0x587A DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x12C8 JUMP JUMPDEST PUSH0 PUSH2 0x5773 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x5870 JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST POP PUSH2 0x589E PUSH0 PUSH2 0x1019 JUMP JUMPDEST PUSH2 0x5713 JUMP JUMPDEST PUSH2 0x58C4 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x58CA JUMPI JUMPDEST PUSH2 0x58BC DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1332 JUMP JUMPDEST PUSH0 PUSH2 0x56DA JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x58B2 JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST PUSH2 0x56BD SWAP2 SWAP4 POP PUSH2 0x58FB SWAP1 DUP6 RETURNDATASIZE DUP2 GT PUSH2 0x5902 JUMPI JUMPDEST PUSH2 0x58F3 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1332 JUMP JUMPDEST SWAP3 SWAP1 PUSH2 0x56A4 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x58E9 JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST DUP1 PUSH2 0x5929 PUSH2 0x5923 PUSH2 0x591E PUSH0 PUSH2 0x3B11 JUMP JUMPDEST PUSH2 0x282 JUMP JUMPDEST SWAP2 PUSH2 0x282 JUMP JUMPDEST EQ PUSH2 0x5945 JUMPI PUSH2 0x5943 SWAP2 PUSH2 0x593B PUSH0 PUSH2 0x3B11 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH2 0x623A JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x5988 PUSH2 0x5951 PUSH0 PUSH2 0x3B11 JUMP JUMPDEST PUSH2 0x5959 PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0xEC442F0500000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x985 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x5994 PUSH2 0x5B45 JUMP JUMPDEST PUSH2 0x59AC PUSH2 0x59A2 PUSH0 DUP4 ADD PUSH2 0x130A JUMP JUMPDEST SWAP2 PUSH0 DUP5 SWAP2 ADD PUSH2 0x3DC7 JUMP JUMPDEST SWAP1 PUSH2 0x59E0 PUSH2 0x59DA PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP4 PUSH2 0x3A9A JUMP JUMPDEST SWAP2 PUSH2 0x3A9A JUMP JUMPDEST SWAP2 PUSH2 0x59E9 PUSH2 0x231 JUMP JUMPDEST DUP1 PUSH2 0x59F3 DUP2 PUSH2 0x2DE JUMP JUMPDEST SUB SWAP1 LOG3 JUMP JUMPDEST PUSH2 0x5A00 PUSH2 0x4885 JUMP JUMPDEST PUSH2 0x5A08 PUSH2 0x5A0A JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x5A1F PUSH2 0x5A15 PUSH2 0x55EA JUMP JUMPDEST PUSH0 PUSH1 0x1 SWAP2 ADD PUSH2 0x525F JUMP JUMPDEST PUSH2 0x5A27 PUSH2 0x4FC4 JUMP JUMPDEST PUSH2 0x5A5D PUSH32 0x62E78CEA01BEE320CD4E420270B5EA74000D11B0C9F74754EBDBFC544B05A258 SWAP2 PUSH2 0x5A54 PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x985 JUMP JUMPDEST SUB SWAP1 LOG1 JUMP JUMPDEST PUSH2 0x5A6A PUSH2 0x59F8 JUMP JUMPDEST JUMP JUMPDEST PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 SWAP1 JUMP JUMPDEST PUSH2 0x5AA1 SWAP1 PUSH2 0x5A9C PUSH2 0x6640 JUMP JUMPDEST PUSH2 0x5AA3 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x5AAC SWAP1 PUSH2 0x6718 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x5AB7 SWAP1 PUSH2 0x5A90 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x5ACB SWAP2 PUSH2 0x5AC6 PUSH2 0x6640 JUMP JUMPDEST PUSH2 0x5ACD JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x5AD7 SWAP2 PUSH2 0x695B JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x5AE3 SWAP2 PUSH2 0x5AB9 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x5AED PUSH2 0x6640 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x5AF7 PUSH2 0x5AE5 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x5B01 PUSH2 0x6640 JUMP JUMPDEST PUSH2 0x5B09 PUSH2 0x5B0B JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x5B13 PUSH2 0x6996 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x5B1D PUSH2 0x5AF9 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x5B27 PUSH2 0x6640 JUMP JUMPDEST PUSH2 0x5B2F PUSH2 0x5B31 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x5B39 PUSH2 0x69C8 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x5B43 PUSH2 0x5B1F JUMP JUMPDEST JUMP JUMPDEST PUSH32 0x9016D09D72D40FDAE2FD8CEAC6B6234C7706214FD39C1CD1E609A0528C199300 SWAP1 JUMP JUMPDEST PUSH1 0x20 PUSH32 0x6C61626C65000000000000000000000000000000000000000000000000000000 SWAP2 PUSH32 0x42616C756E695631795661756C743A204E6F20696E7465726573742061766169 PUSH0 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST PUSH2 0x5BC3 PUSH1 0x25 PUSH1 0x40 SWAP3 PUSH2 0x32A JUMP JUMPDEST PUSH2 0x5BCC DUP2 PUSH2 0x5B69 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x5BE5 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x5BB6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x5BEF JUMPI JUMP JUMPDEST PUSH2 0x5BF7 PUSH2 0x231 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x5C27 PUSH1 0x4 DUP3 ADD PUSH2 0x5BD0 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH32 0x42616C756E695631795661756C743A2052656465656D204661696C6564000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x5C5F PUSH1 0x1D PUSH1 0x20 SWAP3 PUSH2 0x32A JUMP JUMPDEST PUSH2 0x5C68 DUP2 PUSH2 0x5C2B JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x5C81 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x5C52 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x5C8B JUMPI JUMP JUMPDEST PUSH2 0x5C93 PUSH2 0x231 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x5CC3 PUSH1 0x4 DUP3 ADD PUSH2 0x5C6C JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x5CD0 SWAP1 PUSH2 0x1247 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x5CDC SWAP1 PUSH2 0x5CC7 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x5CE8 SWAP1 PUSH2 0x1263 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x5D20 PUSH2 0x5D27 SWAP5 PUSH2 0x5D16 PUSH1 0x60 SWAP5 SWAP9 SWAP8 SWAP6 PUSH2 0x5D0C PUSH1 0x80 DUP7 ADD SWAP11 PUSH0 DUP8 ADD SWAP1 PUSH2 0x978 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD SWAP1 PUSH2 0x978 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD SWAP1 PUSH2 0x450 JUMP JUMPDEST ADD SWAP1 PUSH2 0x978 JUMP JUMPDEST JUMP JUMPDEST SWAP2 PUSH1 0x20 PUSH2 0x5D4A SWAP3 SWAP5 SWAP4 PUSH2 0x5D43 PUSH1 0x40 DUP3 ADD SWAP7 PUSH0 DUP4 ADD SWAP1 PUSH2 0x450 JUMP JUMPDEST ADD SWAP1 PUSH2 0x450 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x5D5E PUSH2 0x5D59 PUSH1 0x1 PUSH2 0x123A JUMP JUMPDEST PUSH2 0x126F JUMP JUMPDEST PUSH2 0x5DAD PUSH4 0x7A2D13A SWAP2 PUSH1 0x20 PUSH2 0x5D7B PUSH2 0x5D76 PUSH1 0x1 PUSH2 0x123A JUMP JUMPDEST PUSH2 0x126F JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x5DA2 PUSH2 0x5D8D ADDRESS PUSH2 0x1317 JUMP JUMPDEST SWAP3 PUSH2 0x5D96 PUSH2 0x231 JUMP JUMPDEST SWAP7 DUP8 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x129F JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x985 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x6203 JUMPI PUSH2 0x5DEA SWAP4 PUSH1 0x20 SWAP4 PUSH0 SWAP4 PUSH2 0x61D0 JUMPI JUMPDEST POP PUSH2 0x5DDF SWAP1 PUSH2 0x5DD3 PUSH2 0x231 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x129F JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x45D JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x61CB JUMPI PUSH0 SWAP2 PUSH2 0x619D JUMPI JUMPDEST POP DUP1 PUSH2 0x5E19 PUSH2 0x5E13 PUSH2 0x5E0E PUSH1 0x5 PUSH2 0x297F JUMP JUMPDEST PUSH2 0x243 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST GT PUSH0 EQ PUSH2 0x618E JUMPI PUSH2 0x5E34 SWAP1 PUSH2 0x5E2E PUSH1 0x5 PUSH2 0x297F JUMP JUMPDEST SWAP1 PUSH2 0x185A JUMP JUMPDEST JUMPDEST PUSH2 0x5E51 DUP2 PUSH2 0x5E4B PUSH2 0x5E45 PUSH0 PUSH2 0x1019 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST GT PUSH2 0x5BE8 JUMP JUMPDEST PUSH2 0x5E92 PUSH1 0x20 PUSH2 0x5E68 PUSH2 0x5E63 PUSH1 0x1 PUSH2 0x123A JUMP JUMPDEST PUSH2 0x126F JUMP JUMPDEST PUSH4 0xC6E6F592 SWAP1 PUSH2 0x5E87 DUP6 SWAP3 PUSH2 0x5E7B PUSH2 0x231 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x129F JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x45D JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x6189 JUMPI PUSH0 SWAP2 PUSH2 0x615B JUMPI JUMPDEST POP PUSH1 0x20 PUSH2 0x5EB9 PUSH2 0x5EB4 PUSH1 0x1 PUSH2 0x123A JUMP JUMPDEST PUSH2 0x126F JUMP JUMPDEST PUSH4 0xBA087652 SWAP3 SWAP1 PUSH2 0x5EEE PUSH0 PUSH2 0x5ECD ADDRESS PUSH2 0x1317 JUMP JUMPDEST SWAP6 PUSH2 0x5EF9 PUSH2 0x5EDA ADDRESS PUSH2 0x1317 JUMP JUMPDEST PUSH2 0x5EE2 PUSH2 0x231 JUMP JUMPDEST SWAP9 DUP10 SWAP8 DUP9 SWAP7 DUP8 SWAP6 PUSH2 0x129F JUMP JUMPDEST DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0x178C JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x6156 JUMPI PUSH0 SWAP2 PUSH2 0x6128 JUMPI JUMPDEST POP PUSH2 0x5F28 DUP2 PUSH2 0x5F22 PUSH2 0x5F1C PUSH0 PUSH2 0x1019 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST GT PUSH2 0x5C84 JUMP JUMPDEST PUSH2 0x5F55 PUSH1 0x20 PUSH2 0x5F3F PUSH2 0x5F3A PUSH1 0x3 PUSH2 0x1A0A JUMP JUMPDEST PUSH2 0x1A17 JUMP JUMPDEST PUSH4 0x82755EBB SWAP1 PUSH2 0x5F4D PUSH2 0x231 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x129F JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x5F65 PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x6123 JUMPI PUSH2 0x5F80 SWAP2 PUSH0 SWAP2 PUSH2 0x60F5 JUMPI JUMPDEST POP PUSH2 0x5CD3 JUMP JUMPDEST PUSH2 0x5F99 PUSH2 0x5F94 PUSH2 0x5F8F PUSH0 PUSH2 0x130A JUMP JUMPDEST PUSH2 0x135C JUMP JUMPDEST PUSH2 0x1368 JUMP JUMPDEST SWAP1 PUSH1 0x20 PUSH4 0x95EA7B3 SWAP3 PUSH2 0x5FAB DUP4 PUSH2 0x5CDF JUMP JUMPDEST SWAP1 PUSH2 0x5FC9 PUSH0 DUP8 SWAP7 PUSH2 0x5FD4 PUSH2 0x5FBD PUSH2 0x231 JUMP JUMPDEST SWAP9 DUP10 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x129F JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x1A91 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x60F0 JUMPI PUSH2 0x5FEE SWAP3 PUSH2 0x60C4 JUMPI JUMPDEST POP PUSH2 0x5CDF JUMP JUMPDEST PUSH1 0x20 PUSH4 0x2D6BC8EA SWAP2 PUSH2 0x5FFF PUSH0 PUSH2 0x130A JUMP JUMPDEST SWAP1 PUSH2 0x6031 PUSH0 PUSH2 0x600E PUSH1 0x2 PUSH2 0x130A JUMP JUMPDEST SWAP6 PUSH2 0x603C DUP9 PUSH2 0x601C ADDRESS PUSH2 0x1317 JUMP JUMPDEST SWAP1 PUSH2 0x6025 PUSH2 0x231 JUMP JUMPDEST SWAP10 DUP11 SWAP9 DUP10 SWAP8 DUP9 SWAP7 PUSH2 0x129F JUMP JUMPDEST DUP7 MSTORE PUSH1 0x4 DUP7 ADD PUSH2 0x5CEB JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x60BF JUMPI PUSH2 0x6093 JUMPI JUMPDEST POP CALLER SWAP1 SWAP2 PUSH2 0x6079 PUSH32 0x1CBC5AB135991BD2B6A4B034A04AA2AA086DAC1371CB9B16B8B5E2ED6B036BED SWAP3 PUSH2 0x3A9A JUMP JUMPDEST SWAP3 PUSH2 0x608E PUSH2 0x6085 PUSH2 0x231 JUMP JUMPDEST SWAP3 DUP4 SWAP3 DUP4 PUSH2 0x5D29 JUMP JUMPDEST SUB SWAP1 LOG2 JUMP JUMPDEST PUSH2 0x60B3 SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x60B8 JUMPI JUMPDEST PUSH2 0x60AB DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1332 JUMP JUMPDEST PUSH2 0x604B JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x60A1 JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST PUSH2 0x60E4 SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x60E9 JUMPI JUMPDEST PUSH2 0x60DC DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1A73 JUMP JUMPDEST PUSH2 0x5FE8 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x60D2 JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST PUSH2 0x6116 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x611C JUMPI JUMPDEST PUSH2 0x610E DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1A32 JUMP JUMPDEST PUSH0 PUSH2 0x5F7A JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x6104 JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST PUSH2 0x6149 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x614F JUMPI JUMPDEST PUSH2 0x6141 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1332 JUMP JUMPDEST PUSH0 PUSH2 0x5F0B JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x6137 JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST PUSH2 0x617C SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x6182 JUMPI JUMPDEST PUSH2 0x6174 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1332 JUMP JUMPDEST PUSH0 PUSH2 0x5EA4 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x616A JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST POP PUSH2 0x6198 PUSH0 PUSH2 0x1019 JUMP JUMPDEST PUSH2 0x5E35 JUMP JUMPDEST PUSH2 0x61BE SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x61C4 JUMPI JUMPDEST PUSH2 0x61B6 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1332 JUMP JUMPDEST PUSH0 PUSH2 0x5DFC JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x61AC JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST PUSH2 0x5DDF SWAP2 SWAP4 POP PUSH2 0x61F5 SWAP1 DUP6 RETURNDATASIZE DUP2 GT PUSH2 0x61FC JUMPI JUMPDEST PUSH2 0x61ED DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1332 JUMP JUMPDEST SWAP3 SWAP1 PUSH2 0x5DC6 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x61E3 JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x6237 SWAP2 ADD PUSH2 0x243 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH2 0x6245 PUSH2 0x4FA0 JUMP JUMPDEST DUP2 PUSH2 0x6260 PUSH2 0x625A PUSH2 0x6255 PUSH0 PUSH2 0x3B11 JUMP JUMPDEST PUSH2 0x282 JUMP JUMPDEST SWAP2 PUSH2 0x282 JUMP JUMPDEST EQ PUSH0 EQ PUSH2 0x634B JUMPI PUSH2 0x6287 DUP4 PUSH2 0x6281 PUSH1 0x2 DUP5 ADD SWAP2 PUSH2 0x627C DUP4 PUSH2 0x297F JUMP JUMPDEST PUSH2 0x2A30 JUMP JUMPDEST SWAP1 PUSH2 0x1BA9 JUMP JUMPDEST JUMPDEST DUP4 PUSH2 0x62A3 PUSH2 0x629D PUSH2 0x6298 PUSH0 PUSH2 0x3B11 JUMP JUMPDEST PUSH2 0x282 JUMP JUMPDEST SWAP2 PUSH2 0x282 JUMP JUMPDEST EQ PUSH0 EQ PUSH2 0x631C JUMPI PUSH2 0x62CB SWAP1 PUSH2 0x62C5 PUSH1 0x2 DUP6 SWAP3 ADD SWAP2 PUSH2 0x62C0 DUP4 PUSH2 0x297F JUMP JUMPDEST PUSH2 0x5013 JUMP JUMPDEST SWAP1 PUSH2 0x1BA9 JUMP JUMPDEST JUMPDEST SWAP2 SWAP1 SWAP2 PUSH2 0x6317 PUSH2 0x6305 PUSH2 0x62FF PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP4 PUSH2 0x3A9A JUMP JUMPDEST SWAP4 PUSH2 0x3A9A JUMP JUMPDEST SWAP4 PUSH2 0x630E PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x45D JUMP JUMPDEST SUB SWAP1 LOG3 JUMP JUMPDEST PUSH2 0x6346 SWAP1 PUSH2 0x6340 PUSH2 0x6331 PUSH0 DUP7 SWAP4 ADD DUP8 SWAP1 PUSH2 0x3AA6 JUMP JUMPDEST SWAP2 PUSH2 0x633B DUP4 PUSH2 0x297F JUMP JUMPDEST PUSH2 0x622C JUMP JUMPDEST SWAP1 PUSH2 0x1BA9 JUMP JUMPDEST PUSH2 0x62CC JUMP JUMPDEST PUSH2 0x6360 PUSH2 0x635B PUSH0 DUP4 ADD DUP5 SWAP1 PUSH2 0x3AA6 JUMP JUMPDEST PUSH2 0x297F JUMP JUMPDEST DUP1 PUSH2 0x6373 PUSH2 0x636D DUP7 PUSH2 0x243 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST LT PUSH2 0x639D JUMPI PUSH2 0x6386 PUSH2 0x6398 SWAP2 DUP6 SWAP1 PUSH2 0x5013 JUMP JUMPDEST PUSH2 0x6393 PUSH0 DUP5 ADD DUP6 SWAP1 PUSH2 0x3AA6 JUMP JUMPDEST PUSH2 0x1BA9 JUMP JUMPDEST PUSH2 0x6288 JUMP JUMPDEST SWAP2 PUSH2 0x63DC SWAP2 POP SWAP2 SWAP3 PUSH2 0x63AD PUSH2 0x231 JUMP JUMPDEST SWAP4 DUP5 SWAP4 PUSH32 0xE450D38C00000000000000000000000000000000000000000000000000000000 DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0x4FE1 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP1 SWAP3 PUSH2 0x63EA PUSH2 0x4FA0 JUMP JUMPDEST DUP3 PUSH2 0x6405 PUSH2 0x63FF PUSH2 0x63FA PUSH0 PUSH2 0x3B11 JUMP JUMPDEST PUSH2 0x282 JUMP JUMPDEST SWAP2 PUSH2 0x282 JUMP JUMPDEST EQ PUSH2 0x64F3 JUMPI DUP5 PUSH2 0x6425 PUSH2 0x641F PUSH2 0x641A PUSH0 PUSH2 0x3B11 JUMP JUMPDEST PUSH2 0x282 JUMP JUMPDEST SWAP2 PUSH2 0x282 JUMP JUMPDEST EQ PUSH2 0x64AC JUMPI PUSH2 0x644C SWAP1 PUSH2 0x6447 PUSH2 0x6440 PUSH1 0x1 DUP8 SWAP4 ADD DUP7 SWAP1 PUSH2 0x4212 JUMP JUMPDEST DUP8 SWAP1 PUSH2 0x3AA6 JUMP JUMPDEST PUSH2 0x1BA9 JUMP JUMPDEST PUSH2 0x6456 JUMPI JUMPDEST POP POP POP JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH2 0x64A1 PUSH2 0x648F PUSH2 0x6489 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP4 PUSH2 0x3A9A JUMP JUMPDEST SWAP4 PUSH2 0x3A9A JUMP JUMPDEST SWAP4 PUSH2 0x6498 PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x45D JUMP JUMPDEST SUB SWAP1 LOG3 PUSH0 DUP1 DUP1 PUSH2 0x6451 JUMP JUMPDEST PUSH2 0x64EF PUSH2 0x64B8 PUSH0 PUSH2 0x3B11 JUMP JUMPDEST PUSH2 0x64C0 PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x94280D6200000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x985 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x6536 PUSH2 0x64FF PUSH0 PUSH2 0x3B11 JUMP JUMPDEST PUSH2 0x6507 PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0xE602DF0500000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x985 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x654B PUSH2 0x6545 PUSH2 0x31E8 JUMP JUMPDEST ISZERO PUSH2 0x3F3 JUMP JUMPDEST PUSH2 0x6551 JUMPI JUMP JUMPDEST PUSH2 0x6559 PUSH2 0x231 JUMP JUMPDEST PUSH32 0x8DFC202B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x6589 PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x6595 PUSH2 0x3B3A JUMP JUMPDEST POP PUSH2 0x65B0 PUSH0 PUSH2 0x65AA PUSH2 0x65A5 PUSH2 0x3176 JUMP JUMPDEST PUSH2 0x69D2 JUMP JUMPDEST ADD PUSH2 0x130A JUMP JUMPDEST SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x65C1 DUP3 PUSH2 0x69D5 JUMP JUMPDEST DUP2 PUSH2 0x65EC PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP2 PUSH2 0x3A9A JUMP JUMPDEST SWAP1 PUSH2 0x65F5 PUSH2 0x231 JUMP JUMPDEST DUP1 PUSH2 0x65FF DUP2 PUSH2 0x2DE JUMP JUMPDEST SUB SWAP1 LOG2 PUSH2 0x660B DUP2 PUSH2 0x65B3 JUMP JUMPDEST PUSH2 0x661D PUSH2 0x6617 PUSH0 PUSH2 0x1019 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST GT PUSH0 EQ PUSH2 0x6631 JUMPI PUSH2 0x662D SWAP2 PUSH2 0x6AE5 JUMP JUMPDEST POP JUMPDEST JUMP JUMPDEST POP POP PUSH2 0x663B PUSH2 0x6A4A JUMP JUMPDEST PUSH2 0x662F JUMP JUMPDEST PUSH2 0x6651 PUSH2 0x664B PUSH2 0x6B14 JUMP JUMPDEST ISZERO PUSH2 0x3F3 JUMP JUMPDEST PUSH2 0x6657 JUMPI JUMP JUMPDEST PUSH2 0x665F PUSH2 0x231 JUMP JUMPDEST PUSH32 0xD7E6BCF800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x668F PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x66A4 SWAP1 PUSH2 0x669F PUSH2 0x6640 JUMP JUMPDEST PUSH2 0x66A6 JUMP JUMPDEST JUMP JUMPDEST DUP1 PUSH2 0x66C1 PUSH2 0x66BB PUSH2 0x66B6 PUSH0 PUSH2 0x3B11 JUMP JUMPDEST PUSH2 0x282 JUMP JUMPDEST SWAP2 PUSH2 0x282 JUMP JUMPDEST EQ PUSH2 0x66D1 JUMPI PUSH2 0x66CF SWAP1 PUSH2 0x598C JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x6714 PUSH2 0x66DD PUSH0 PUSH2 0x3B11 JUMP JUMPDEST PUSH2 0x66E5 PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x1E4FBDF700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x985 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x6721 SWAP1 PUSH2 0x6693 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x6735 SWAP2 PUSH2 0x6730 PUSH2 0x6640 JUMP JUMPDEST PUSH2 0x6937 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x1F PUSH1 0x20 SWAP2 ADD DIV SWAP1 JUMP JUMPDEST SHL SWAP1 JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x8 PUSH2 0x677F SWAP2 MUL SWAP2 PUSH2 0x6779 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 PUSH2 0x6741 JUMP JUMPDEST SWAP3 PUSH2 0x6741 JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x679F PUSH2 0x679A PUSH2 0x67A7 SWAP4 PUSH2 0x1B8A JUMP JUMPDEST PUSH2 0x1BA6 JUMP JUMPDEST SWAP1 DUP4 SLOAD PUSH2 0x6745 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x67BD SWAP2 PUSH2 0x67B7 PUSH2 0x2967 JUMP JUMPDEST SWAP2 PUSH2 0x6789 JUMP JUMPDEST JUMP JUMPDEST JUMPDEST DUP2 DUP2 LT PUSH2 0x67CB JUMPI POP POP JUMP JUMPDEST DUP1 PUSH2 0x67D8 PUSH0 PUSH1 0x1 SWAP4 PUSH2 0x67AB JUMP JUMPDEST ADD PUSH2 0x67C0 JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x1F DUP2 GT PUSH2 0x67EE JUMPI JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x67FA PUSH2 0x681F SWAP4 PUSH2 0x2852 JUMP JUMPDEST SWAP1 PUSH1 0x20 PUSH2 0x6806 DUP5 PUSH2 0x6737 JUMP JUMPDEST DUP4 ADD SWAP4 LT PUSH2 0x6827 JUMPI JUMPDEST PUSH2 0x6818 SWAP1 PUSH2 0x6737 JUMP JUMPDEST ADD SWAP1 PUSH2 0x67BF JUMP JUMPDEST PUSH0 DUP1 DUP1 PUSH2 0x67E9 JUMP JUMPDEST SWAP2 POP PUSH2 0x6818 DUP2 SWAP3 SWAP1 POP PUSH2 0x680F JUMP JUMPDEST SWAP1 PUSH2 0x6845 SWAP1 PUSH0 NOT SWAP1 PUSH1 0x8 MUL PUSH2 0x5A9 JUMP JUMPDEST NOT AND SWAP1 JUMP JUMPDEST DUP2 PUSH2 0x6854 SWAP2 PUSH2 0x6835 JUMP JUMPDEST SWAP1 PUSH1 0x2 MUL OR SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x6866 DUP2 PUSH2 0x326 JUMP JUMPDEST SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x6926 JUMPI PUSH2 0x688A DUP3 PUSH2 0x6884 DUP6 SLOAD PUSH2 0x281F JUMP JUMPDEST DUP6 PUSH2 0x67DE JUMP JUMPDEST PUSH1 0x20 SWAP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 EQ PUSH2 0x68BE JUMPI SWAP2 DUP1 SWAP2 PUSH2 0x68AD SWAP4 PUSH0 SWAP3 PUSH2 0x68B2 JUMPI JUMPDEST POP POP PUSH2 0x684A JUMP JUMPDEST SWAP1 SSTORE JUMPDEST JUMP JUMPDEST SWAP1 SWAP2 POP ADD MLOAD PUSH0 DUP1 PUSH2 0x68A6 JUMP JUMPDEST PUSH1 0x1F NOT DUP4 AND SWAP2 PUSH2 0x68CD DUP6 PUSH2 0x2852 JUMP JUMPDEST SWAP3 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x690E JUMPI POP SWAP2 PUSH1 0x2 SWAP4 SWAP2 DUP6 PUSH1 0x1 SWAP7 SWAP5 LT PUSH2 0x68F4 JUMPI JUMPDEST POP POP POP MUL ADD SWAP1 SSTORE PUSH2 0x68B0 JUMP JUMPDEST PUSH2 0x6904 SWAP2 ADD MLOAD PUSH1 0x1F DUP5 AND SWAP1 PUSH2 0x6835 JUMP JUMPDEST SWAP1 SSTORE PUSH0 DUP1 DUP1 PUSH2 0x68E8 JUMP JUMPDEST SWAP2 SWAP4 PUSH1 0x20 PUSH1 0x1 DUP2 SWAP3 DUP8 DUP8 ADD MLOAD DUP2 SSTORE ADD SWAP6 ADD SWAP3 ADD PUSH2 0x68D0 JUMP JUMPDEST PUSH2 0x68A JUMP JUMPDEST SWAP1 PUSH2 0x6935 SWAP2 PUSH2 0x685C JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x4 PUSH2 0x6959 SWAP3 PUSH2 0x6952 PUSH2 0x6948 PUSH2 0x4FA0 JUMP JUMPDEST SWAP4 PUSH1 0x3 DUP6 ADD PUSH2 0x692B JUMP JUMPDEST SWAP2 ADD PUSH2 0x692B JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x6965 SWAP2 PUSH2 0x6723 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x696F PUSH2 0x6640 JUMP JUMPDEST PUSH2 0x6977 PUSH2 0x6979 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x6994 PUSH2 0x6984 PUSH2 0x6208 JUMP JUMPDEST PUSH0 PUSH2 0x698D PUSH2 0x485B JUMP JUMPDEST SWAP2 ADD PUSH2 0x1BA9 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x699E PUSH2 0x6967 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x69A8 PUSH2 0x6640 JUMP JUMPDEST PUSH2 0x69B0 PUSH2 0x69B2 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x69C6 PUSH2 0x69BD PUSH2 0x55EA JUMP JUMPDEST PUSH0 DUP1 SWAP2 ADD PUSH2 0x525F JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x69D0 PUSH2 0x69A0 JUMP JUMPDEST JUMP JUMPDEST SWAP1 JUMP JUMPDEST DUP1 EXTCODESIZE PUSH2 0x69E9 PUSH2 0x69E3 PUSH0 PUSH2 0x1019 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST EQ PUSH2 0x6A0B JUMPI PUSH2 0x6A09 SWAP1 PUSH0 PUSH2 0x6A03 PUSH2 0x69FE PUSH2 0x3176 JUMP JUMPDEST PUSH2 0x69D2 JUMP JUMPDEST ADD PUSH2 0x3DC7 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x6A46 SWAP1 PUSH2 0x6A17 PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x4C9C8CE300000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x985 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST CALLVALUE PUSH2 0x6A5D PUSH2 0x6A57 PUSH0 PUSH2 0x1019 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST GT PUSH2 0x6A64 JUMPI JUMP JUMPDEST PUSH2 0x6A6C PUSH2 0x231 JUMP JUMPDEST PUSH32 0xB398979F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x6A9C PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x6AB7 PUSH2 0x6AB2 DUP4 PUSH2 0x6F5 JUMP JUMPDEST PUSH2 0x6E0 JUMP JUMPDEST SWAP2 DUP3 MSTORE JUMP JUMPDEST RETURNDATASIZE PUSH0 EQ PUSH2 0x6AD7 JUMPI PUSH2 0x6ACC RETURNDATASIZE PUSH2 0x6AA5 JUMP JUMPDEST SWAP1 RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY JUMPDEST JUMP JUMPDEST PUSH2 0x6ADF PUSH2 0x6AA0 JUMP JUMPDEST SWAP1 PUSH2 0x6AD5 JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x6B11 SWAP4 PUSH2 0x6AF3 PUSH2 0x6AA0 JUMP JUMPDEST POP DUP4 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 MLOAD SWAP2 GAS DELEGATECALL SWAP1 PUSH2 0x6B08 PUSH2 0x6ABC JUMP JUMPDEST SWAP1 SWAP2 SWAP1 SWAP2 PUSH2 0x6B32 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x6B1C PUSH2 0x2941 JUMP JUMPDEST POP PUSH2 0x6B2F PUSH0 PUSH2 0x6B29 PUSH2 0x5A6C JUMP JUMPDEST ADD PUSH2 0x3B9C JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x6B46 SWAP1 PUSH2 0x6B3F PUSH2 0x6AA0 JUMP JUMPDEST POP ISZERO PUSH2 0x3F3 JUMP JUMPDEST PUSH0 EQ PUSH2 0x6B52 JUMPI POP PUSH2 0x6BD6 JUMP JUMPDEST PUSH2 0x6B5B DUP3 PUSH2 0x65B3 JUMP JUMPDEST PUSH2 0x6B6D PUSH2 0x6B67 PUSH0 PUSH2 0x1019 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST EQ DUP1 PUSH2 0x6BBB JUMPI JUMPDEST PUSH2 0x6B7C JUMPI POP SWAP1 JUMP JUMPDEST PUSH2 0x6BB7 SWAP1 PUSH2 0x6B88 PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x9996B31500000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x985 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST POP DUP1 EXTCODESIZE PUSH2 0x6BD0 PUSH2 0x6BCA PUSH0 PUSH2 0x1019 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST EQ PUSH2 0x6B74 JUMP JUMPDEST PUSH2 0x6BDF DUP2 PUSH2 0x65B3 JUMP JUMPDEST PUSH2 0x6BF1 PUSH2 0x6BEB PUSH0 PUSH2 0x1019 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST GT PUSH0 EQ PUSH2 0x6C00 JUMPI DUP1 MLOAD SWAP1 PUSH1 0x20 ADD REVERT JUMPDEST PUSH2 0x6C08 PUSH2 0x231 JUMP JUMPDEST PUSH32 0x1425EA4200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x6C38 PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SELFBALANCE PUSH12 0xD292C84F9B07C6D81D4B96A2 DUP15 POP DUP7 SDIV PUSH14 0xF8EA15CCFB438BC561CAB769A464 PUSH20 0x6F6C634300081900330000000000000000000000 ","sourceMap":"773:11857:20:-:0;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;:::i;:::-;:::o;67:736:18:-;;;:::i;:::-;:::o;701:3153:5:-;;;:::i;:::-;:::o;950:3411:6:-;;;:::i;:::-;:::o;1576:10896:3:-;;;:::i;:::-;:::o;278:1764:8:-;;;:::i;:::-;:::o;277:405:12:-;;;:::i;:::-;:::o;203:2575:11:-;;;:::i;:::-;:::o;749:3275:0:-;;;:::i;:::-;:::o;688:505:4:-;;;:::i;:::-;:::o;773:11857:20:-;;;;;;;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;986:5606:2:-;1163:13;1171:4;1163:13;:::i;:::-;;;986:5606::o"},"deployedBytecode":{"functionDebugData":{"abi_decode":{"entryPoint":791,"id":null,"parameterSlots":2,"returnSlots":0},"abi_decode_address":{"entryPoint":674,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_address_fromMemory":{"entryPoint":6691,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_addresst_address":{"entryPoint":3518,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_addresst_addresst_uint256":{"entryPoint":1191,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_addresst_bytes":{"entryPoint":1916,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_addresst_uint256":{"entryPoint":966,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_available_length_bytes":{"entryPoint":1827,"id":null,"parameterSlots":3,"returnSlots":1},"abi_decode_available_length_string":{"entryPoint":2597,"id":null,"parameterSlots":3,"returnSlots":1},"abi_decode_bool_fromMemory":{"entryPoint":6771,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_bytes":{"entryPoint":1881,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_bytes32_fromMemory":{"entryPoint":21520,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_string":{"entryPoint":2651,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_stringt_stringt_addresst_addresst_addresst_address":{"entryPoint":3617,"id":null,"parameterSlots":2,"returnSlots":6},"abi_decode_stringt_stringt_addresst_addresst_addresst_addresst_uint64":{"entryPoint":2734,"id":null,"parameterSlots":2,"returnSlots":7},"abi_decode_t_bool_fromMemory":{"entryPoint":6756,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_bytes32_fromMemory":{"entryPoint":21505,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_uint256_fromMemory":{"entryPoint":4899,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_address":{"entryPoint":2290,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_address_fromMemory":{"entryPoint":6706,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_uint8_fromMemory":{"entryPoint":4808,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_uint256":{"entryPoint":602,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_uint256_fromMemory":{"entryPoint":4914,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_uint256t_address":{"entryPoint":689,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_uint64":{"entryPoint":2719,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_uint8_fromMemory":{"entryPoint":4793,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encodeUpdatedPos_string_storage":{"entryPoint":10471,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_address":{"entryPoint":2424,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_address_address_uint256":{"entryPoint":10750,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_address_address_uint256_address":{"entryPoint":23787,"id":null,"parameterSlots":5,"returnSlots":1},"abi_encode_address_uint256":{"entryPoint":6801,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_address_uint256_uint256":{"entryPoint":20449,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_bool":{"entryPoint":1029,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_bool_to_bool":{"entryPoint":1016,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_bytes32":{"entryPoint":2043,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_bytes32_to_bytes32":{"entryPoint":2030,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_rational_by":{"entryPoint":17069,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_rational_by_to_uint64":{"entryPoint":17056,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_string":{"entryPoint":889,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_string_memory_ptr":{"entryPoint":840,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_string_storage":{"entryPoint":10331,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_stringliteral":{"entryPoint":4343,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_0751":{"entryPoint":4525,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_075182a57f83974087c76763cd3bc4eedd97b16a8f6ac226f0c2ef23a69b575b":{"entryPoint":4499,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_2c10":{"entryPoint":6117,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_335f":{"entryPoint":12918,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_335ff2e4b249975444723ab3dc1716db90a7dff95cbce35a34ad25055762f887":{"entryPoint":12893,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_4afb":{"entryPoint":19292,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_53fb":{"entryPoint":16366,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_53fb86809bff5dc62f76bc95bbc7b572a1cc94bf1175d9568e8046d7847ef4ec":{"entryPoint":16340,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_5a2a":{"entryPoint":23478,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_6a54":{"entryPoint":5911,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_6ab8":{"entryPoint":5743,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_6ab8fc4ce3762dbd01ecb51b289abf3d35a1ae045aa671894e0484b8219b8808":{"entryPoint":5717,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_76e5":{"entryPoint":6504,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_83d0":{"entryPoint":6310,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_8780":{"entryPoint":19099,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_8914":{"entryPoint":16184,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_8df7":{"entryPoint":5496,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_8df75ae507dbaf3dad7a5532336cf0b6653a2f884906812afcc1c21c7d32d672":{"entryPoint":5470,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_c766":{"entryPoint":6875,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_ccca":{"entryPoint":5276,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_df2e":{"entryPoint":23634,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_f247":{"entryPoint":4188,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_f9fc":{"entryPoint":16028,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple":{"entryPoint":734,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_address":{"entryPoint":2437,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_stringliteral":{"entryPoint":19124,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_stringliteral_2c10":{"entryPoint":6143,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_stringliteral_4753":{"entryPoint":4369,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_stringliteral_4afb":{"entryPoint":19318,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_stringliteral_5a2a":{"entryPoint":23504,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_stringliteral_6a54":{"entryPoint":5937,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_stringliteral_76e5":{"entryPoint":6530,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_stringliteral_83d0":{"entryPoint":6336,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_stringliteral_8914":{"entryPoint":16210,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_stringliteral_c766":{"entryPoint":6901,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_stringliteral_ccca":{"entryPoint":5302,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_stringliteral_df2e":{"entryPoint":23660,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_stringliteral_f247":{"entryPoint":4213,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_stringliteral_f9fc":{"entryPoint":16054,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_uint64":{"entryPoint":15507,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_uint256":{"entryPoint":1117,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_uint256_address":{"entryPoint":13009,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_uint256_address_address":{"entryPoint":6028,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_uint256_to_uint256":{"entryPoint":1104,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_uint256_uint256":{"entryPoint":23849,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_uint64":{"entryPoint":15494,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_uint8":{"entryPoint":1375,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_uint8_to_uint8":{"entryPoint":1362,"id":null,"parameterSlots":2,"returnSlots":0},"allocate_memory":{"entryPoint":1760,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_memory_array_bytes":{"entryPoint":27301,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_memory_array_string":{"entryPoint":3216,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_unbounded":{"entryPoint":561,"id":null,"parameterSlots":0,"returnSlots":1},"array_allocation_size_bytes":{"entryPoint":1781,"id":null,"parameterSlots":1,"returnSlots":1},"array_allocation_size_string":{"entryPoint":2562,"id":null,"parameterSlots":1,"returnSlots":1},"array_dataslot_string_storage":{"entryPoint":10322,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_bytes":{"entryPoint":26035,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_string":{"entryPoint":806,"id":null,"parameterSlots":1,"returnSlots":1},"array_storeLengthForEncoding_string":{"entryPoint":10313,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_string_fromStack":{"entryPoint":810,"id":null,"parameterSlots":2,"returnSlots":1},"checked_add_uint256":{"entryPoint":10800,"id":null,"parameterSlots":2,"returnSlots":1},"checked_div_uint256":{"entryPoint":5165,"id":null,"parameterSlots":2,"returnSlots":1},"checked_exp_rational_by_uint8":{"entryPoint":5092,"id":null,"parameterSlots":1,"returnSlots":1},"checked_mul_uint256":{"entryPoint":5587,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_uint256":{"entryPoint":6234,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_uint8":{"entryPoint":5056,"id":null,"parameterSlots":2,"returnSlots":1},"clean_up_bytearray_end_slots_string_storage":{"entryPoint":26590,"id":null,"parameterSlots":3,"returnSlots":0},"cleanup_address":{"entryPoint":642,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_bool":{"entryPoint":1011,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_bytes32":{"entryPoint":2027,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_from_storage_address":{"entryPoint":3389,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_from_storage_bool":{"entryPoint":12737,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_from_storage_contract_IBaluniV1Registry":{"entryPoint":6621,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_from_storage_contract_IYearnVault":{"entryPoint":4621,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_from_storage_uint256":{"entryPoint":1453,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_from_storage_uint64":{"entryPoint":15273,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_24440054405305269366569402256811496959409073762505157381672968839269610695612_by":{"entryPoint":12631,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_2_by":{"entryPoint":18320,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_by":{"entryPoint":4980,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_by_1":{"entryPoint":17013,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_rational_by":{"entryPoint":17743,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_rational_by_1":{"entryPoint":4115,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_uint160":{"entryPoint":617,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_uint256":{"entryPoint":579,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_uint64":{"entryPoint":2686,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_uint8":{"entryPoint":1356,"id":null,"parameterSlots":1,"returnSlots":1},"clear_storage_range_bytes1":{"entryPoint":26559,"id":null,"parameterSlots":2,"returnSlots":0},"constant_ENTERED":{"entryPoint":18351,"id":null,"parameterSlots":0,"returnSlots":1},"constant_IMPLEMENTATION_SLOT":{"entryPoint":12662,"id":null,"parameterSlots":0,"returnSlots":1},"constant_NOT_ENTERED":{"entryPoint":18523,"id":null,"parameterSlots":0,"returnSlots":1},"constant_UPGRADE_INTERFACE_VERSION":{"entryPoint":3314,"id":null,"parameterSlots":0,"returnSlots":1},"convert_address_to_address":{"entryPoint":15002,"id":null,"parameterSlots":1,"returnSlots":1},"convert_address_to_contract_IBaluniV1Oracle":{"entryPoint":10726,"id":null,"parameterSlots":1,"returnSlots":1},"convert_address_to_contract_IBaluniV1Registry":{"entryPoint":15930,"id":null,"parameterSlots":1,"returnSlots":1},"convert_address_to_contract_IBaluniV1Swapper":{"entryPoint":23763,"id":null,"parameterSlots":1,"returnSlots":1},"convert_address_to_contract_IERC1822Proxiable":{"entryPoint":21461,"id":null,"parameterSlots":1,"returnSlots":1},"convert_address_to_contract_IERC20":{"entryPoint":4956,"id":null,"parameterSlots":1,"returnSlots":1},"convert_address_to_contract_IERC20Metadata":{"entryPoint":4743,"id":null,"parameterSlots":1,"returnSlots":1},"convert_address_to_contract_IYearnVault":{"entryPoint":15859,"id":null,"parameterSlots":1,"returnSlots":1},"convert_array_string_storage_to_string":{"entryPoint":10518,"id":null,"parameterSlots":1,"returnSlots":1},"convert_bool_to_bool":{"entryPoint":15447,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_BaluniV1YearnVault_to_address":{"entryPoint":4887,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_IBaluniV1Oracle_to_address":{"entryPoint":10738,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_IBaluniV1Registry_to_address":{"entryPoint":6679,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_IBaluniV1Registry_to_contract_IBaluniV1Registry":{"entryPoint":15942,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_IBaluniV1Swapper_to_address":{"entryPoint":23775,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_IERC1822Proxiable_to_address":{"entryPoint":21473,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_IERC20Metadata_to_address":{"entryPoint":4755,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_IERC20_to_address":{"entryPoint":4968,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_IYearnVault_to_address":{"entryPoint":4719,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_IYearnVault_to_contract_IYearnVault":{"entryPoint":15871,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_Initializable_to_address":{"entryPoint":17044,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_UUPSUpgradeable_to_address":{"entryPoint":21216,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_0_by_1_to_uint256":{"entryPoint":4121,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_1_by_1_to_uint256":{"entryPoint":18495,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_2_by_1_to_uint256":{"entryPoint":18323,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_by_to_address":{"entryPoint":15121,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_by_to_bytes32":{"entryPoint":12634,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_by_to_uint160":{"entryPoint":15093,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_by_to_uint256":{"entryPoint":17746,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_by_to_uint64":{"entryPoint":17016,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_by_to_uint8":{"entryPoint":4983,"id":null,"parameterSlots":1,"returnSlots":1},"convert_stringliteral_2ade_to_string":{"entryPoint":3303,"id":null,"parameterSlots":0,"returnSlots":1},"convert_t_rational_by_to_t_uint64":{"entryPoint":16985,"id":null,"parameterSlots":1,"returnSlots":1},"convert_t_rational_by_to_t_uint8":{"entryPoint":22030,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_address":{"entryPoint":4707,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_contract_IBaluniV1Oracle":{"entryPoint":10714,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_contract_IBaluniV1Registry":{"entryPoint":15918,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_contract_IBaluniV1Swapper":{"entryPoint":23751,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_contract_IERC1822Proxiable":{"entryPoint":21449,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_contract_IERC20":{"entryPoint":4944,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_contract_IERC20Metadata":{"entryPoint":4731,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_contract_IYearnVault":{"entryPoint":15847,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_uint160":{"entryPoint":4679,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint256_to_uint256":{"entryPoint":7050,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint64_to_uint64":{"entryPoint":15348,"id":null,"parameterSlots":1,"returnSlots":1},"copy_array_from_storage_to_memory_string":{"entryPoint":10484,"id":null,"parameterSlots":1,"returnSlots":1},"copy_byte_array_to_storage_from_string_to_string":{"entryPoint":26716,"id":null,"parameterSlots":2,"returnSlots":0},"copy_calldata_to_memory_with_cleanup":{"entryPoint":1816,"id":null,"parameterSlots":3,"returnSlots":0},"copy_literal_to_memory_2ade050ecfcf8ae20ae1d10a23573f9d7e0bad85e74a2cf8338a65401e64558c":{"entryPoint":3278,"id":null,"parameterSlots":0,"returnSlots":1},"copy_memory_to_memory_with_cleanup":{"entryPoint":819,"id":null,"parameterSlots":3,"returnSlots":0},"divide_by_ceil":{"entryPoint":26423,"id":null,"parameterSlots":1,"returnSlots":1},"external_fun_UPGRADE_INTERFACE_VERSION":{"entryPoint":3336,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_accumulatedAssetB":{"entryPoint":3942,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_allTimeInterest":{"entryPoint":2185,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_allowance":{"entryPoint":3563,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_approve":{"entryPoint":1050,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_balanceOf":{"entryPoint":2320,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_baseAsset":{"entryPoint":3465,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_buy":{"entryPoint":3111,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_decimals":{"entryPoint":1396,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_deposit":{"entryPoint":2238,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_initialize":{"entryPoint":3765,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_interestEarned":{"entryPoint":1562,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_lastDeposit":{"entryPoint":1509,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_name":{"entryPoint":913,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_owner":{"entryPoint":2952,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_pause":{"entryPoint":2511,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_paused":{"entryPoint":2117,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_proxiableUUID":{"entryPoint":2064,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_quoteAsset":{"entryPoint":4010,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_registry":{"entryPoint":2458,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_reinitialize":{"entryPoint":2894,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_renounceOwnership":{"entryPoint":2373,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_symbol":{"entryPoint":3005,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_totalSupply":{"entryPoint":1138,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_totalValuation":{"entryPoint":1303,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_transfer":{"entryPoint":3162,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_transferFrom":{"entryPoint":1249,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_transferOwnership":{"entryPoint":3876,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_unitPrice":{"entryPoint":3823,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_unpause":{"entryPoint":1615,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_upgradeToAndCall":{"entryPoint":1985,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_withdraw":{"entryPoint":739,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_yearnVault":{"entryPoint":3058,"id":null,"parameterSlots":0,"returnSlots":0},"extract_byte_array_length":{"entryPoint":10271,"id":null,"parameterSlots":1,"returnSlots":1},"extract_from_storage_value_dynamict_address":{"entryPoint":3414,"id":null,"parameterSlots":2,"returnSlots":1},"extract_from_storage_value_dynamict_uint256":{"entryPoint":1456,"id":null,"parameterSlots":2,"returnSlots":1},"extract_from_storage_value_offset_8t_bool":{"entryPoint":15240,"id":null,"parameterSlots":1,"returnSlots":1},"extract_from_storage_value_offsett_address":{"entryPoint":4854,"id":null,"parameterSlots":1,"returnSlots":1},"extract_from_storage_value_offsett_bool":{"entryPoint":12743,"id":null,"parameterSlots":1,"returnSlots":1},"extract_from_storage_value_offsett_contract_IBaluniV1Registry":{"entryPoint":6646,"id":null,"parameterSlots":1,"returnSlots":1},"extract_from_storage_value_offsett_contract_IYearnVault":{"entryPoint":4646,"id":null,"parameterSlots":1,"returnSlots":1},"extract_from_storage_value_offsett_uint256":{"entryPoint":10603,"id":null,"parameterSlots":1,"returnSlots":1},"extract_from_storage_value_offsett_uint64":{"entryPoint":15286,"id":null,"parameterSlots":1,"returnSlots":1},"extract_returndata":{"entryPoint":27324,"id":null,"parameterSlots":0,"returnSlots":1},"extract_used_part_and_set_length_of_short_byte_array":{"entryPoint":26698,"id":null,"parameterSlots":2,"returnSlots":1},"finalize_allocation":{"entryPoint":1719,"id":null,"parameterSlots":2,"returnSlots":0},"fun_ERC20_init":{"entryPoint":23257,"id":698,"parameterSlots":2,"returnSlots":0},"fun_ERC20_init_inner":{"entryPoint":23245,"id":null,"parameterSlots":2,"returnSlots":0},"fun_ERC20_init_unchained":{"entryPoint":26971,"id":726,"parameterSlots":2,"returnSlots":0},"fun_ERC20_init_unchained_inner":{"entryPoint":26935,"id":null,"parameterSlots":2,"returnSlots":0},"fun_Ownable_init":{"entryPoint":23214,"id":54,"parameterSlots":1,"returnSlots":0},"fun_Ownable_init_inner":{"entryPoint":23203,"id":null,"parameterSlots":1,"returnSlots":0},"fun_Ownable_init_unchained":{"entryPoint":26392,"id":81,"parameterSlots":1,"returnSlots":0},"fun_Ownable_init_unchained_inner":{"entryPoint":26278,"id":null,"parameterSlots":1,"returnSlots":0},"fun_Pausable_init":{"entryPoint":23355,"id":1345,"parameterSlots":0,"returnSlots":0},"fun_Pausable_init_inner":{"entryPoint":23345,"id":null,"parameterSlots":0,"returnSlots":0},"fun_Pausable_init_unchained":{"entryPoint":27080,"id":1363,"parameterSlots":0,"returnSlots":0},"fun_Pausable_init_unchained_inner":{"entryPoint":27058,"id":null,"parameterSlots":0,"returnSlots":0},"fun_ReentrancyGuard_init":{"entryPoint":23317,"id":1509,"parameterSlots":0,"returnSlots":0},"fun_ReentrancyGuard_init_inner":{"entryPoint":23307,"id":null,"parameterSlots":0,"returnSlots":0},"fun_ReentrancyGuard_init_unchained":{"entryPoint":27030,"id":1527,"parameterSlots":0,"returnSlots":0},"fun_ReentrancyGuard_init_unchained_inner":{"entryPoint":27001,"id":null,"parameterSlots":0,"returnSlots":0},"fun_UUPSUpgradeable_init":{"entryPoint":23279,"id":502,"parameterSlots":0,"returnSlots":0},"fun__approve":{"entryPoint":20433,"id":1130,"parameterSlots":3,"returnSlots":0},"fun__pause_inner":{"entryPoint":23050,"id":null,"parameterSlots":0,"returnSlots":0},"fun__transfer":{"entryPoint":20716,"id":954,"parameterSlots":3,"returnSlots":0},"fun__transferOwnership":{"entryPoint":22924,"id":193,"parameterSlots":1,"returnSlots":0},"fun_allowance":{"entryPoint":16936,"id":851,"parameterSlots":2,"returnSlots":1},"fun_approve":{"entryPoint":10565,"id":875,"parameterSlots":2,"returnSlots":1},"fun_approve_1198":{"entryPoint":25568,"id":1198,"parameterSlots":4,"returnSlots":0},"fun_authorizeUpgrade":{"entryPoint":21438,"id":3199,"parameterSlots":1,"returnSlots":0},"fun_balanceOf":{"entryPoint":15036,"id":803,"parameterSlots":1,"returnSlots":1},"fun_burn":{"entryPoint":18639,"id":1112,"parameterSlots":2,"returnSlots":0},"fun_buy":{"entryPoint":23884,"id":3495,"parameterSlots":0,"returnSlots":0},"fun_buy_3507":{"entryPoint":16870,"id":3507,"parameterSlots":0,"returnSlots":0},"fun_buy_inner":{"entryPoint":16860,"id":null,"parameterSlots":0,"returnSlots":0},"fun_checkInitializing":{"entryPoint":26176,"id":370,"parameterSlots":0,"returnSlots":0},"fun_checkNonPayable":{"entryPoint":27210,"id":2047,"parameterSlots":0,"returnSlots":0},"fun_checkNotDelegated":{"entryPoint":21868,"id":578,"parameterSlots":0,"returnSlots":0},"fun_checkOwner":{"entryPoint":20937,"id":122,"parameterSlots":0,"returnSlots":0},"fun_checkProxy":{"entryPoint":21228,"id":562,"parameterSlots":0,"returnSlots":0},"fun_decimals":{"entryPoint":12127,"id":767,"parameterSlots":0,"returnSlots":1},"fun_deposit":{"entryPoint":14990,"id":3392,"parameterSlots":2,"returnSlots":0},"fun_deposit_inner":{"entryPoint":13044,"id":null,"parameterSlots":2,"returnSlots":0},"fun_functionDelegateCall":{"entryPoint":27365,"id":2334,"parameterSlots":2,"returnSlots":1},"fun_getAddressSlot":{"entryPoint":27090,"id":2447,"parameterSlots":1,"returnSlots":1},"fun_getERC20Storage":{"entryPoint":20384,"id":682,"parameterSlots":0,"returnSlots":1},"fun_getImplementation":{"entryPoint":25997,"id":1806,"parameterSlots":0,"returnSlots":1},"fun_getInitializableStorage":{"entryPoint":23148,"id":447,"parameterSlots":0,"returnSlots":1},"fun_getOwnableStorage":{"entryPoint":23365,"id":25,"parameterSlots":0,"returnSlots":1},"fun_getPausableStorage":{"entryPoint":21994,"id":1319,"parameterSlots":0,"returnSlots":1},"fun_getReentrancyGuardStorage":{"entryPoint":25096,"id":1497,"parameterSlots":0,"returnSlots":1},"fun_haircut":{"entryPoint":18766,"id":3806,"parameterSlots":1,"returnSlots":1},"fun_handleWithdrawB":{"entryPoint":19409,"id":4313,"parameterSlots":2,"returnSlots":1},"fun_initialize":{"entryPoint":17727,"id":3097,"parameterSlots":6,"returnSlots":0},"fun_initialize_inner":{"entryPoint":17478,"id":null,"parameterSlots":6,"returnSlots":0},"fun_interestEarned":{"entryPoint":12149,"id":3839,"parameterSlots":0,"returnSlots":1},"fun_isInitializing":{"entryPoint":27412,"id":438,"parameterSlots":0,"returnSlots":1},"fun_mint":{"entryPoint":22798,"id":1079,"parameterSlots":2,"returnSlots":0},"fun_msgSender":{"entryPoint":20420,"id":1275,"parameterSlots":0,"returnSlots":1},"fun_name":{"entryPoint":10530,"id":742,"parameterSlots":0,"returnSlots":1},"fun_nonReentrantAfter":{"entryPoint":18536,"id":1579,"parameterSlots":0,"returnSlots":0},"fun_nonReentrantBefore":{"entryPoint":18364,"id":1563,"parameterSlots":0,"returnSlots":0},"fun_owner":{"entryPoint":16725,"id":105,"parameterSlots":0,"returnSlots":1},"fun_pause":{"entryPoint":23138,"id":1444,"parameterSlots":0,"returnSlots":0},"fun_pause_3584":{"entryPoint":15224,"id":3584,"parameterSlots":0,"returnSlots":0},"fun_pause_inner":{"entryPoint":15214,"id":null,"parameterSlots":0,"returnSlots":0},"fun_paused":{"entryPoint":12776,"id":1395,"parameterSlots":0,"returnSlots":1},"fun_processInterest":{"entryPoint":22058,"id":3574,"parameterSlots":0,"returnSlots":0},"fun_proxiableUUID":{"entryPoint":12718,"id":520,"parameterSlots":0,"returnSlots":1},"fun_proxiableUUID_inner":{"entryPoint":12706,"id":null,"parameterSlots":1,"returnSlots":1},"fun_registry":{"entryPoint":15166,"id":3767,"parameterSlots":0,"returnSlots":1},"fun_reinitialize":{"entryPoint":16708,"id":3190,"parameterSlots":7,"returnSlots":0},"fun_reinitialize_inner":{"entryPoint":16457,"id":null,"parameterSlots":7,"returnSlots":0},"fun_renounceOwnership":{"entryPoint":15152,"id":136,"parameterSlots":0,"returnSlots":0},"fun_renounceOwnership_inner":{"entryPoint":15133,"id":null,"parameterSlots":0,"returnSlots":0},"fun_requireNotPaused":{"entryPoint":18565,"id":1407,"parameterSlots":0,"returnSlots":0},"fun_requirePaused":{"entryPoint":25914,"id":1420,"parameterSlots":0,"returnSlots":0},"fun_revert":{"entryPoint":27606,"id":2414,"parameterSlots":1,"returnSlots":0},"fun_setImplementation":{"entryPoint":27093,"id":1833,"parameterSlots":1,"returnSlots":0},"fun_spendAllowance":{"entryPoint":20513,"id":1246,"parameterSlots":3,"returnSlots":0},"fun_symbol":{"entryPoint":16755,"id":758,"parameterSlots":0,"returnSlots":1},"fun_totalSupply":{"entryPoint":10636,"id":783,"parameterSlots":0,"returnSlots":1},"fun_totalValuation":{"entryPoint":10837,"id":3699,"parameterSlots":0,"returnSlots":1},"fun_transfer":{"entryPoint":16880,"id":827,"parameterSlots":2,"returnSlots":1},"fun_transferFrom":{"entryPoint":10667,"id":907,"parameterSlots":3,"returnSlots":1},"fun_transferOwnership":{"entryPoint":18309,"id":164,"parameterSlots":1,"returnSlots":0},"fun_transferOwnership_inner":{"entryPoint":18195,"id":null,"parameterSlots":1,"returnSlots":0},"fun_unitPrice":{"entryPoint":17774,"id":3755,"parameterSlots":0,"returnSlots":1},"fun_unpause":{"entryPoint":21206,"id":1468,"parameterSlots":0,"returnSlots":0},"fun_unpause_3594":{"entryPoint":12544,"id":3594,"parameterSlots":0,"returnSlots":0},"fun_unpause_3594_inner":{"entryPoint":12534,"id":null,"parameterSlots":0,"returnSlots":0},"fun_unpause_inner":{"entryPoint":21119,"id":null,"parameterSlots":0,"returnSlots":0},"fun_update":{"entryPoint":25146,"id":1046,"parameterSlots":3,"returnSlots":0},"fun_upgradeToAndCall":{"entryPoint":26039,"id":1867,"parameterSlots":2,"returnSlots":0},"fun_upgradeToAndCallUUPS":{"entryPoint":21550,"id":629,"parameterSlots":2,"returnSlots":0},"fun_upgradeToAndCall_540":{"entryPoint":12595,"id":540,"parameterSlots":2,"returnSlots":0},"fun_upgradeToAndCall_inner":{"entryPoint":12574,"id":null,"parameterSlots":2,"returnSlots":0},"fun_verifyCallResultFromTarget":{"entryPoint":27442,"id":2374,"parameterSlots":3,"returnSlots":1},"fun_withdraw":{"entryPoint":10209,"id":4216,"parameterSlots":2,"returnSlots":0},"fun_withdraw_inner":{"entryPoint":7113,"id":null,"parameterSlots":2,"returnSlots":0},"fun_yearnVault":{"entryPoint":16786,"id":3779,"parameterSlots":0,"returnSlots":1},"getter_fun_UPGRADE_INTERFACE_VERSION":{"entryPoint":3325,"id":472,"parameterSlots":0,"returnSlots":1},"getter_fun_accumulatedAssetB":{"entryPoint":3927,"id":2995,"parameterSlots":0,"returnSlots":1},"getter_fun_allTimeInterest":{"entryPoint":2170,"id":2999,"parameterSlots":0,"returnSlots":1},"getter_fun_baseAsset":{"entryPoint":3452,"id":2985,"parameterSlots":0,"returnSlots":1},"getter_fun_lastDeposit":{"entryPoint":1494,"id":2997,"parameterSlots":0,"returnSlots":1},"getter_fun_quoteAsset":{"entryPoint":3995,"id":2990,"parameterSlots":0,"returnSlots":1},"identity":{"entryPoint":4118,"id":null,"parameterSlots":1,"returnSlots":1},"mapping_index_access_mapping_address_mapping_address_uint256_of_address":{"entryPoint":16914,"id":null,"parameterSlots":2,"returnSlots":1},"mapping_index_access_mapping_address_uint256_of_address":{"entryPoint":15014,"id":null,"parameterSlots":2,"returnSlots":1},"mask_bytes_dynamic":{"entryPoint":26677,"id":null,"parameterSlots":2,"returnSlots":1},"modifier_initializer":{"entryPoint":17090,"id":302,"parameterSlots":6,"returnSlots":0},"modifier_nonReentrant":{"entryPoint":16816,"id":1538,"parameterSlots":0,"returnSlots":0},"modifier_nonReentrant_3207":{"entryPoint":12806,"id":1538,"parameterSlots":2,"returnSlots":0},"modifier_nonReentrant_3847":{"entryPoint":4067,"id":1538,"parameterSlots":2,"returnSlots":0},"modifier_notDelegated":{"entryPoint":12611,"id":496,"parameterSlots":1,"returnSlots":1},"modifier_onlyInitializing":{"entryPoint":26259,"id":357,"parameterSlots":1,"returnSlots":0},"modifier_onlyInitializing_1339":{"entryPoint":23327,"id":357,"parameterSlots":0,"returnSlots":0},"modifier_onlyInitializing_1348":{"entryPoint":27040,"id":357,"parameterSlots":0,"returnSlots":0},"modifier_onlyInitializing_1503":{"entryPoint":23289,"id":357,"parameterSlots":0,"returnSlots":0},"modifier_onlyInitializing_1512":{"entryPoint":26983,"id":357,"parameterSlots":0,"returnSlots":0},"modifier_onlyInitializing_47":{"entryPoint":23184,"id":357,"parameterSlots":1,"returnSlots":0},"modifier_onlyInitializing_499":{"entryPoint":23269,"id":357,"parameterSlots":0,"returnSlots":0},"modifier_onlyInitializing_690":{"entryPoint":23225,"id":357,"parameterSlots":2,"returnSlots":0},"modifier_onlyInitializing_705":{"entryPoint":26403,"id":357,"parameterSlots":2,"returnSlots":0},"modifier_onlyOwner":{"entryPoint":15075,"id":89,"parameterSlots":0,"returnSlots":0},"modifier_onlyOwner_142":{"entryPoint":18176,"id":89,"parameterSlots":1,"returnSlots":0},"modifier_onlyOwner_3196":{"entryPoint":21427,"id":89,"parameterSlots":1,"returnSlots":0},"modifier_onlyOwner_3578":{"entryPoint":15196,"id":89,"parameterSlots":0,"returnSlots":0},"modifier_onlyOwner_3588":{"entryPoint":12516,"id":89,"parameterSlots":0,"returnSlots":0},"modifier_onlyProxy":{"entryPoint":12554,"id":488,"parameterSlots":2,"returnSlots":0},"modifier_reinitializer":{"entryPoint":15528,"id":349,"parameterSlots":7,"returnSlots":0},"modifier_whenNotPaused":{"entryPoint":16842,"id":1371,"parameterSlots":0,"returnSlots":0},"modifier_whenNotPaused_1424":{"entryPoint":23032,"id":1371,"parameterSlots":0,"returnSlots":0},"modifier_whenNotPaused_3209":{"entryPoint":12834,"id":1371,"parameterSlots":2,"returnSlots":0},"modifier_whenNotPaused_3849":{"entryPoint":4095,"id":1371,"parameterSlots":2,"returnSlots":0},"modifier_whenPaused":{"entryPoint":21047,"id":1379,"parameterSlots":0,"returnSlots":0},"panic_error_0x11":{"entryPoint":5011,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x12":{"entryPoint":5120,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x22":{"entryPoint":10226,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":1674,"id":null,"parameterSlots":0,"returnSlots":0},"prepare_store_address":{"entryPoint":15812,"id":null,"parameterSlots":1,"returnSlots":1},"prepare_store_bool":{"entryPoint":15459,"id":null,"parameterSlots":1,"returnSlots":1},"prepare_store_contract_IBaluniV1Registry":{"entryPoint":15954,"id":null,"parameterSlots":1,"returnSlots":1},"prepare_store_contract_IYearnVault":{"entryPoint":15883,"id":null,"parameterSlots":1,"returnSlots":1},"prepare_store_uint256":{"entryPoint":7078,"id":null,"parameterSlots":1,"returnSlots":1},"prepare_store_uint64":{"entryPoint":15376,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_storage_split_dynamic_address":{"entryPoint":3438,"id":null,"parameterSlots":2,"returnSlots":1},"read_from_storage_split_dynamic_uint256":{"entryPoint":1480,"id":null,"parameterSlots":2,"returnSlots":1},"read_from_storage_split_offset_address":{"entryPoint":4874,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_storage_split_offset_bool":{"entryPoint":15260,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_storage_split_offset_contract_IBaluniV1Registry":{"entryPoint":6666,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_storage_split_offset_contract_IYearnVault":{"entryPoint":4666,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_storage_split_offset_t_bool":{"entryPoint":12763,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_storage_split_offset_uint256":{"entryPoint":10623,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_storage_split_offset_uint64":{"entryPoint":15306,"id":null,"parameterSlots":1,"returnSlots":1},"require_helper_stringliteral":{"entryPoint":4549,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_2c10":{"entryPoint":6167,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_335f":{"entryPoint":12942,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_4753":{"entryPoint":4393,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_4afb":{"entryPoint":19342,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_53fb":{"entryPoint":16390,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_5a2a":{"entryPoint":23528,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_6a54":{"entryPoint":5961,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_6ab8":{"entryPoint":5767,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_76e5":{"entryPoint":6554,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_83d0":{"entryPoint":6360,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_8780":{"entryPoint":19148,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_8914":{"entryPoint":16234,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_8df7":{"entryPoint":5520,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_c766":{"entryPoint":6925,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_ccca":{"entryPoint":5326,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_df2e":{"entryPoint":23684,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_f247":{"entryPoint":4237,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_f9fc":{"entryPoint":16078,"id":null,"parameterSlots":1,"returnSlots":0},"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d":{"entryPoint":1666,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_42b3090547df1d2001c96683413b8cf91c1b902ef5e3cb8d9f6f304cf7446f74":{"entryPoint":4063,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae":{"entryPoint":1670,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db":{"entryPoint":575,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb":{"entryPoint":567,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b":{"entryPoint":571,"id":null,"parameterSlots":0,"returnSlots":0},"revert_forward":{"entryPoint":4838,"id":null,"parameterSlots":0,"returnSlots":0},"round_up_to_mul_of":{"entryPoint":830,"id":null,"parameterSlots":1,"returnSlots":1},"shift_left":{"entryPoint":6992,"id":null,"parameterSlots":1,"returnSlots":1},"shift_left_224":{"entryPoint":4767,"id":null,"parameterSlots":1,"returnSlots":1},"shift_left_64":{"entryPoint":15411,"id":null,"parameterSlots":1,"returnSlots":1},"shift_left_dynamic":{"entryPoint":26433,"id":null,"parameterSlots":2,"returnSlots":1},"shift_right_0_unsigned":{"entryPoint":4616,"id":null,"parameterSlots":1,"returnSlots":1},"shift_right_64_unsigned":{"entryPoint":15234,"id":null,"parameterSlots":1,"returnSlots":1},"shift_right_unsigned":{"entryPoint":555,"id":null,"parameterSlots":1,"returnSlots":1},"shift_right_unsigned_dynamic":{"entryPoint":1449,"id":null,"parameterSlots":2,"returnSlots":1},"storage_set_to_zero_uint256":{"entryPoint":26539,"id":null,"parameterSlots":2,"returnSlots":0},"store_literal_in_memory_075182a57f83974087c76763cd3bc4eedd97b16a8f6ac226f0c2ef23a69b575b":{"entryPoint":4460,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_2ade050ecfcf8ae20ae1d10a23573f9d7e0bad85e74a2cf8338a65401e64558c":{"entryPoint":3239,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_2c10bb6c20ddca68724a9b8bcf1a3fd00ea3c939d09d5321ef4aab4cf18ec592":{"entryPoint":6078,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_335ff2e4b249975444723ab3dc1716db90a7dff95cbce35a34ad25055762f887":{"entryPoint":12854,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_47533c3652efd02135ecc34b3fac8efc7b14bf0618b9392fd6e044a3d8a6eef5":{"entryPoint":4304,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_4afb667d17b0530260ad206e92430288c04d9a1620064032e278e9638d69f21f":{"entryPoint":19215,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_53fb86809bff5dc62f76bc95bbc7b572a1cc94bf1175d9568e8046d7847ef4ec":{"entryPoint":16301,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_5a2aae2d17adf319835d1d5e7cf18b37e3e2f2096577dc0ce875faec48f9a25a":{"entryPoint":23401,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_6a5420b46d971cd4adc7c600c9ac745e4dfe1b0882c683155412840675ac8dd9":{"entryPoint":5834,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_6ab8fc4ce3762dbd01ecb51b289abf3d35a1ae045aa671894e0484b8219b8808":{"entryPoint":5640,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_76e5ea5e74c767d4b187d60c8d1c088841d1ca2854cb0aa71c073344ff59e324":{"entryPoint":6427,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_83d08a31324e210a64b61b9e41ca062e33813b5f2ca236adfec41bd9784ac087":{"entryPoint":6271,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_8780878e84f6472e4e5080bcf3492594eda23c72f61c3d0cdccdc869ee2d9d30":{"entryPoint":19060,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_89141ec2c606ec003f6f5f1768c23192e8ad9a256043aab9d456c1693f9c79ae":{"entryPoint":16145,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_8df75ae507dbaf3dad7a5532336cf0b6653a2f884906812afcc1c21c7d32d672":{"entryPoint":5393,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_c766bbf94e1d4ee2c587f13da8ba24e222f68835e65af46bb7ea43e218ad9a58":{"entryPoint":6836,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_ccca7ff1468d598a7b4a53b0d72e019c7ab8452a3d681fa867da7e6021bbfc25":{"entryPoint":5199,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_df2ebb4d199325e76f7966b4aa783d4644729570ebb2dcefef37eefd936f4949":{"entryPoint":23595,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_f247f7c1df7c48d1adf3ebe04e09d491abca7b6e14a32a1b30359ea588b9d3d6":{"entryPoint":4149,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_f9fc9be991fb15edd8b6c78e603f09bcc597989ed5b6a9e284f87c92e42b3b89":{"entryPoint":15989,"id":null,"parameterSlots":1,"returnSlots":0},"update_byte_slice_20_shift":{"entryPoint":15771,"id":null,"parameterSlots":2,"returnSlots":1},"update_byte_slice_8_shift":{"entryPoint":15319,"id":null,"parameterSlots":2,"returnSlots":1},"update_byte_slice_dynamic32":{"entryPoint":26437,"id":null,"parameterSlots":3,"returnSlots":1},"update_byte_slice_shift":{"entryPoint":6997,"id":null,"parameterSlots":2,"returnSlots":1},"update_byte_slice_shift_0":{"entryPoint":21065,"id":null,"parameterSlots":2,"returnSlots":1},"update_byte_slice_shift_8":{"entryPoint":15417,"id":null,"parameterSlots":2,"returnSlots":1},"update_storage_value_offsett_address_to_address":{"entryPoint":15815,"id":null,"parameterSlots":2,"returnSlots":0},"update_storage_value_offsett_bool_to_bool":{"entryPoint":15462,"id":null,"parameterSlots":2,"returnSlots":0},"update_storage_value_offsett_bool_to_t_bool":{"entryPoint":21087,"id":null,"parameterSlots":2,"returnSlots":0},"update_storage_value_offsett_contract_IBaluniV1Registry_to_contract_IBaluniV1Registry":{"entryPoint":15957,"id":null,"parameterSlots":2,"returnSlots":0},"update_storage_value_offsett_contract_IYearnVault_to_contract_IYearnVault":{"entryPoint":15886,"id":null,"parameterSlots":2,"returnSlots":0},"update_storage_value_offsett_string_to_string":{"entryPoint":26923,"id":null,"parameterSlots":2,"returnSlots":0},"update_storage_value_offsett_uint256_to_uint256":{"entryPoint":7081,"id":null,"parameterSlots":2,"returnSlots":0},"update_storage_value_offsett_uint64_to_uint64":{"entryPoint":15379,"id":null,"parameterSlots":2,"returnSlots":0},"update_storage_value_uint256_to_uint256":{"entryPoint":26505,"id":null,"parameterSlots":3,"returnSlots":0},"validator_revert_address":{"entryPoint":654,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_bool":{"entryPoint":6736,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_bytes32":{"entryPoint":21485,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_uint256":{"entryPoint":582,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_uint64":{"entryPoint":2699,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_uint8":{"entryPoint":4773,"id":null,"parameterSlots":1,"returnSlots":0},"wrapping_add_uint256":{"entryPoint":25132,"id":null,"parameterSlots":2,"returnSlots":1},"wrapping_sub_uint256":{"entryPoint":20499,"id":null,"parameterSlots":2,"returnSlots":1},"zero_value_for_split_address":{"entryPoint":15162,"id":null,"parameterSlots":0,"returnSlots":1},"zero_value_for_split_bool":{"entryPoint":10561,"id":null,"parameterSlots":0,"returnSlots":1},"zero_value_for_split_bytes":{"entryPoint":27296,"id":null,"parameterSlots":0,"returnSlots":1},"zero_value_for_split_bytes32":{"entryPoint":12607,"id":null,"parameterSlots":0,"returnSlots":1},"zero_value_for_split_string":{"entryPoint":10221,"id":null,"parameterSlots":0,"returnSlots":1},"zero_value_for_split_uint256":{"entryPoint":10599,"id":null,"parameterSlots":0,"returnSlots":1},"zero_value_for_split_uint8":{"entryPoint":12123,"id":null,"parameterSlots":0,"returnSlots":1}},"generatedSources":[],"immutableReferences":{"468":[{"length":32,"start":21245},{"length":32,"start":21378},{"length":32,"start":21885}]},"linkReferences":{},"object":"60806040526004361015610013575b610fdf565b61001d5f3561022b565b8062f714ce1461022657806306fdde0314610221578063095ea7b31461021c57806318160ddd1461021757806323b872dd14610212578063295b93001461020d578063313ce5671461020857806336b7710714610203578063374261ab146101fe5780633f4ba83a146101f95780634f1ef286146101f457806352d1902d146101ef5780635c975abb146101ea5780636560bc80146101e55780636e553f65146101e057806370a08231146101db578063715018a6146101d65780637b103999146101d15780638456cb59146101cc57806388696f62146101c75780638da5cb5b146101c257806395d89b41146101bd5780639db5df46146101b8578063a6f2ae3a146101b3578063a9059cbb146101ae578063ad3cb1cc146101a9578063cdf456e1146101a4578063dd62ed3e1461019f578063e56f2fe41461019a578063e73faa2d14610195578063f2fde38b14610190578063f7fde10f1461018b5763fdf262b70361000e57610faa565b610f66565b610f24565b610eef565b610eb5565b610deb565b610d89565b610d08565b610c5a565b610c27565b610bf2565b610bbd565b610b88565b610b4e565b6109cf565b61099a565b610945565b610910565b6108be565b610889565b610845565b610810565b6107c1565b61064f565b61061a565b6105e5565b610574565b610517565b6104e1565b610472565b61041a565b610391565b6102e3565b60e01c90565b60405190565b5f80fd5b5f80fd5b5f80fd5b90565b61024f81610243565b0361025657565b5f80fd5b9050359061026782610246565b565b73ffffffffffffffffffffffffffffffffffffffff1690565b61028b90610269565b90565b61029781610282565b0361029e57565b5f80fd5b905035906102af8261028e565b565b91906040838203126102d957806102cd6102d6925f860161025a565b936020016102a2565b90565b61023b565b5f0190565b34610312576102fc6102f63660046102b1565b906127e1565b610304610231565b8061030e816102de565b0390f35b610237565b5f91031261032157565b61023b565b5190565b60209181520190565b90825f9392825e0152565b601f801991011690565b6103676103706020936103759361035e81610326565b9384809361032a565b95869101610333565b61033e565b0190565b61038e9160208201915f818403910152610348565b90565b346103c1576103a1366004610317565b6103bd6103ac612922565b6103b4610231565b91829182610379565b0390f35b610237565b91906040838203126103ee57806103e26103eb925f86016102a2565b9360200161025a565b90565b61023b565b151590565b610401906103f3565b9052565b9190610418905f602085019401906103f8565b565b3461044b576104476104366104303660046103c6565b90612945565b61043e610231565b91829182610405565b0390f35b610237565b61045990610243565b9052565b9190610470905f60208501940190610450565b565b346104a257610482366004610317565b61049e61048d61298c565b610495610231565b9182918261045d565b0390f35b610237565b90916060828403126104dc576104d96104c2845f85016102a2565b936104d081602086016102a2565b9360400161025a565b90565b61023b565b346105125761050e6104fd6104f73660046104a7565b916129ab565b610505610231565b91829182610405565b0390f35b610237565b3461054757610527366004610317565b610543610532612a55565b61053a610231565b9182918261045d565b0390f35b610237565b60ff1690565b61055b9061054c565b9052565b9190610572905f60208501940190610552565b565b346105a457610584366004610317565b6105a061058f612f5f565b610597610231565b9182918261055f565b0390f35b610237565b1c90565b90565b6105c09060086105c593026105a9565b6105ad565b90565b906105d391546105b0565b90565b6105e260055f906105c8565b90565b34610615576105f5366004610317565b6106116106006105d6565b610608610231565b9182918261045d565b0390f35b610237565b3461064a5761062a366004610317565b610646610635612f75565b61063d610231565b9182918261045d565b0390f35b610237565b3461067d5761065f366004610317565b610667613100565b61066f610231565b80610679816102de565b0390f35b610237565b5f80fd5b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b906106c19061033e565b810190811067ffffffffffffffff8211176106db57604052565b61068a565b906106f36106ec610231565b92836106b7565b565b67ffffffffffffffff81116107135761070f60209161033e565b0190565b61068a565b90825f939282370152565b90929192610738610733826106f5565b6106e0565b938185526020850190828401116107545761075292610718565b565b610686565b9080601f830112156107775781602061077493359101610723565b90565b610682565b9190916040818403126107bc57610795835f83016102a2565b92602082013567ffffffffffffffff81116107b7576107b49201610759565b90565b61023f565b61023b565b6107d56107cf36600461077c565b90613133565b6107dd610231565b806107e7816102de565b0390f35b90565b6107f7906107eb565b9052565b919061080e905f602085019401906107ee565b565b3461084057610820366004610317565b61083c61082b6131ae565b610833610231565b918291826107fb565b0390f35b610237565b3461087557610855366004610317565b6108716108606131e8565b610868610231565b91829182610405565b0390f35b610237565b61088660065f906105c8565b90565b346108b957610899366004610317565b6108b56108a461087a565b6108ac610231565b9182918261045d565b0390f35b610237565b346108ed576108d76108d13660046102b1565b90613a8e565b6108df610231565b806108e9816102de565b0390f35b610237565b9060208282031261090b57610908915f016102a2565b90565b61023b565b346109405761093c61092b6109263660046108f2565b613abc565b610933610231565b9182918261045d565b0390f35b610237565b3461097357610955366004610317565b61095d613b30565b610965610231565b8061096f816102de565b0390f35b610237565b61098190610282565b9052565b9190610998905f60208501940190610978565b565b346109ca576109aa366004610317565b6109c66109b5613b3e565b6109bd610231565b91829182610985565b0390f35b610237565b346109fd576109df366004610317565b6109e7613b78565b6109ef610231565b806109f9816102de565b0390f35b610237565b67ffffffffffffffff8111610a2057610a1c60209161033e565b0190565b61068a565b90929192610a3a610a3582610a02565b6106e0565b93818552602085019082840111610a5657610a5492610718565b565b610686565b9080601f83011215610a7957816020610a7693359101610a25565b90565b610682565b67ffffffffffffffff1690565b610a9481610a7e565b03610a9b57565b5f80fd5b90503590610aac82610a8b565b565b60e081830312610b49575f81013567ffffffffffffffff8111610b445782610ad7918301610a5b565b92602082013567ffffffffffffffff8111610b3f5783610af8918401610a5b565b92610b0681604085016102a2565b92610b1482606083016102a2565b92610b3c610b2584608085016102a2565b93610b338160a086016102a2565b9360c001610a9f565b90565b61023f565b61023f565b61023b565b34610b8357610b6d610b61366004610aae565b95949094939193614144565b610b75610231565b80610b7f816102de565b0390f35b610237565b34610bb857610b98366004610317565b610bb4610ba3614155565b610bab610231565b91829182610985565b0390f35b610237565b34610bed57610bcd366004610317565b610be9610bd8614173565b610be0610231565b91829182610379565b0390f35b610237565b34610c2257610c02366004610317565b610c1e610c0d614192565b610c15610231565b91829182610985565b0390f35b610237565b34610c5557610c37366004610317565b610c3f6141e6565b610c47610231565b80610c51816102de565b0390f35b610237565b34610c8b57610c87610c76610c703660046103c6565b906141f0565b610c7e610231565b91829182610405565b0390f35b610237565b90610ca2610c9d83610a02565b6106e0565b918252565b5f7f352e302e30000000000000000000000000000000000000000000000000000000910152565b610cd86005610c90565b90610ce560208301610ca7565b565b610cef610cce565b90565b610cfa610ce7565b90565b610d05610cf2565b90565b34610d3857610d18366004610317565b610d34610d23610cfd565b610d2b610231565b91829182610379565b0390f35b610237565b73ffffffffffffffffffffffffffffffffffffffff1690565b610d66906008610d6b93026105a9565b610d3d565b90565b90610d799154610d56565b90565b610d865f80610d6e565b90565b34610db957610d99366004610317565b610db5610da4610d7c565b610dac610231565b91829182610985565b0390f35b610237565b9190604083820312610de65780610dda610de3925f86016102a2565b936020016102a2565b90565b61023b565b34610e1c57610e18610e07610e01366004610dbe565b90614228565b610e0f610231565b9182918261045d565b0390f35b610237565b909160c082840312610eb0575f82013567ffffffffffffffff8111610eab5783610e4c918401610a5b565b92602083013567ffffffffffffffff8111610ea65781610e6d918501610a5b565b92610e7b82604083016102a2565b92610ea3610e8c84606085016102a2565b93610e9a81608086016102a2565b9360a0016102a2565b90565b61023f565b61023f565b61023b565b34610eea57610ed4610ec8366004610e21565b9493909392919261453f565b610edc610231565b80610ee6816102de565b0390f35b610237565b34610f1f57610eff366004610317565b610f1b610f0a61456e565b610f12610231565b9182918261045d565b0390f35b610237565b34610f5257610f3c610f373660046108f2565b614785565b610f44610231565b80610f4e816102de565b0390f35b610237565b610f6360045f906105c8565b90565b34610f9657610f76366004610317565b610f92610f81610f57565b610f89610231565b9182918261045d565b0390f35b610237565b610fa760025f90610d6e565b90565b34610fda57610fba366004610317565b610fd6610fc5610f9b565b610fcd610231565b91829182610985565b0390f35b610237565b5f80fd5b90610ff591610ff06147bc565b610fff565b610ffd614868565b565b906110119161100c614885565b611bc9565b565b90565b90565b61102d61102861103292611013565b611016565b610243565b90565b5f7f536861726573206d7573742062652067726561746572207468616e207a65726f910152565b6110686020809261032a565b61107181611035565b0190565b61108a9060208101905f81830391015261105c565b90565b1561109457565b61109c610231565b7f08c379a0000000000000000000000000000000000000000000000000000000008152806110cc60048201611075565b0390fd5b5f7f496e73756666696369656e742062616c616e6365000000000000000000000000910152565b611104601460209261032a565b61110d816110d0565b0190565b6111269060208101905f8183039101526110f7565b90565b1561113057565b611138610231565b7f08c379a00000000000000000000000000000000000000000000000000000000081528061116860048201611111565b0390fd5b5f7f546f74616c20737570706c792063616e6e6f74206265207a65726f0000000000910152565b6111a0601b60209261032a565b6111a98161116c565b0190565b6111c29060208101905f818303910152611193565b90565b156111cc57565b6111d4610231565b7f08c379a000000000000000000000000000000000000000000000000000000000815280611204600482016111ad565b0390fd5b5f1c90565b73ffffffffffffffffffffffffffffffffffffffff1690565b61123261123791611208565b61120d565b90565b6112449054611226565b90565b61125b61125661126092610269565b611016565b610269565b90565b61126c90611247565b90565b61127890611263565b90565b61128490611247565b90565b6112909061127b565b90565b61129c90611263565b90565b60e01b90565b6112ae8161054c565b036112b557565b5f80fd5b905051906112c6826112a5565b565b906020828203126112e1576112de915f016112b9565b90565b61023b565b6112ee610231565b3d5f823e3d90fd5b61130261130791611208565b610d3d565b90565b61131490546112f6565b90565b61132090611263565b90565b9050519061133082610246565b565b9060208282031261134b57611348915f01611323565b90565b61023b565b61135990611247565b90565b61136590611350565b90565b61137190611263565b90565b90565b61138b61138661139092611374565b611016565b61054c565b90565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b6113cc6113d29161054c565b9161054c565b90039060ff82116113df57565b611393565b6113ed9061054c565b604d81116113fb57600a0a90565b611393565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b61143961143f91610243565b91610243565b90811561144a570490565b611400565b60207f206f766572666c6f770000000000000000000000000000000000000000000000917f596561726e5661756c742062616c616e6365207363616c696e6720776f756c645f8201520152565b6114a9602960409261032a565b6114b28161144f565b0190565b6114cb9060208101905f81830391015261149c565b90565b156114d557565b6114dd610231565b7f08c379a00000000000000000000000000000000000000000000000000000000081528061150d600482016114b6565b0390fd5b60207f666c6f7700000000000000000000000000000000000000000000000000000000917f51756f74652062616c616e6365207363616c696e6720776f756c64206f7665725f8201520152565b61156b602460409261032a565b61157481611511565b0190565b61158d9060208101905f81830391015261155e565b90565b1561159757565b61159f610231565b7f08c379a0000000000000000000000000000000000000000000000000000000008152806115cf60048201611578565b0390fd5b6115e26115e891939293610243565b92610243565b916115f4838202610243565b92818404149015171561160357565b611393565b60207f7700000000000000000000000000000000000000000000000000000000000000917f5368617265732063616c63756c6174696f6e20776f756c64206f766572666c6f5f8201520152565b611662602160409261032a565b61166b81611608565b0190565b6116849060208101905f818303910152611655565b90565b1561168e57565b611696610231565b7f08c379a0000000000000000000000000000000000000000000000000000000008152806116c66004820161166f565b0390fd5b60207f6c74000000000000000000000000000000000000000000000000000000000000917f496e73756666696369656e742061737365747320696e20596561726e205661755f8201520152565b611724602260409261032a565b61172d816116ca565b0190565b6117469060208101905f818303910152611717565b90565b1561175057565b611758610231565b7f08c379a00000000000000000000000000000000000000000000000000000000081528061178860048201611731565b0390fd5b6040906117b56117bc94969593966117ab60608401985f850190610450565b6020830190610978565b0190610978565b565b5f7f426173652062616c616e636520636865636b206661696c656400000000000000910152565b6117f2601960209261032a565b6117fb816117be565b0190565b6118149060208101905f8183039101526117e5565b90565b1561181e57565b611826610231565b7f08c379a000000000000000000000000000000000000000000000000000000000815280611856600482016117ff565b0390fd5b61186961186f91939293610243565b92610243565b820391821161187a57565b611393565b5f7f48616972637574206578636565647320616d6f756e7400000000000000000000910152565b6118b3601660209261032a565b6118bc8161187f565b0190565b6118d59060208101905f8183039101526118a6565b90565b156118df57565b6118e7610231565b7f08c379a000000000000000000000000000000000000000000000000000000000815280611917600482016118c0565b0390fd5b60207f7920686169726375740000000000000000000000000000000000000000000000917f5365636f6e6461727920686169726375742065786365656473207072696d61725f8201520152565b611975602960409261032a565b61197e8161191b565b0190565b6119979060208101905f818303910152611968565b90565b156119a157565b6119a9610231565b7f08c379a0000000000000000000000000000000000000000000000000000000008152806119d960048201611982565b0390fd5b73ffffffffffffffffffffffffffffffffffffffff1690565b611a02611a0791611208565b6119dd565b90565b611a1490546119f6565b90565b611a2090611263565b90565b90505190611a308261028e565b565b90602082820312611a4b57611a48915f01611a23565b90565b61023b565b611a59816103f3565b03611a6057565b5f80fd5b90505190611a7182611a50565b565b90602082820312611a8c57611a89915f01611a64565b90565b61023b565b916020611ab2929493611aab60408201965f830190610978565b0190610450565b565b5f7f4661696c656420746f207472616e736665722071756f74654173736574000000910152565b611ae8601d60209261032a565b611af181611ab4565b0190565b611b0a9060208101905f818303910152611adb565b90565b15611b1457565b611b1c610231565b7f08c379a000000000000000000000000000000000000000000000000000000000815280611b4c60048201611af5565b0390fd5b5f1b90565b90611b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff91611b50565b9181191691161790565b611b9e611b99611ba392610243565b611016565b610243565b90565b90565b90611bbe611bb9611bc592611b8a565b611ba6565b8254611b55565b9055565b611be581611bdf611bd95f611019565b91610243565b1161108d565b611c0a611bf133613abc565b611c03611bfd84610243565b91610243565b1015611129565b611c2d611c1561298c565b611c27611c215f611019565b91610243565b116111c5565b611c6a6020611c54611c4f611c4a611c45600161123a565b61126f565b611287565b611293565b63313ce56790611c62610231565b93849261129f565b82528180611c7a600482016102de565b03915afa9081156127dc575f916127ae575b5090611cc36020611cad611ca8611ca3600261130a565b611287565b611293565b63313ce56790611cbb610231565b93849261129f565b82528180611cd3600482016102de565b03915afa9081156127a9575f9161277b575b5090611d306020611cfe611cf9600161123a565b61126f565b6370a0823190611d25611d1030611317565b92611d19610231565b9586948593849361129f565b835260048301610985565b03915afa908115612776575f91612748575b5090611d956020611d63611d5e611d59600261130a565b61135c565b611368565b6370a0823190611d8a611d7530611317565b92611d7e610231565b9586948593849361129f565b835260048301610985565b03915afa908115612743575f91612715575b5093611df96020611dc7611dc2611dbd5f61130a565b61135c565b611368565b6370a0823190611dee611dd930611317565b92611de2610231565b9586948593849361129f565b835260048301610985565b03915afa908115612710575f916126e2575b5092807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60128490611e3c90611377565b90611e46916113c0565b611e4f906113e4565b611e589161142d565b611e6190610243565b90611e6b90610243565b1115611e76906114ce565b857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60128790611ea590611377565b90611eaf916113c0565b611eb8906113e4565b611ec19161142d565b611eca90610243565b90611ed490610243565b1115611edf90611590565b60128290611eec90611377565b90611ef6916113c0565b611eff906113e4565b611f08916115d3565b9460128590611f1690611377565b90611f20916113c0565b611f29906113e4565b611f32916115d3565b90827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff87611f5f9161142d565b611f6890610243565b90611f7290610243565b1115611f7d90611687565b827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83611fa99161142d565b611fb290610243565b90611fbc90610243565b1115611fc790611687565b8286611fd2916115d3565b611fda61298c565b611fe39161142d565b918390611fef916115d3565b611ff761298c565b6120009161142d565b92339061200c916148cf565b601261201790611377565b90612021916113c0565b61202a906113e4565b6120339161142d565b92601261203f90611377565b90612049916113c0565b612052906113e4565b61205b9161142d565b9282612067600161123a565b6120709061126f565b6307a2d13a61207d610231565b8094612089829361129f565b825260048201906120999161045d565b03815a93602094fa80156126dd576120bf6120c5916120cc945f916126af575b50610243565b91610243565b1115611749565b60206120e06120db600161123a565b61126f565b63ba08765293906121155f6120f430611317565b9661212061210130611317565b612109610231565b998a978896879561129f565b85526004850161178c565b03925af19182156126aa576121829261267e575b50602061215061214b6121465f61130a565b61135c565b611368565b6370a082319061217761216230611317565b9261216b610231565b9687948593849361129f565b835260048301610985565b03915afa8015612679576121ba925f9161264b575b506121b5816121ae6121a885610243565b91610243565b1015611817565b61185a565b806121cd6121c75f611019565b91610243565b11612330575b50806121e76121e15f611019565b91610243565b11612317575b50506122016121fc600161123a565b61126f565b6122506307a2d13a91602061221e612219600161123a565b61126f565b6370a082319061224561223030611317565b92612239610231565b9687948593849361129f565b835260048301610985565b03915afa9081156123125761228d936020935f936122df575b5061228290612276610231565b9586948593849361129f565b83526004830161045d565b03915afa80156122da576122aa915f916122ac575b506005611ba9565b565b6122cd915060203d81116122d3575b6122c581836106b7565b810190611332565b5f6122a2565b503d6122bb565b6112e6565b61228291935061230490853d811161230b575b6122fc81836106b7565b810190611332565b9290612269565b503d6122f2565b6112e6565b6123299161232491614bd1565b611b0d565b5f806121ed565b6123398161494e565b906123578261235061234a84610243565b91610243565b11156118d8565b61236281839061185a565b5061236c8261494e565b6123898161238261237c86610243565b91610243565b111561199a565b6123b660206123a061239b6003611a0a565b611a17565b6304cc7325906123ae610231565b93849261129f565b825281806123c6600482016102de565b03915afa908115612646575f91612618575b509161240760206123f16123ec6003611a0a565b611a17565b633b19e84a906123ff610231565b93849261129f565b82528180612417600482016102de565b03915afa908115612613575f916125e5575b5093602061244661244161243c5f61130a565b61135c565b611368565b9263a9059cbb936124755f61245d8c94879061185a565b96612480612469610231565b9889968795869461129f565b845260048401611a91565b03925af19182156125e0576020926125b5575b506124ad6124a86124a35f61130a565b61135c565b611368565b6124da5f6124c263a9059cbb9794879061185a565b966124e56124ce610231565b9889968795869461129f565b845260048401611a91565b03925af19182156125b057602092612585575b5061251261250d6125085f61130a565b61135c565b611368565b6125355f63a9059cbb959395612540612529610231565b9788968795869461129f565b845260048401611a91565b03925af1801561258057612554575b6121d3565b6125749060203d8111612579575b61256c81836106b7565b810190611a73565b61254f565b503d612562565b6112e6565b6125a490833d81116125a9575b61259c81836106b7565b810190611a73565b6124f8565b503d612592565b6112e6565b6125d490833d81116125d9575b6125cc81836106b7565b810190611a73565b612493565b503d6125c2565b6112e6565b612606915060203d811161260c575b6125fe81836106b7565b810190611a32565b5f612429565b503d6125f4565b6112e6565b612639915060203d811161263f575b61263181836106b7565b810190611a32565b5f6123d8565b503d612627565b6112e6565b61266c915060203d8111612672575b61266481836106b7565b810190611332565b5f612197565b503d61265a565b6112e6565b61269e9060203d81116126a3575b61269681836106b7565b810190611332565b612134565b503d61268c565b6112e6565b6126d0915060203d81116126d6575b6126c881836106b7565b810190611332565b5f6120b9565b503d6126be565b6112e6565b612703915060203d8111612709575b6126fb81836106b7565b810190611332565b5f611e0b565b503d6126f1565b6112e6565b612736915060203d811161273c575b61272e81836106b7565b810190611332565b5f611da7565b503d612724565b6112e6565b612769915060203d811161276f575b61276181836106b7565b810190611332565b5f611d42565b503d612757565b6112e6565b61279c915060203d81116127a2575b61279481836106b7565b8101906112c8565b5f611ce5565b503d61278a565b6112e6565b6127cf915060203d81116127d5575b6127c781836106b7565b8101906112c8565b5f611c8c565b503d6127bd565b6112e6565b906127eb91610fe3565b565b606090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b906001600283049216801561283f575b602083101461283a57565b6127f2565b91607f169161282f565b60209181520190565b5f5260205f2090565b905f929180549061287561286e8361281f565b8094612849565b916001811690815f146128cc5750600114612890575b505050565b61289d9192939450612852565b915f925b8184106128b457505001905f808061288b565b600181602092959395548486015201910192906128a1565b92949550505060ff19168252151560200201905f808061288b565b906128f19161285b565b90565b9061291461290d92612904610231565b938480926128e7565b03836106b7565b565b61291f906128f4565b90565b61292a6127ed565b5061293e6003612938614fa0565b01612916565b90565b5f90565b61296291612951612941565b5061295a614fc4565b919091614fd1565b600190565b5f90565b61297761297c91611208565b6105ad565b90565b612989905461296b565b90565b612994612967565b506129a860026129a2614fa0565b0161297f565b90565b916129d5926129b8612941565b506129cd6129c4614fc4565b82908491615021565b9190916150ec565b600190565b6129e390611247565b90565b6129ef906129da565b90565b6129fb90611263565b90565b604090612a27612a2e9496959396612a1d60608401985f850190610978565b6020830190610978565b0190610450565b565b612a3f612a4591939293610243565b92610243565b8201809211612a5057565b611393565b612a5d612967565b50612a8b6020612a75612a706003611a0a565b611a17565b63bb3ba04c90612a83610231565b93849261129f565b82528180612a9b600482016102de565b03915afa8015612f5657612ab6915f91612f28575b506129e6565b612ae36020612acd612ac86003611a0a565b611a17565b631bf01e9b90612adb610231565b93849261129f565b82528180612af3600482016102de565b03915afa908115612f23575f91612ef5575b5090612b105f611019565b612b596020612b27612b22600161123a565b61126f565b6370a0823190612b4e612b3930611317565b92612b42610231565b9586948593849361129f565b835260048301610985565b03915afa908115612ef057612bac916020915f91612ec3575b50612b85612b80600161123a565b61126f565b612ba16307a2d13a612b95610231565b9586948593849361129f565b83526004830161045d565b03915afa908115612ebe575f91612e90575b50612c106020612bde612bd9612bd4600261130a565b61135c565b611368565b6370a0823190612c05612bf030611317565b92612bf9610231565b9586948593849361129f565b835260048301610985565b03915afa908115612e8b575f91612e5d575b50612c2c5f61130a565b612c3e612c3887610282565b91610282565b03612dc1575b6020612c4f856129f2565b63248391ff90612c84612c62600261130a565b92612c8f612c6f5f61130a565b96612c78610231565b9788968795869561129f565b8552600485016129fe565b03915afa8015612dbc57612cb393612cae925f92612d8c575b50612a30565b612a30565b91612cbc612f75565b91612cc65f61130a565b612cd8612cd284610282565b91610282565b03612cee575b505090612ceb9190612a30565b90565b612cf96020916129f2565b9163248391ff92612d26612d0c5f61130a565b9294612d3187612d1a610231565b9788968795869561129f565b8552600485016129fe565b03915afa8015612d8757612ceb93612d50925f92612d57575b50612a30565b915f612cde565b612d7991925060203d8111612d80575b612d7181836106b7565b810190611332565b905f612d4a565b503d612d67565b6112e6565b612dae91925060203d8111612db5575b612da681836106b7565b810190611332565b905f612ca8565b503d612d9c565b6112e6565b91612dcb846129f2565b90602063248391ff92612ddd5f61130a565b90612dfb8995612e0688612def610231565b9889968795869561129f565b8552600485016129fe565b03915afa908115612e5857612e22925f92612e28575b50612a30565b91612c44565b612e4a91925060203d8111612e51575b612e4281836106b7565b810190611332565b905f612e1c565b503d612e38565b6112e6565b612e7e915060203d8111612e84575b612e7681836106b7565b810190611332565b5f612c22565b503d612e6c565b6112e6565b612eb1915060203d8111612eb7575b612ea981836106b7565b810190611332565b5f612bbe565b503d612e9f565b6112e6565b612ee39150823d8111612ee9575b612edb81836106b7565b810190611332565b5f612b72565b503d612ed1565b6112e6565b612f16915060203d8111612f1c575b612f0e81836106b7565b810190611a32565b5f612b05565b503d612f04565b6112e6565b612f49915060203d8111612f4f575b612f4181836106b7565b810190611a32565b5f612ab0565b503d612f37565b6112e6565b5f90565b612f67612f5b565b50612f726012611377565b90565b612f7d612967565b50612f90612f8b600161123a565b61126f565b612fdf6307a2d13a916020612fad612fa8600161123a565b61126f565b6370a0823190612fd4612fbf30611317565b92612fc8610231565b9687948593849361129f565b835260048301610985565b03915afa9081156130df5761301c936020935f936130ac575b5061301190613005610231565b9586948593849361129f565b83526004830161045d565b03915afa9081156130a7575f91613079575b508061304b613045613040600561297f565b610243565b91610243565b115f1461306a5761306690613060600561297f565b9061185a565b5b90565b506130745f611019565b613067565b61309a915060203d81116130a0575b61309281836106b7565b810190611332565b5f61302e565b503d613088565b6112e6565b6130119193506130d190853d81116130d8575b6130c981836106b7565b810190611332565b9290612ff8565b503d6130bf565b6112e6565b6130ec6151c9565b6130f46130f6565b565b6130fe6152d6565b565b6131086130e4565b565b9061311c916131176152ec565b61311e565b565b906131319161312c816153be565b61542e565b565b9061313d9161310a565b565b5f90565b6131549061314f61556c565b6131a2565b90565b90565b61316e61316961317392613157565b611b50565b6107eb565b90565b61319f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61315a565b90565b506131ab613176565b90565b6131be6131b961313f565b613143565b90565b60ff1690565b6131d36131d891611208565b6131c1565b90565b6131e590546131c7565b90565b6131f0612941565b506132035f6131fd6155ea565b016131db565b90565b90613218916132136147bc565b613222565b613220614868565b565b906132349161322f614885565b6132f4565b565b5f7f416d6f756e74206d7573742062652067726561746572207468616e207a65726f910152565b6132696020809261032a565b61327281613236565b0190565b61328b9060208101905f81830391015261325d565b90565b1561329557565b61329d610231565b7f08c379a0000000000000000000000000000000000000000000000000000000008152806132cd60048201613276565b0390fd5b9160206132f29294936132eb60408201965f830190610450565b0190610978565b565b6133108161330a6133045f611019565b91610243565b1161328e565b61331861562a565b61333161332c6133275f61130a565b61135c565b611368565b60206323b872dd9133906133615f61334830611317565b9561336c88613355610231565b9889978896879561129f565b8552600485016129fe565b03925af18015613a8957613a5d575b506133a9602061339361338e6003611a0a565b611a17565b6304cc7325906133a1610231565b93849261129f565b825281806133b9600482016102de565b03915afa908115613a58575f91613a2a575b506133f960206133e36133de6003611a0a565b611a17565b633b19e84a906133f1610231565b93849261129f565b82528180613409600482016102de565b03915afa908115613a25575f916139f7575b50916134268161494e565b916134308361494e565b602061344b6134466134415f61130a565b61135c565b611368565b63a9059cbb93906134795f61346189879061185a565b9661348461346d610231565b9889968795869461129f565b845260048401611a91565b03925af19182156139f2576020926139c7575b506134b16134ac6134a75f61130a565b61135c565b611368565b6134d45f63a9059cbb9793976134df6134c8610231565b998a968795869461129f565b845260048401611a91565b03925af19283156139c2576134f993613996575b5061185a565b9061351361350e6135095f61130a565b61135c565b611368565b602063095ea7b39161352d613528600161123a565b61126f565b9061354b5f879561355661353f610231565b9788968795869461129f565b845260048401611a91565b03925af1801561399157613965575b50613578613573600161123a565b61126f565b916020636e553f659382906135a85f61359030611317565b976135b361359c610231565b998a968795869461129f565b8452600484016132d1565b03925af1928315613960576135f993613934575b5060206135e36135de6135d95f61130a565b611287565b611293565b63313ce567906135f1610231565b95869261129f565b82528180613609600482016102de565b03915afa801561392f57613659935f91613901575b50602061364361363e613639613634600161123a565b61126f565b611287565b611293565b63313ce56790613651610231565b96879261129f565b82528180613669600482016102de565b03915afa80156138fc576136d36136de936136d8926136e4975f916138ce575b50938061369e6136988761054c565b9161054c565b115f146138ad576136bc6136b76136c2939287906113c0565b6113e4565b9061142d565b5b926136ce6012611377565b6113c0565b6113e4565b906115d3565b9061590e565b6136f66136f1600161123a565b61126f565b6137456307a2d13a91602061371361370e600161123a565b61126f565b6370a082319061373a61372530611317565b9261372e610231565b9687948593849361129f565b835260048301610985565b03915afa9081156138a857613782936020935f93613875575b506137779061376b610231565b9586948593849361129f565b83526004830161045d565b03915afa80156138705761379f915f91613842575b506005611ba9565b6137f060206137be6137b96137b4600261130a565b61135c565b611368565b6370a08231906137e56137d030611317565b926137d9610231565b9586948593849361129f565b835260048301610985565b03915afa801561383d5761380d915f9161380f575b506004611ba9565b565b613830915060203d8111613836575b61382881836106b7565b810190611332565b5f613805565b503d61381e565b6112e6565b613863915060203d8111613869575b61385b81836106b7565b810190611332565b5f613797565b503d613851565b6112e6565b61377791935061389a90853d81116138a1575b61389281836106b7565b810190611332565b929061375e565b503d613888565b6112e6565b6138c36138be6138c99392876113c0565b6113e4565b906115d3565b6136c3565b6138ef915060203d81116138f5575b6138e781836106b7565b8101906112c8565b5f613689565b503d6138dd565b6112e6565b613922915060203d8111613928575b61391a81836106b7565b8101906112c8565b5f61361e565b503d613910565b6112e6565b6139549060203d8111613959575b61394c81836106b7565b810190611332565b6135c7565b503d613942565b6112e6565b6139859060203d811161398a575b61397d81836106b7565b810190611a73565b613565565b503d613973565b6112e6565b6139b69060203d81116139bb575b6139ae81836106b7565b810190611a73565b6134f3565b503d6139a4565b6112e6565b6139e690833d81116139eb575b6139de81836106b7565b810190611a73565b613497565b503d6139d4565b6112e6565b613a18915060203d8111613a1e575b613a1081836106b7565b810190611a32565b5f61341b565b503d613a06565b6112e6565b613a4b915060203d8111613a51575b613a4381836106b7565b810190611a32565b5f6133cb565b503d613a39565b6112e6565b613a7d9060203d8111613a82575b613a7581836106b7565b810190611a73565b61337b565b503d613a6b565b6112e6565b90613a9891613206565b565b613aa390611263565b90565b90613ab090613a9a565b5f5260205260405f2090565b613adb613ae091613acb612967565b505f613ad5614fa0565b01613aa6565b61297f565b90565b613aeb6151c9565b613af3613b1d565b565b613b09613b04613b0e92611013565b611016565b610269565b90565b613b1a90613af5565b90565b613b2e613b295f613b11565b61598c565b565b613b38613ae3565b565b5f90565b613b46613b3a565b50613b59613b546003611a0a565b611a17565b90565b613b646151c9565b613b6c613b6e565b565b613b76615a62565b565b613b80613b5c565b565b60401c90565b613b94613b9991613b82565b6131c1565b90565b613ba69054613b88565b90565b67ffffffffffffffff1690565b613bc2613bc791611208565b613ba9565b90565b613bd49054613bb6565b90565b90613bea67ffffffffffffffff91611b50565b9181191691161790565b613c08613c03613c0d92610a7e565b611016565b610a7e565b90565b90565b90613c28613c23613c2f92613bf4565b613c10565b8254613bd7565b9055565b60401b90565b90613c4d68ff000000000000000091613c33565b9181191691161790565b613c60906103f3565b90565b90565b90613c7b613c76613c8292613c57565b613c63565b8254613c39565b9055565b613c8f90610a7e565b9052565b9190613ca6905f60208501940190613c86565b565b929591939490948296613cb9615a6c565b95613cc55f8801613b9c565b8015613d76575b613d3a57613cff97613cf696613ce48b5f8b01613c13565b613cf160015f8b01613c66565b614049565b5f809101613c66565b613d357fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d291613d2c610231565b91829182613c93565b0390a1565b613d42610231565b7ff92ee8a900000000000000000000000000000000000000000000000000000000815280613d72600482016102de565b0390fd5b50613d825f8801613bca565b613d94613d8e8b610a7e565b91610a7e565b1015613ccc565b90613dba73ffffffffffffffffffffffffffffffffffffffff91611b50565b9181191691161790565b90565b90613ddc613dd7613de392613a9a565b613dc4565b8254613d9b565b9055565b613df090611247565b90565b613dfc90613de7565b90565b613e0890613de7565b90565b90565b90613e23613e1e613e2a92613dff565b613e0b565b8254613d9b565b9055565b613e3790611247565b90565b613e4390613e2e565b90565b613e4f90613e2e565b90565b90565b90613e6a613e65613e7192613e46565b613e52565b8254613d9b565b9055565b5f7f496e76616c696420617373657441206164647265737300000000000000000000910152565b613ea9601660209261032a565b613eb281613e75565b0190565b613ecb9060208101905f818303910152613e9c565b90565b15613ed557565b613edd610231565b7f08c379a000000000000000000000000000000000000000000000000000000000815280613f0d60048201613eb6565b0390fd5b5f7f496e76616c696420596561726e205661756c7420616464726573730000000000910152565b613f45601b60209261032a565b613f4e81613f11565b0190565b613f679060208101905f818303910152613f38565b90565b15613f7157565b613f79610231565b7f08c379a000000000000000000000000000000000000000000000000000000000815280613fa960048201613f52565b0390fd5b5f7f496e76616c696420617373657442206164647265737300000000000000000000910152565b613fe1601660209261032a565b613fea81613fad565b0190565b6140039060208101905f818303910152613fd4565b90565b1561400d57565b614015610231565b7f08c379a00000000000000000000000000000000000000000000000000000000081528061404560048201613fee565b0390fd5b6140b196506140a5936140926140aa97969461407461409e956140979561406f33615aae565b615ad9565b61407c615aef565b614084615b15565b61408c615b3b565b5f613dc7565b613df3565b6001613e0e565b6002613dc7565b613e3a565b6003613e55565b6140de6140bd5f61130a565b6140d76140d16140cc5f613b11565b610282565b91610282565b1415613ece565b6141146140f36140ee600161123a565b61126f565b61410d6141076141025f613b11565b610282565b91610282565b1415613f6a565b614142614121600261130a565b61413b6141356141305f613b11565b610282565b91610282565b1415614006565b565b90614153969594939291613ca8565b565b61415d613b3a565b506141705f61416a615b45565b0161130a565b90565b61417b6127ed565b5061418f6004614189614fa0565b01612916565b90565b61419a613b3a565b506141ad6141a8600161123a565b61126f565b90565b6141b86147bc565b6141c06141ca565b6141c8614868565b565b6141d2614885565b6141da6141dc565b565b6141e4615d4c565b565b6141ee6141b0565b565b61420d916141fc612941565b50614205614fc4565b9190916150ec565b600190565b9061421c90613a9a565b5f5260205260405f2090565b6142569161424c6142519261423b612967565b506001614246614fa0565b01614212565b613aa6565b61297f565b90565b61426d61426861427292611013565b611016565b610a7e565b90565b90565b61428c61428761429192614275565b611016565b610a7e565b90565b61429d90611263565b90565b6142a990614278565b9052565b91906142c0905f602085019401906142a0565b565b929491949390936142d1615a6c565b956142e66142e05f8901613b9c565b156103f3565b956142f25f8901613bca565b806143056142ff5f614259565b91610a7e565b148061443f575b9061432061431a6001614278565b91610a7e565b1480614417575b6143329091156103f3565b9081614406575b506143ca576143629561435761434f6001614278565b5f8b01613c13565b876143b8575b614446565b61436a575b50565b614377905f809101613c66565b60016143af7fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2916143a6610231565b918291826142ad565b0390a15f614367565b6143c560015f8b01613c66565b61435d565b6143d2610231565b7ff92ee8a900000000000000000000000000000000000000000000000000000000815280614402600482016102de565b0390fd5b6144119150156103f3565b5f614339565b5061433261442430614294565b3b6144376144315f611019565b91610243565b149050614327565b508761430c565b6144926144ac969461448d6144a09561446f6144a599966144999661446a33615aae565b615ad9565b614477615aef565b61447f615b15565b614487615b3b565b5f613dc7565b613df3565b6001613e0e565b6002613dc7565b613e3a565b6003613e55565b6144d96144b85f61130a565b6144d26144cc6144c75f613b11565b610282565b91610282565b1415613ece565b61450f6144ee6144e9600161123a565b61126f565b6145086145026144fd5f613b11565b610282565b91610282565b1415613f6a565b61453d61451c600261130a565b61453661453061452b5f613b11565b610282565b91610282565b1415614006565b565b9061454d95949392916142c2565b565b90565b61456661456161456b9261454f565b611016565b610243565b90565b614576612967565b5061457f61298c565b61459161458b5f611019565b91610243565b146146f4576145c360206145ad6145a86003611a0a565b611a17565b631bf01e9b906145bb610231565b93849261129f565b825281806145d3600482016102de565b03915afa9081156146ef576145fd6145f8614613936020935f916146c2575b50611287565b611293565b63313ce5679061460b610231565b93849261129f565b82528180614623600482016102de565b03915afa80156146bd5761466761465a61465561467e9361468c955f9161468f575b506146506012611377565b6113c0565b6113e4565b614662612a55565b6115d3565b614678670de0b6b3a7640000614552565b906115d3565b61468661298c565b9061142d565b90565b6146b0915060203d81116146b6575b6146a881836106b7565b8101906112c8565b5f614645565b503d61469e565b6112e6565b6146e29150843d81116146e8575b6146da81836106b7565b810190611a32565b5f6145f2565b503d6146d0565b6112e6565b6146fd5f611019565b90565b6147119061470c6151c9565b614713565b565b8061472e6147286147235f613b11565b610282565b91610282565b1461473e5761473c9061598c565b565b61478161474a5f613b11565b614752610231565b9182917f1e4fbdf700000000000000000000000000000000000000000000000000000000835260048301610985565b0390fd5b61478e90614700565b565b90565b6147a76147a26147ac92614790565b611016565b610243565b90565b6147b96002614793565b90565b6147c4616208565b6147cf5f820161297f565b6147e86147e26147dd6147af565b610243565b91610243565b1461480357614801905f6147fa6147af565b9101611ba9565b565b61480b610231565b7f3ee5aeb50000000000000000000000000000000000000000000000000000000081528061483b600482016102de565b0390fd5b61485361484e61485892614275565b611016565b610243565b90565b614865600161483f565b90565b614883614873616208565b5f61487c61485b565b9101611ba9565b565b61488d6131e8565b61489357565b61489b610231565b7fd93c0665000000000000000000000000000000000000000000000000000000008152806148cb600482016102de565b0390fd5b90816148eb6148e56148e05f613b11565b610282565b91610282565b146149075761490591906148fe5f613b11565b909161623a565b565b61494a6149135f613b11565b61491b610231565b9182917f96c6fd1e00000000000000000000000000000000000000000000000000000000835260048301610985565b0390fd5b614956612967565b50614984602061496e6149696003611a0a565b611a17565b6385462d6f9061497c610231565b93849261129f565b82528180614994600482016102de565b03915afa908115614a6f575f91614a41575b50906149d560206149bf6149ba6003611a0a565b611a17565b634f4608a2906149cd610231565b93849261129f565b825281806149e5600482016102de565b03915afa928315614a3c57614a0b93614a06925f91614a0e575b50926115d3565b61142d565b90565b614a2f915060203d8111614a35575b614a2781836106b7565b810190611332565b5f6149ff565b503d614a1d565b6112e6565b614a62915060203d8111614a68575b614a5a81836106b7565b810190611332565b5f6149a6565b503d614a50565b6112e6565b5f7f496e73756666696369656e742071756f74652061737365742062616c616e6365910152565b614aa76020809261032a565b614ab081614a74565b0190565b614ac99060208101905f818303910152614a9b565b90565b15614ad357565b614adb610231565b7f08c379a000000000000000000000000000000000000000000000000000000000815280614b0b60048201614ab4565b0390fd5b60207f7400000000000000000000000000000000000000000000000000000000000000917f486169726375742065786365656473207769746864726177616c20616d6f756e5f8201520152565b614b69602160409261032a565b614b7281614b0f565b0190565b614b8b9060208101905f818303910152614b5c565b90565b15614b9557565b614b9d610231565b7f08c379a000000000000000000000000000000000000000000000000000000000815280614bcd60048201614b76565b0390fd5b614bd9612941565b50614c2c816020614bfa614bf5614bf0600261130a565b61135c565b611368565b6370a0823190614c21614c0c30611317565b92614c15610231565b9687948593849361129f565b835260048301610985565b03915afa8015614f9b57614c4e614c5491614c5b945f91614f6d575b50610243565b91610243565b1115614acc565b614c8c614c678261494e565b91614c8583614c7e614c7884610243565b91610243565b1115614b8e565b829061185a565b91614c968261494e565b90614cb482614cad614ca786610243565b91610243565b111561199a565b614ce16020614ccb614cc66003611a0a565b611a17565b6304cc732590614cd9610231565b93849261129f565b82528180614cf1600482016102de565b03915afa908115614f68575f91614f3a575b5092614d326020614d1c614d176003611a0a565b611a17565b633b19e84a90614d2a610231565b93849261129f565b82528180614d42600482016102de565b03915afa8015614f35576020915f91614f08575b5095614d72614d6d614d68600261130a565b61135c565b611368565b614d955f63a9059cbb969396614da0614d89610231565b9889968795869461129f565b845260048401611a91565b03925af1918215614f0357602092614ed8575b50614dce614dc9614dc4600261130a565b61135c565b611368565b614dfb5f614de363a9059cbb9794879061185a565b96614e06614def610231565b9889968795869461129f565b845260048401611a91565b03925af1918215614ed357602092614ea8575b50614e34614e2f614e2a600261130a565b61135c565b611368565b614e575f63a9059cbb959395614e62614e4b610231565b9788968795869461129f565b845260048401611a91565b03925af18015614ea357614e77575b50600190565b614e979060203d8111614e9c575b614e8f81836106b7565b810190611a73565b614e71565b503d614e85565b6112e6565b614ec790833d8111614ecc575b614ebf81836106b7565b810190611a73565b614e19565b503d614eb5565b6112e6565b614ef790833d8111614efc575b614eef81836106b7565b810190611a73565b614db3565b503d614ee5565b6112e6565b614f289150823d8111614f2e575b614f2081836106b7565b810190611a32565b5f614d56565b503d614f16565b6112e6565b614f5b915060203d8111614f61575b614f5381836106b7565b810190611a32565b5f614d03565b503d614f49565b6112e6565b614f8e915060203d8111614f94575b614f8681836106b7565b810190611332565b5f614c48565b503d614f7c565b6112e6565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0090565b614fcc613b3a565b503390565b91614fdf92916001926163e0565b565b60409061500a615011949695939661500060608401985f850190610978565b6020830190610450565b0190610450565b565b9061501e9103610243565b90565b92919261502f818390614228565b908161506361505d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610243565b91610243565b03615070575b5050509050565b8161508361507d87610243565b91610243565b106150a9576150a09394615098919392615013565b905f926163e0565b805f8080615069565b506150e8849291926150b9610231565b9384937ffb8f41b200000000000000000000000000000000000000000000000000000000855260048501614fe1565b0390fd5b91826151086151026150fd5f613b11565b610282565b91610282565b14615182578161512861512261511d5f613b11565b610282565b91610282565b1461513b576151399291909161623a565b565b61517e6151475f613b11565b61514f610231565b9182917fec442f0500000000000000000000000000000000000000000000000000000000835260048301610985565b0390fd5b6151c561518e5f613b11565b615196610231565b9182917f96c6fd1e00000000000000000000000000000000000000000000000000000000835260048301610985565b0390fd5b6151d1614155565b6151ea6151e46151df614fc4565b610282565b91610282565b036151f157565b6152336151fc614fc4565b615204610231565b9182917f118cdaa700000000000000000000000000000000000000000000000000000000835260048301610985565b0390fd5b61523f61653a565b61524761527f565b565b9061525560ff91611b50565b9181191691161790565b9061527461526f61527b92613c57565b613c63565b8254615249565b9055565b61529361528a6155ea565b5f80910161525f565b61529b614fc4565b6152d17f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa916152c8610231565b91829182610985565b0390a1565b6152de615237565b565b6152e990611263565b90565b6152f5306152e0565b6153276153217f0000000000000000000000000000000000000000000000000000000000000000610282565b91610282565b148015615371575b61533557565b61533d610231565b7fe07c8dba0000000000000000000000000000000000000000000000000000000081528061536d600482016102de565b0390fd5b5061537a61658d565b6153ac6153a67f0000000000000000000000000000000000000000000000000000000000000000610282565b91610282565b141561532f565b506153bc6151c9565b565b6153c7906153b3565b565b6153d290611247565b90565b6153de906153c9565b90565b6153ea90611263565b90565b6153f6816107eb565b036153fd57565b5f80fd5b9050519061540e826153ed565b565b9060208282031261542957615426915f01615401565b90565b61023b565b919061545c6020615446615441866153d5565b6153e1565b6352d1902d90615454610231565b93849261129f565b8252818061546c600482016102de565b03915afa80915f9261553c575b50155f146154cd57505090600161548e57505b565b6154c99061549a610231565b9182917f4c9c8ce300000000000000000000000000000000000000000000000000000000835260048301610985565b0390fd5b92836154e86154e26154dd613176565b6107eb565b916107eb565b036154fd576154f89293506165b7565b61548c565b61553884615509610231565b9182917faa1d49a4000000000000000000000000000000000000000000000000000000008352600483016107fb565b0390fd5b61555e91925060203d8111615565575b61555681836106b7565b810190615410565b905f615479565b503d61554c565b615575306152e0565b6155a76155a17f0000000000000000000000000000000000000000000000000000000000000000610282565b91610282565b036155ae57565b6155b6610231565b7fe07c8dba000000000000000000000000000000000000000000000000000000008152806155e6600482016102de565b0390fd5b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330090565b61562261561d61562792614790565b611016565b61054c565b90565b61563c615637600161123a565b61126f565b61568b6307a2d13a916020615659615654600161123a565b61126f565b6370a082319061568061566b30611317565b92615674610231565b9687948593849361129f565b835260048301610985565b03915afa908115615909576156c8936020935f936158d6575b506156bd906156b1610231565b9586948593849361129f565b83526004830161045d565b03915afa9081156158d1575f916158a3575b50806156f76156f16156ec600561297f565b610243565b91610243565b115f14615894576157129061570c600561297f565b9061185a565b5b615747602061573161572c6157275f61130a565b611287565b611293565b63313ce5679061573f610231565b93849261129f565b82528180615757600482016102de565b03915afa801561588f576157a06157a5916157ab935f91615861575b5061579b61579561579060019361578a600261560e565b906113c0565b6113e4565b9161483f565b6115d3565b610243565b91610243565b11615854575b61580260206157d06157cb6157c6600261130a565b61135c565b611368565b6370a08231906157f76157e230611317565b926157eb610231565b9586948593849361129f565b835260048301610985565b03915afa801561584f5761581f915f91615821575b506004611ba9565b565b615842915060203d8111615848575b61583a81836106b7565b810190611332565b5f615817565b503d615830565b6112e6565b61585c615d4c565b6157b1565b615882915060203d8111615888575b61587a81836106b7565b8101906112c8565b5f615773565b503d615870565b6112e6565b5061589e5f611019565b615713565b6158c4915060203d81116158ca575b6158bc81836106b7565b810190611332565b5f6156da565b503d6158b2565b6112e6565b6156bd9193506158fb90853d8111615902575b6158f381836106b7565b810190611332565b92906156a4565b503d6158e9565b6112e6565b8061592961592361591e5f613b11565b610282565b91610282565b14615945576159439161593b5f613b11565b91909161623a565b565b6159886159515f613b11565b615959610231565b9182917fec442f0500000000000000000000000000000000000000000000000000000000835260048301610985565b0390fd5b615994615b45565b6159ac6159a25f830161130a565b915f849101613dc7565b906159e06159da7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e093613a9a565b91613a9a565b916159e9610231565b806159f3816102de565b0390a3565b615a00614885565b615a08615a0a565b565b615a1f615a156155ea565b5f6001910161525f565b615a27614fc4565b615a5d7f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25891615a54610231565b91829182610985565b0390a1565b615a6a6159f8565b565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0090565b615aa190615a9c616640565b615aa3565b565b615aac90616718565b565b615ab790615a90565b565b90615acb91615ac6616640565b615acd565b565b90615ad79161695b565b565b90615ae391615ab9565b565b615aed616640565b565b615af7615ae5565b565b615b01616640565b615b09615b0b565b565b615b13616996565b565b615b1d615af9565b565b615b27616640565b615b2f615b31565b565b615b396169c8565b565b615b43615b1f565b565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930090565b60207f6c61626c65000000000000000000000000000000000000000000000000000000917f42616c756e695631795661756c743a204e6f20696e74657265737420617661695f8201520152565b615bc3602560409261032a565b615bcc81615b69565b0190565b615be59060208101905f818303910152615bb6565b90565b15615bef57565b615bf7610231565b7f08c379a000000000000000000000000000000000000000000000000000000000815280615c2760048201615bd0565b0390fd5b5f7f42616c756e695631795661756c743a2052656465656d204661696c6564000000910152565b615c5f601d60209261032a565b615c6881615c2b565b0190565b615c819060208101905f818303910152615c52565b90565b15615c8b57565b615c93610231565b7f08c379a000000000000000000000000000000000000000000000000000000000815280615cc360048201615c6c565b0390fd5b615cd090611247565b90565b615cdc90615cc7565b90565b615ce890611263565b90565b615d20615d2794615d16606094989795615d0c608086019a5f870190610978565b6020850190610978565b6040830190610450565b0190610978565b565b916020615d4a929493615d4360408201965f830190610450565b0190610450565b565b615d5e615d59600161123a565b61126f565b615dad6307a2d13a916020615d7b615d76600161123a565b61126f565b6370a0823190615da2615d8d30611317565b92615d96610231565b9687948593849361129f565b835260048301610985565b03915afa90811561620357615dea936020935f936161d0575b50615ddf90615dd3610231565b9586948593849361129f565b83526004830161045d565b03915afa9081156161cb575f9161619d575b5080615e19615e13615e0e600561297f565b610243565b91610243565b115f1461618e57615e3490615e2e600561297f565b9061185a565b5b615e5181615e4b615e455f611019565b91610243565b11615be8565b615e926020615e68615e63600161123a565b61126f565b63c6e6f59290615e878592615e7b610231565b9586948593849361129f565b83526004830161045d565b03915afa908115616189575f9161615b575b506020615eb9615eb4600161123a565b61126f565b63ba0876529290615eee5f615ecd30611317565b95615ef9615eda30611317565b615ee2610231565b9889978896879561129f565b85526004850161178c565b03925af1908115616156575f91616128575b50615f2881615f22615f1c5f611019565b91610243565b11615c84565b615f556020615f3f615f3a6003611a0a565b611a17565b6382755ebb90615f4d610231565b93849261129f565b82528180615f65600482016102de565b03915afa801561612357615f80915f916160f5575b50615cd3565b615f99615f94615f8f5f61130a565b61135c565b611368565b90602063095ea7b392615fab83615cdf565b90615fc95f8796615fd4615fbd610231565b9889968795869461129f565b845260048401611a91565b03925af19182156160f057615fee926160c4575b50615cdf565b6020632d6bc8ea91615fff5f61130a565b906160315f61600e600261130a565b9561603c8861601c30611317565b90616025610231565b998a988997889661129f565b865260048601615ceb565b03925af180156160bf57616093575b503390916160797f1cbc5ab135991bd2b6a4b034a04aa2aa086dac1371cb9b16b8b5e2ed6b036bed92613a9a565b9261608e616085610231565b92839283615d29565b0390a2565b6160b39060203d81116160b8575b6160ab81836106b7565b810190611332565b61604b565b503d6160a1565b6112e6565b6160e49060203d81116160e9575b6160dc81836106b7565b810190611a73565b615fe8565b503d6160d2565b6112e6565b616116915060203d811161611c575b61610e81836106b7565b810190611a32565b5f615f7a565b503d616104565b6112e6565b616149915060203d811161614f575b61614181836106b7565b810190611332565b5f615f0b565b503d616137565b6112e6565b61617c915060203d8111616182575b61617481836106b7565b810190611332565b5f615ea4565b503d61616a565b6112e6565b506161985f611019565b615e35565b6161be915060203d81116161c4575b6161b681836106b7565b810190611332565b5f615dfc565b503d6161ac565b6112e6565b615ddf9193506161f590853d81116161fc575b6161ed81836106b7565b810190611332565b9290615dc6565b503d6161e3565b6112e6565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0090565b906162379101610243565b90565b919091616245614fa0565b8161626061625a6162555f613b11565b610282565b91610282565b145f1461634b5761628783616281600284019161627c8361297f565b612a30565b90611ba9565b5b836162a361629d6162985f613b11565b610282565b91610282565b145f1461631c576162cb906162c56002859201916162c08361297f565b615013565b90611ba9565b5b9190916163176163056162ff7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef93613a9a565b93613a9a565b9361630e610231565b9182918261045d565b0390a3565b616346906163406163315f8693018790613aa6565b9161633b8361297f565b61622c565b90611ba9565b6162cc565b61636061635b5f83018490613aa6565b61297f565b8061637361636d86610243565b91610243565b1061639d57616386616398918590615013565b6163935f84018590613aa6565b611ba9565b616288565b916163dc915091926163ad610231565b9384937fe450d38c00000000000000000000000000000000000000000000000000000000855260048501614fe1565b0390fd5b90926163ea614fa0565b826164056163ff6163fa5f613b11565b610282565b91610282565b146164f3578461642561641f61641a5f613b11565b610282565b91610282565b146164ac5761644c9061644761644060018793018690614212565b8790613aa6565b611ba9565b616456575b505050565b9190916164a161648f6164897f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92593613a9a565b93613a9a565b93616498610231565b9182918261045d565b0390a35f8080616451565b6164ef6164b85f613b11565b6164c0610231565b9182917f94280d6200000000000000000000000000000000000000000000000000000000835260048301610985565b0390fd5b6165366164ff5f613b11565b616507610231565b9182917fe602df0500000000000000000000000000000000000000000000000000000000835260048301610985565b0390fd5b61654b6165456131e8565b156103f3565b61655157565b616559610231565b7f8dfc202b00000000000000000000000000000000000000000000000000000000815280616589600482016102de565b0390fd5b616595613b3a565b506165b05f6165aa6165a5613176565b6169d2565b0161130a565b90565b5190565b906165c1826169d5565b816165ec7fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b91613a9a565b906165f5610231565b806165ff816102de565b0390a261660b816165b3565b61661d6166175f611019565b91610243565b115f146166315761662d91616ae5565b505b565b505061663b616a4a565b61662f565b61665161664b616b14565b156103f3565b61665757565b61665f610231565b7fd7e6bcf80000000000000000000000000000000000000000000000000000000081528061668f600482016102de565b0390fd5b6166a49061669f616640565b6166a6565b565b806166c16166bb6166b65f613b11565b610282565b91610282565b146166d1576166cf9061598c565b565b6167146166dd5f613b11565b6166e5610231565b9182917f1e4fbdf700000000000000000000000000000000000000000000000000000000835260048301610985565b0390fd5b61672190616693565b565b9061673591616730616640565b616937565b565b601f602091010490565b1b90565b9190600861677f9102916167797fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84616741565b92616741565b9181191691161790565b919061679f61679a6167a793611b8a565b611ba6565b908354616745565b9055565b6167bd916167b7612967565b91616789565b565b5b8181106167cb575050565b806167d85f6001936167ab565b016167c0565b9190601f81116167ee575b505050565b6167fa61681f93612852565b90602061680684616737565b83019310616827575b61681890616737565b01906167bf565b5f80806167e9565b91506168188192905061680f565b90616845905f19906008026105a9565b191690565b8161685491616835565b906002021790565b9061686681610326565b9067ffffffffffffffff82116169265761688a82616884855461281f565b856167de565b602090601f83116001146168be579180916168ad935f926168b2575b505061684a565b90555b565b90915001515f806168a6565b601f198316916168cd85612852565b925f5b81811061690e575091600293918560019694106168f4575b505050020190556168b0565b616904910151601f841690616835565b90555f80806168e8565b919360206001819287870151815501950192016168d0565b61068a565b906169359161685c565b565b600461695992616952616948614fa0565b936003850161692b565b910161692b565b565b9061696591616723565b565b61696f616640565b616977616979565b565b616994616984616208565b5f61698d61485b565b9101611ba9565b565b61699e616967565b565b6169a8616640565b6169b06169b2565b565b6169c66169bd6155ea565b5f80910161525f565b565b6169d06169a0565b565b90565b803b6169e96169e35f611019565b91610243565b14616a0b57616a09905f616a036169fe613176565b6169d2565b01613dc7565b565b616a4690616a17610231565b9182917f4c9c8ce300000000000000000000000000000000000000000000000000000000835260048301610985565b0390fd5b34616a5d616a575f611019565b91610243565b11616a6457565b616a6c610231565b7fb398979f00000000000000000000000000000000000000000000000000000000815280616a9c600482016102de565b0390fd5b606090565b90616ab7616ab2836106f5565b6106e0565b918252565b3d5f14616ad757616acc3d616aa5565b903d5f602084013e5b565b616adf616aa0565b90616ad5565b5f80616b1193616af3616aa0565b508390602081019051915af490616b08616abc565b90919091616b32565b90565b616b1c612941565b50616b2f5f616b29615a6c565b01613b9c565b90565b90616b4690616b3f616aa0565b50156103f3565b5f14616b525750616bd6565b616b5b826165b3565b616b6d616b675f611019565b91610243565b1480616bbb575b616b7c575090565b616bb790616b88610231565b9182917f9996b31500000000000000000000000000000000000000000000000000000000835260048301610985565b0390fd5b50803b616bd0616bca5f611019565b91610243565b14616b74565b616bdf816165b3565b616bf1616beb5f611019565b91610243565b115f14616c0057805190602001fd5b616c08610231565b7f1425ea4200000000000000000000000000000000000000000000000000000000815280616c38600482016102de565b0390fdfea2646970667358221220476bd292c84f9b07c6d81d4b96a28e5086056df8ea15ccfb438bc561cab769a464736f6c63430008190033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x13 JUMPI JUMPDEST PUSH2 0xFDF JUMP JUMPDEST PUSH2 0x1D PUSH0 CALLDATALOAD PUSH2 0x22B JUMP JUMPDEST DUP1 PUSH3 0xF714CE EQ PUSH2 0x226 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x221 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x21C JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x217 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x212 JUMPI DUP1 PUSH4 0x295B9300 EQ PUSH2 0x20D JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x208 JUMPI DUP1 PUSH4 0x36B77107 EQ PUSH2 0x203 JUMPI DUP1 PUSH4 0x374261AB EQ PUSH2 0x1FE JUMPI DUP1 PUSH4 0x3F4BA83A EQ PUSH2 0x1F9 JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x1F4 JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH2 0x1EF JUMPI DUP1 PUSH4 0x5C975ABB EQ PUSH2 0x1EA JUMPI DUP1 PUSH4 0x6560BC80 EQ PUSH2 0x1E5 JUMPI DUP1 PUSH4 0x6E553F65 EQ PUSH2 0x1E0 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x1DB JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x1D6 JUMPI DUP1 PUSH4 0x7B103999 EQ PUSH2 0x1D1 JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH2 0x1CC JUMPI DUP1 PUSH4 0x88696F62 EQ PUSH2 0x1C7 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x1C2 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x1BD JUMPI DUP1 PUSH4 0x9DB5DF46 EQ PUSH2 0x1B8 JUMPI DUP1 PUSH4 0xA6F2AE3A EQ PUSH2 0x1B3 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x1AE JUMPI DUP1 PUSH4 0xAD3CB1CC EQ PUSH2 0x1A9 JUMPI DUP1 PUSH4 0xCDF456E1 EQ PUSH2 0x1A4 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x19F JUMPI DUP1 PUSH4 0xE56F2FE4 EQ PUSH2 0x19A JUMPI DUP1 PUSH4 0xE73FAA2D EQ PUSH2 0x195 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x190 JUMPI DUP1 PUSH4 0xF7FDE10F EQ PUSH2 0x18B JUMPI PUSH4 0xFDF262B7 SUB PUSH2 0xE JUMPI PUSH2 0xFAA JUMP JUMPDEST PUSH2 0xF66 JUMP JUMPDEST PUSH2 0xF24 JUMP JUMPDEST PUSH2 0xEEF JUMP JUMPDEST PUSH2 0xEB5 JUMP JUMPDEST PUSH2 0xDEB JUMP JUMPDEST PUSH2 0xD89 JUMP JUMPDEST PUSH2 0xD08 JUMP JUMPDEST PUSH2 0xC5A JUMP JUMPDEST PUSH2 0xC27 JUMP JUMPDEST PUSH2 0xBF2 JUMP JUMPDEST PUSH2 0xBBD JUMP JUMPDEST PUSH2 0xB88 JUMP JUMPDEST PUSH2 0xB4E JUMP JUMPDEST PUSH2 0x9CF JUMP JUMPDEST PUSH2 0x99A JUMP JUMPDEST PUSH2 0x945 JUMP JUMPDEST PUSH2 0x910 JUMP JUMPDEST PUSH2 0x8BE JUMP JUMPDEST PUSH2 0x889 JUMP JUMPDEST PUSH2 0x845 JUMP JUMPDEST PUSH2 0x810 JUMP JUMPDEST PUSH2 0x7C1 JUMP JUMPDEST PUSH2 0x64F JUMP JUMPDEST PUSH2 0x61A JUMP JUMPDEST PUSH2 0x5E5 JUMP JUMPDEST PUSH2 0x574 JUMP JUMPDEST PUSH2 0x517 JUMP JUMPDEST PUSH2 0x4E1 JUMP JUMPDEST PUSH2 0x472 JUMP JUMPDEST PUSH2 0x41A JUMP JUMPDEST PUSH2 0x391 JUMP JUMPDEST PUSH2 0x2E3 JUMP JUMPDEST PUSH1 0xE0 SHR SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x24F DUP2 PUSH2 0x243 JUMP JUMPDEST SUB PUSH2 0x256 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0x267 DUP3 PUSH2 0x246 JUMP JUMPDEST JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x28B SWAP1 PUSH2 0x269 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x297 DUP2 PUSH2 0x282 JUMP JUMPDEST SUB PUSH2 0x29E JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0x2AF DUP3 PUSH2 0x28E JUMP JUMPDEST JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x40 DUP4 DUP3 SUB SLT PUSH2 0x2D9 JUMPI DUP1 PUSH2 0x2CD PUSH2 0x2D6 SWAP3 PUSH0 DUP7 ADD PUSH2 0x25A JUMP JUMPDEST SWAP4 PUSH1 0x20 ADD PUSH2 0x2A2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x23B JUMP JUMPDEST PUSH0 ADD SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x312 JUMPI PUSH2 0x2FC PUSH2 0x2F6 CALLDATASIZE PUSH1 0x4 PUSH2 0x2B1 JUMP JUMPDEST SWAP1 PUSH2 0x27E1 JUMP JUMPDEST PUSH2 0x304 PUSH2 0x231 JUMP JUMPDEST DUP1 PUSH2 0x30E DUP2 PUSH2 0x2DE JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST PUSH0 SWAP2 SUB SLT PUSH2 0x321 JUMPI JUMP JUMPDEST PUSH2 0x23B JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP2 MSTORE ADD SWAP1 JUMP JUMPDEST SWAP1 DUP3 PUSH0 SWAP4 SWAP3 DUP3 MCOPY ADD MSTORE JUMP JUMPDEST PUSH1 0x1F DUP1 NOT SWAP2 ADD AND SWAP1 JUMP JUMPDEST PUSH2 0x367 PUSH2 0x370 PUSH1 0x20 SWAP4 PUSH2 0x375 SWAP4 PUSH2 0x35E DUP2 PUSH2 0x326 JUMP JUMPDEST SWAP4 DUP5 DUP1 SWAP4 PUSH2 0x32A JUMP JUMPDEST SWAP6 DUP7 SWAP2 ADD PUSH2 0x333 JUMP JUMPDEST PUSH2 0x33E JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x38E SWAP2 PUSH1 0x20 DUP3 ADD SWAP2 PUSH0 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x348 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x3C1 JUMPI PUSH2 0x3A1 CALLDATASIZE PUSH1 0x4 PUSH2 0x317 JUMP JUMPDEST PUSH2 0x3BD PUSH2 0x3AC PUSH2 0x2922 JUMP JUMPDEST PUSH2 0x3B4 PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x379 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x40 DUP4 DUP3 SUB SLT PUSH2 0x3EE JUMPI DUP1 PUSH2 0x3E2 PUSH2 0x3EB SWAP3 PUSH0 DUP7 ADD PUSH2 0x2A2 JUMP JUMPDEST SWAP4 PUSH1 0x20 ADD PUSH2 0x25A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x23B JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH2 0x401 SWAP1 PUSH2 0x3F3 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x418 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x3F8 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x44B JUMPI PUSH2 0x447 PUSH2 0x436 PUSH2 0x430 CALLDATASIZE PUSH1 0x4 PUSH2 0x3C6 JUMP JUMPDEST SWAP1 PUSH2 0x2945 JUMP JUMPDEST PUSH2 0x43E PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x405 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST PUSH2 0x459 SWAP1 PUSH2 0x243 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x470 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x450 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x4A2 JUMPI PUSH2 0x482 CALLDATASIZE PUSH1 0x4 PUSH2 0x317 JUMP JUMPDEST PUSH2 0x49E PUSH2 0x48D PUSH2 0x298C JUMP JUMPDEST PUSH2 0x495 PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x45D JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST SWAP1 SWAP2 PUSH1 0x60 DUP3 DUP5 SUB SLT PUSH2 0x4DC JUMPI PUSH2 0x4D9 PUSH2 0x4C2 DUP5 PUSH0 DUP6 ADD PUSH2 0x2A2 JUMP JUMPDEST SWAP4 PUSH2 0x4D0 DUP2 PUSH1 0x20 DUP7 ADD PUSH2 0x2A2 JUMP JUMPDEST SWAP4 PUSH1 0x40 ADD PUSH2 0x25A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x23B JUMP JUMPDEST CALLVALUE PUSH2 0x512 JUMPI PUSH2 0x50E PUSH2 0x4FD PUSH2 0x4F7 CALLDATASIZE PUSH1 0x4 PUSH2 0x4A7 JUMP JUMPDEST SWAP2 PUSH2 0x29AB JUMP JUMPDEST PUSH2 0x505 PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x405 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST CALLVALUE PUSH2 0x547 JUMPI PUSH2 0x527 CALLDATASIZE PUSH1 0x4 PUSH2 0x317 JUMP JUMPDEST PUSH2 0x543 PUSH2 0x532 PUSH2 0x2A55 JUMP JUMPDEST PUSH2 0x53A PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x45D JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x55B SWAP1 PUSH2 0x54C JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x572 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x552 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x5A4 JUMPI PUSH2 0x584 CALLDATASIZE PUSH1 0x4 PUSH2 0x317 JUMP JUMPDEST PUSH2 0x5A0 PUSH2 0x58F PUSH2 0x2F5F JUMP JUMPDEST PUSH2 0x597 PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x55F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST SHR SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x5C0 SWAP1 PUSH1 0x8 PUSH2 0x5C5 SWAP4 MUL PUSH2 0x5A9 JUMP JUMPDEST PUSH2 0x5AD JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x5D3 SWAP2 SLOAD PUSH2 0x5B0 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x5E2 PUSH1 0x5 PUSH0 SWAP1 PUSH2 0x5C8 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x615 JUMPI PUSH2 0x5F5 CALLDATASIZE PUSH1 0x4 PUSH2 0x317 JUMP JUMPDEST PUSH2 0x611 PUSH2 0x600 PUSH2 0x5D6 JUMP JUMPDEST PUSH2 0x608 PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x45D JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST CALLVALUE PUSH2 0x64A JUMPI PUSH2 0x62A CALLDATASIZE PUSH1 0x4 PUSH2 0x317 JUMP JUMPDEST PUSH2 0x646 PUSH2 0x635 PUSH2 0x2F75 JUMP JUMPDEST PUSH2 0x63D PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x45D JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST CALLVALUE PUSH2 0x67D JUMPI PUSH2 0x65F CALLDATASIZE PUSH1 0x4 PUSH2 0x317 JUMP JUMPDEST PUSH2 0x667 PUSH2 0x3100 JUMP JUMPDEST PUSH2 0x66F PUSH2 0x231 JUMP JUMPDEST DUP1 PUSH2 0x679 DUP2 PUSH2 0x2DE JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH2 0x6C1 SWAP1 PUSH2 0x33E JUMP JUMPDEST DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x6DB JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH2 0x68A JUMP JUMPDEST SWAP1 PUSH2 0x6F3 PUSH2 0x6EC PUSH2 0x231 JUMP JUMPDEST SWAP3 DUP4 PUSH2 0x6B7 JUMP JUMPDEST JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x713 JUMPI PUSH2 0x70F PUSH1 0x20 SWAP2 PUSH2 0x33E JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x68A JUMP JUMPDEST SWAP1 DUP3 PUSH0 SWAP4 SWAP3 DUP3 CALLDATACOPY ADD MSTORE JUMP JUMPDEST SWAP1 SWAP3 SWAP2 SWAP3 PUSH2 0x738 PUSH2 0x733 DUP3 PUSH2 0x6F5 JUMP JUMPDEST PUSH2 0x6E0 JUMP JUMPDEST SWAP4 DUP2 DUP6 MSTORE PUSH1 0x20 DUP6 ADD SWAP1 DUP3 DUP5 ADD GT PUSH2 0x754 JUMPI PUSH2 0x752 SWAP3 PUSH2 0x718 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x686 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x777 JUMPI DUP2 PUSH1 0x20 PUSH2 0x774 SWAP4 CALLDATALOAD SWAP2 ADD PUSH2 0x723 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x682 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH1 0x40 DUP2 DUP5 SUB SLT PUSH2 0x7BC JUMPI PUSH2 0x795 DUP4 PUSH0 DUP4 ADD PUSH2 0x2A2 JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x7B7 JUMPI PUSH2 0x7B4 SWAP3 ADD PUSH2 0x759 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x23F JUMP JUMPDEST PUSH2 0x23B JUMP JUMPDEST PUSH2 0x7D5 PUSH2 0x7CF CALLDATASIZE PUSH1 0x4 PUSH2 0x77C JUMP JUMPDEST SWAP1 PUSH2 0x3133 JUMP JUMPDEST PUSH2 0x7DD PUSH2 0x231 JUMP JUMPDEST DUP1 PUSH2 0x7E7 DUP2 PUSH2 0x2DE JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x7F7 SWAP1 PUSH2 0x7EB JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x80E SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x7EE JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x840 JUMPI PUSH2 0x820 CALLDATASIZE PUSH1 0x4 PUSH2 0x317 JUMP JUMPDEST PUSH2 0x83C PUSH2 0x82B PUSH2 0x31AE JUMP JUMPDEST PUSH2 0x833 PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x7FB JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST CALLVALUE PUSH2 0x875 JUMPI PUSH2 0x855 CALLDATASIZE PUSH1 0x4 PUSH2 0x317 JUMP JUMPDEST PUSH2 0x871 PUSH2 0x860 PUSH2 0x31E8 JUMP JUMPDEST PUSH2 0x868 PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x405 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST PUSH2 0x886 PUSH1 0x6 PUSH0 SWAP1 PUSH2 0x5C8 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x8B9 JUMPI PUSH2 0x899 CALLDATASIZE PUSH1 0x4 PUSH2 0x317 JUMP JUMPDEST PUSH2 0x8B5 PUSH2 0x8A4 PUSH2 0x87A JUMP JUMPDEST PUSH2 0x8AC PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x45D JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST CALLVALUE PUSH2 0x8ED JUMPI PUSH2 0x8D7 PUSH2 0x8D1 CALLDATASIZE PUSH1 0x4 PUSH2 0x2B1 JUMP JUMPDEST SWAP1 PUSH2 0x3A8E JUMP JUMPDEST PUSH2 0x8DF PUSH2 0x231 JUMP JUMPDEST DUP1 PUSH2 0x8E9 DUP2 PUSH2 0x2DE JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x90B JUMPI PUSH2 0x908 SWAP2 PUSH0 ADD PUSH2 0x2A2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x23B JUMP JUMPDEST CALLVALUE PUSH2 0x940 JUMPI PUSH2 0x93C PUSH2 0x92B PUSH2 0x926 CALLDATASIZE PUSH1 0x4 PUSH2 0x8F2 JUMP JUMPDEST PUSH2 0x3ABC JUMP JUMPDEST PUSH2 0x933 PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x45D JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST CALLVALUE PUSH2 0x973 JUMPI PUSH2 0x955 CALLDATASIZE PUSH1 0x4 PUSH2 0x317 JUMP JUMPDEST PUSH2 0x95D PUSH2 0x3B30 JUMP JUMPDEST PUSH2 0x965 PUSH2 0x231 JUMP JUMPDEST DUP1 PUSH2 0x96F DUP2 PUSH2 0x2DE JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST PUSH2 0x981 SWAP1 PUSH2 0x282 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x998 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x978 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x9CA JUMPI PUSH2 0x9AA CALLDATASIZE PUSH1 0x4 PUSH2 0x317 JUMP JUMPDEST PUSH2 0x9C6 PUSH2 0x9B5 PUSH2 0x3B3E JUMP JUMPDEST PUSH2 0x9BD PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x985 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST CALLVALUE PUSH2 0x9FD JUMPI PUSH2 0x9DF CALLDATASIZE PUSH1 0x4 PUSH2 0x317 JUMP JUMPDEST PUSH2 0x9E7 PUSH2 0x3B78 JUMP JUMPDEST PUSH2 0x9EF PUSH2 0x231 JUMP JUMPDEST DUP1 PUSH2 0x9F9 DUP2 PUSH2 0x2DE JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xA20 JUMPI PUSH2 0xA1C PUSH1 0x20 SWAP2 PUSH2 0x33E JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x68A JUMP JUMPDEST SWAP1 SWAP3 SWAP2 SWAP3 PUSH2 0xA3A PUSH2 0xA35 DUP3 PUSH2 0xA02 JUMP JUMPDEST PUSH2 0x6E0 JUMP JUMPDEST SWAP4 DUP2 DUP6 MSTORE PUSH1 0x20 DUP6 ADD SWAP1 DUP3 DUP5 ADD GT PUSH2 0xA56 JUMPI PUSH2 0xA54 SWAP3 PUSH2 0x718 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x686 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0xA79 JUMPI DUP2 PUSH1 0x20 PUSH2 0xA76 SWAP4 CALLDATALOAD SWAP2 ADD PUSH2 0xA25 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x682 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0xA94 DUP2 PUSH2 0xA7E JUMP JUMPDEST SUB PUSH2 0xA9B JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0xAAC DUP3 PUSH2 0xA8B JUMP JUMPDEST JUMP JUMPDEST PUSH1 0xE0 DUP2 DUP4 SUB SLT PUSH2 0xB49 JUMPI PUSH0 DUP2 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xB44 JUMPI DUP3 PUSH2 0xAD7 SWAP2 DUP4 ADD PUSH2 0xA5B JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xB3F JUMPI DUP4 PUSH2 0xAF8 SWAP2 DUP5 ADD PUSH2 0xA5B JUMP JUMPDEST SWAP3 PUSH2 0xB06 DUP2 PUSH1 0x40 DUP6 ADD PUSH2 0x2A2 JUMP JUMPDEST SWAP3 PUSH2 0xB14 DUP3 PUSH1 0x60 DUP4 ADD PUSH2 0x2A2 JUMP JUMPDEST SWAP3 PUSH2 0xB3C PUSH2 0xB25 DUP5 PUSH1 0x80 DUP6 ADD PUSH2 0x2A2 JUMP JUMPDEST SWAP4 PUSH2 0xB33 DUP2 PUSH1 0xA0 DUP7 ADD PUSH2 0x2A2 JUMP JUMPDEST SWAP4 PUSH1 0xC0 ADD PUSH2 0xA9F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x23F JUMP JUMPDEST PUSH2 0x23F JUMP JUMPDEST PUSH2 0x23B JUMP JUMPDEST CALLVALUE PUSH2 0xB83 JUMPI PUSH2 0xB6D PUSH2 0xB61 CALLDATASIZE PUSH1 0x4 PUSH2 0xAAE JUMP JUMPDEST SWAP6 SWAP5 SWAP1 SWAP5 SWAP4 SWAP2 SWAP4 PUSH2 0x4144 JUMP JUMPDEST PUSH2 0xB75 PUSH2 0x231 JUMP JUMPDEST DUP1 PUSH2 0xB7F DUP2 PUSH2 0x2DE JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST CALLVALUE PUSH2 0xBB8 JUMPI PUSH2 0xB98 CALLDATASIZE PUSH1 0x4 PUSH2 0x317 JUMP JUMPDEST PUSH2 0xBB4 PUSH2 0xBA3 PUSH2 0x4155 JUMP JUMPDEST PUSH2 0xBAB PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x985 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST CALLVALUE PUSH2 0xBED JUMPI PUSH2 0xBCD CALLDATASIZE PUSH1 0x4 PUSH2 0x317 JUMP JUMPDEST PUSH2 0xBE9 PUSH2 0xBD8 PUSH2 0x4173 JUMP JUMPDEST PUSH2 0xBE0 PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x379 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST CALLVALUE PUSH2 0xC22 JUMPI PUSH2 0xC02 CALLDATASIZE PUSH1 0x4 PUSH2 0x317 JUMP JUMPDEST PUSH2 0xC1E PUSH2 0xC0D PUSH2 0x4192 JUMP JUMPDEST PUSH2 0xC15 PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x985 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST CALLVALUE PUSH2 0xC55 JUMPI PUSH2 0xC37 CALLDATASIZE PUSH1 0x4 PUSH2 0x317 JUMP JUMPDEST PUSH2 0xC3F PUSH2 0x41E6 JUMP JUMPDEST PUSH2 0xC47 PUSH2 0x231 JUMP JUMPDEST DUP1 PUSH2 0xC51 DUP2 PUSH2 0x2DE JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST CALLVALUE PUSH2 0xC8B JUMPI PUSH2 0xC87 PUSH2 0xC76 PUSH2 0xC70 CALLDATASIZE PUSH1 0x4 PUSH2 0x3C6 JUMP JUMPDEST SWAP1 PUSH2 0x41F0 JUMP JUMPDEST PUSH2 0xC7E PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x405 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST SWAP1 PUSH2 0xCA2 PUSH2 0xC9D DUP4 PUSH2 0xA02 JUMP JUMPDEST PUSH2 0x6E0 JUMP JUMPDEST SWAP2 DUP3 MSTORE JUMP JUMPDEST PUSH0 PUSH32 0x352E302E30000000000000000000000000000000000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0xCD8 PUSH1 0x5 PUSH2 0xC90 JUMP JUMPDEST SWAP1 PUSH2 0xCE5 PUSH1 0x20 DUP4 ADD PUSH2 0xCA7 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0xCEF PUSH2 0xCCE JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xCFA PUSH2 0xCE7 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xD05 PUSH2 0xCF2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0xD38 JUMPI PUSH2 0xD18 CALLDATASIZE PUSH1 0x4 PUSH2 0x317 JUMP JUMPDEST PUSH2 0xD34 PUSH2 0xD23 PUSH2 0xCFD JUMP JUMPDEST PUSH2 0xD2B PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x379 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0xD66 SWAP1 PUSH1 0x8 PUSH2 0xD6B SWAP4 MUL PUSH2 0x5A9 JUMP JUMPDEST PUSH2 0xD3D JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xD79 SWAP2 SLOAD PUSH2 0xD56 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xD86 PUSH0 DUP1 PUSH2 0xD6E JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0xDB9 JUMPI PUSH2 0xD99 CALLDATASIZE PUSH1 0x4 PUSH2 0x317 JUMP JUMPDEST PUSH2 0xDB5 PUSH2 0xDA4 PUSH2 0xD7C JUMP JUMPDEST PUSH2 0xDAC PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x985 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x40 DUP4 DUP3 SUB SLT PUSH2 0xDE6 JUMPI DUP1 PUSH2 0xDDA PUSH2 0xDE3 SWAP3 PUSH0 DUP7 ADD PUSH2 0x2A2 JUMP JUMPDEST SWAP4 PUSH1 0x20 ADD PUSH2 0x2A2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x23B JUMP JUMPDEST CALLVALUE PUSH2 0xE1C JUMPI PUSH2 0xE18 PUSH2 0xE07 PUSH2 0xE01 CALLDATASIZE PUSH1 0x4 PUSH2 0xDBE JUMP JUMPDEST SWAP1 PUSH2 0x4228 JUMP JUMPDEST PUSH2 0xE0F PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x45D JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST SWAP1 SWAP2 PUSH1 0xC0 DUP3 DUP5 SUB SLT PUSH2 0xEB0 JUMPI PUSH0 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xEAB JUMPI DUP4 PUSH2 0xE4C SWAP2 DUP5 ADD PUSH2 0xA5B JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xEA6 JUMPI DUP2 PUSH2 0xE6D SWAP2 DUP6 ADD PUSH2 0xA5B JUMP JUMPDEST SWAP3 PUSH2 0xE7B DUP3 PUSH1 0x40 DUP4 ADD PUSH2 0x2A2 JUMP JUMPDEST SWAP3 PUSH2 0xEA3 PUSH2 0xE8C DUP5 PUSH1 0x60 DUP6 ADD PUSH2 0x2A2 JUMP JUMPDEST SWAP4 PUSH2 0xE9A DUP2 PUSH1 0x80 DUP7 ADD PUSH2 0x2A2 JUMP JUMPDEST SWAP4 PUSH1 0xA0 ADD PUSH2 0x2A2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x23F JUMP JUMPDEST PUSH2 0x23F JUMP JUMPDEST PUSH2 0x23B JUMP JUMPDEST CALLVALUE PUSH2 0xEEA JUMPI PUSH2 0xED4 PUSH2 0xEC8 CALLDATASIZE PUSH1 0x4 PUSH2 0xE21 JUMP JUMPDEST SWAP5 SWAP4 SWAP1 SWAP4 SWAP3 SWAP2 SWAP3 PUSH2 0x453F JUMP JUMPDEST PUSH2 0xEDC PUSH2 0x231 JUMP JUMPDEST DUP1 PUSH2 0xEE6 DUP2 PUSH2 0x2DE JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST CALLVALUE PUSH2 0xF1F JUMPI PUSH2 0xEFF CALLDATASIZE PUSH1 0x4 PUSH2 0x317 JUMP JUMPDEST PUSH2 0xF1B PUSH2 0xF0A PUSH2 0x456E JUMP JUMPDEST PUSH2 0xF12 PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x45D JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST CALLVALUE PUSH2 0xF52 JUMPI PUSH2 0xF3C PUSH2 0xF37 CALLDATASIZE PUSH1 0x4 PUSH2 0x8F2 JUMP JUMPDEST PUSH2 0x4785 JUMP JUMPDEST PUSH2 0xF44 PUSH2 0x231 JUMP JUMPDEST DUP1 PUSH2 0xF4E DUP2 PUSH2 0x2DE JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST PUSH2 0xF63 PUSH1 0x4 PUSH0 SWAP1 PUSH2 0x5C8 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0xF96 JUMPI PUSH2 0xF76 CALLDATASIZE PUSH1 0x4 PUSH2 0x317 JUMP JUMPDEST PUSH2 0xF92 PUSH2 0xF81 PUSH2 0xF57 JUMP JUMPDEST PUSH2 0xF89 PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x45D JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST PUSH2 0xFA7 PUSH1 0x2 PUSH0 SWAP1 PUSH2 0xD6E JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0xFDA JUMPI PUSH2 0xFBA CALLDATASIZE PUSH1 0x4 PUSH2 0x317 JUMP JUMPDEST PUSH2 0xFD6 PUSH2 0xFC5 PUSH2 0xF9B JUMP JUMPDEST PUSH2 0xFCD PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x985 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 PUSH2 0xFF5 SWAP2 PUSH2 0xFF0 PUSH2 0x47BC JUMP JUMPDEST PUSH2 0xFFF JUMP JUMPDEST PUSH2 0xFFD PUSH2 0x4868 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x1011 SWAP2 PUSH2 0x100C PUSH2 0x4885 JUMP JUMPDEST PUSH2 0x1BC9 JUMP JUMPDEST JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x102D PUSH2 0x1028 PUSH2 0x1032 SWAP3 PUSH2 0x1013 JUMP JUMPDEST PUSH2 0x1016 JUMP JUMPDEST PUSH2 0x243 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 PUSH32 0x536861726573206D7573742062652067726561746572207468616E207A65726F SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x1068 PUSH1 0x20 DUP1 SWAP3 PUSH2 0x32A JUMP JUMPDEST PUSH2 0x1071 DUP2 PUSH2 0x1035 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x108A SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x105C JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x1094 JUMPI JUMP JUMPDEST PUSH2 0x109C PUSH2 0x231 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x10CC PUSH1 0x4 DUP3 ADD PUSH2 0x1075 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH32 0x496E73756666696369656E742062616C616E6365000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x1104 PUSH1 0x14 PUSH1 0x20 SWAP3 PUSH2 0x32A JUMP JUMPDEST PUSH2 0x110D DUP2 PUSH2 0x10D0 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x1126 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x10F7 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x1130 JUMPI JUMP JUMPDEST PUSH2 0x1138 PUSH2 0x231 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x1168 PUSH1 0x4 DUP3 ADD PUSH2 0x1111 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH32 0x546F74616C20737570706C792063616E6E6F74206265207A65726F0000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x11A0 PUSH1 0x1B PUSH1 0x20 SWAP3 PUSH2 0x32A JUMP JUMPDEST PUSH2 0x11A9 DUP2 PUSH2 0x116C JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x11C2 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x1193 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x11CC JUMPI JUMP JUMPDEST PUSH2 0x11D4 PUSH2 0x231 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x1204 PUSH1 0x4 DUP3 ADD PUSH2 0x11AD JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH0 SHR SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x1232 PUSH2 0x1237 SWAP2 PUSH2 0x1208 JUMP JUMPDEST PUSH2 0x120D JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1244 SWAP1 SLOAD PUSH2 0x1226 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x125B PUSH2 0x1256 PUSH2 0x1260 SWAP3 PUSH2 0x269 JUMP JUMPDEST PUSH2 0x1016 JUMP JUMPDEST PUSH2 0x269 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x126C SWAP1 PUSH2 0x1247 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1278 SWAP1 PUSH2 0x1263 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1284 SWAP1 PUSH2 0x1247 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1290 SWAP1 PUSH2 0x127B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x129C SWAP1 PUSH2 0x1263 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0xE0 SHL SWAP1 JUMP JUMPDEST PUSH2 0x12AE DUP2 PUSH2 0x54C JUMP JUMPDEST SUB PUSH2 0x12B5 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0x12C6 DUP3 PUSH2 0x12A5 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x12E1 JUMPI PUSH2 0x12DE SWAP2 PUSH0 ADD PUSH2 0x12B9 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x23B JUMP JUMPDEST PUSH2 0x12EE PUSH2 0x231 JUMP JUMPDEST RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH2 0x1302 PUSH2 0x1307 SWAP2 PUSH2 0x1208 JUMP JUMPDEST PUSH2 0xD3D JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1314 SWAP1 SLOAD PUSH2 0x12F6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1320 SWAP1 PUSH2 0x1263 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0x1330 DUP3 PUSH2 0x246 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x134B JUMPI PUSH2 0x1348 SWAP2 PUSH0 ADD PUSH2 0x1323 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x23B JUMP JUMPDEST PUSH2 0x1359 SWAP1 PUSH2 0x1247 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1365 SWAP1 PUSH2 0x1350 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1371 SWAP1 PUSH2 0x1263 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x138B PUSH2 0x1386 PUSH2 0x1390 SWAP3 PUSH2 0x1374 JUMP JUMPDEST PUSH2 0x1016 JUMP JUMPDEST PUSH2 0x54C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0x13CC PUSH2 0x13D2 SWAP2 PUSH2 0x54C JUMP JUMPDEST SWAP2 PUSH2 0x54C JUMP JUMPDEST SWAP1 SUB SWAP1 PUSH1 0xFF DUP3 GT PUSH2 0x13DF JUMPI JUMP JUMPDEST PUSH2 0x1393 JUMP JUMPDEST PUSH2 0x13ED SWAP1 PUSH2 0x54C JUMP JUMPDEST PUSH1 0x4D DUP2 GT PUSH2 0x13FB JUMPI PUSH1 0xA EXP SWAP1 JUMP JUMPDEST PUSH2 0x1393 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0x1439 PUSH2 0x143F SWAP2 PUSH2 0x243 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST SWAP1 DUP2 ISZERO PUSH2 0x144A JUMPI DIV SWAP1 JUMP JUMPDEST PUSH2 0x1400 JUMP JUMPDEST PUSH1 0x20 PUSH32 0x206F766572666C6F770000000000000000000000000000000000000000000000 SWAP2 PUSH32 0x596561726E5661756C742062616C616E6365207363616C696E6720776F756C64 PUSH0 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST PUSH2 0x14A9 PUSH1 0x29 PUSH1 0x40 SWAP3 PUSH2 0x32A JUMP JUMPDEST PUSH2 0x14B2 DUP2 PUSH2 0x144F JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x14CB SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x149C JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x14D5 JUMPI JUMP JUMPDEST PUSH2 0x14DD PUSH2 0x231 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x150D PUSH1 0x4 DUP3 ADD PUSH2 0x14B6 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH1 0x20 PUSH32 0x666C6F7700000000000000000000000000000000000000000000000000000000 SWAP2 PUSH32 0x51756F74652062616C616E6365207363616C696E6720776F756C64206F766572 PUSH0 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST PUSH2 0x156B PUSH1 0x24 PUSH1 0x40 SWAP3 PUSH2 0x32A JUMP JUMPDEST PUSH2 0x1574 DUP2 PUSH2 0x1511 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x158D SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x155E JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x1597 JUMPI JUMP JUMPDEST PUSH2 0x159F PUSH2 0x231 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x15CF PUSH1 0x4 DUP3 ADD PUSH2 0x1578 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x15E2 PUSH2 0x15E8 SWAP2 SWAP4 SWAP3 SWAP4 PUSH2 0x243 JUMP JUMPDEST SWAP3 PUSH2 0x243 JUMP JUMPDEST SWAP2 PUSH2 0x15F4 DUP4 DUP3 MUL PUSH2 0x243 JUMP JUMPDEST SWAP3 DUP2 DUP5 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0x1603 JUMPI JUMP JUMPDEST PUSH2 0x1393 JUMP JUMPDEST PUSH1 0x20 PUSH32 0x7700000000000000000000000000000000000000000000000000000000000000 SWAP2 PUSH32 0x5368617265732063616C63756C6174696F6E20776F756C64206F766572666C6F PUSH0 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST PUSH2 0x1662 PUSH1 0x21 PUSH1 0x40 SWAP3 PUSH2 0x32A JUMP JUMPDEST PUSH2 0x166B DUP2 PUSH2 0x1608 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x1684 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x1655 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x168E JUMPI JUMP JUMPDEST PUSH2 0x1696 PUSH2 0x231 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x16C6 PUSH1 0x4 DUP3 ADD PUSH2 0x166F JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH1 0x20 PUSH32 0x6C74000000000000000000000000000000000000000000000000000000000000 SWAP2 PUSH32 0x496E73756666696369656E742061737365747320696E20596561726E20566175 PUSH0 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST PUSH2 0x1724 PUSH1 0x22 PUSH1 0x40 SWAP3 PUSH2 0x32A JUMP JUMPDEST PUSH2 0x172D DUP2 PUSH2 0x16CA JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x1746 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x1717 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x1750 JUMPI JUMP JUMPDEST PUSH2 0x1758 PUSH2 0x231 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x1788 PUSH1 0x4 DUP3 ADD PUSH2 0x1731 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 SWAP1 PUSH2 0x17B5 PUSH2 0x17BC SWAP5 SWAP7 SWAP6 SWAP4 SWAP7 PUSH2 0x17AB PUSH1 0x60 DUP5 ADD SWAP9 PUSH0 DUP6 ADD SWAP1 PUSH2 0x450 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x978 JUMP JUMPDEST ADD SWAP1 PUSH2 0x978 JUMP JUMPDEST JUMP JUMPDEST PUSH0 PUSH32 0x426173652062616C616E636520636865636B206661696C656400000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x17F2 PUSH1 0x19 PUSH1 0x20 SWAP3 PUSH2 0x32A JUMP JUMPDEST PUSH2 0x17FB DUP2 PUSH2 0x17BE JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x1814 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x17E5 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x181E JUMPI JUMP JUMPDEST PUSH2 0x1826 PUSH2 0x231 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x1856 PUSH1 0x4 DUP3 ADD PUSH2 0x17FF JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x1869 PUSH2 0x186F SWAP2 SWAP4 SWAP3 SWAP4 PUSH2 0x243 JUMP JUMPDEST SWAP3 PUSH2 0x243 JUMP JUMPDEST DUP3 SUB SWAP2 DUP3 GT PUSH2 0x187A JUMPI JUMP JUMPDEST PUSH2 0x1393 JUMP JUMPDEST PUSH0 PUSH32 0x48616972637574206578636565647320616D6F756E7400000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x18B3 PUSH1 0x16 PUSH1 0x20 SWAP3 PUSH2 0x32A JUMP JUMPDEST PUSH2 0x18BC DUP2 PUSH2 0x187F JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x18D5 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x18A6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x18DF JUMPI JUMP JUMPDEST PUSH2 0x18E7 PUSH2 0x231 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x1917 PUSH1 0x4 DUP3 ADD PUSH2 0x18C0 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH1 0x20 PUSH32 0x7920686169726375740000000000000000000000000000000000000000000000 SWAP2 PUSH32 0x5365636F6E6461727920686169726375742065786365656473207072696D6172 PUSH0 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST PUSH2 0x1975 PUSH1 0x29 PUSH1 0x40 SWAP3 PUSH2 0x32A JUMP JUMPDEST PUSH2 0x197E DUP2 PUSH2 0x191B JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x1997 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x1968 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x19A1 JUMPI JUMP JUMPDEST PUSH2 0x19A9 PUSH2 0x231 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x19D9 PUSH1 0x4 DUP3 ADD PUSH2 0x1982 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x1A02 PUSH2 0x1A07 SWAP2 PUSH2 0x1208 JUMP JUMPDEST PUSH2 0x19DD JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1A14 SWAP1 SLOAD PUSH2 0x19F6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1A20 SWAP1 PUSH2 0x1263 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0x1A30 DUP3 PUSH2 0x28E JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x1A4B JUMPI PUSH2 0x1A48 SWAP2 PUSH0 ADD PUSH2 0x1A23 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x23B JUMP JUMPDEST PUSH2 0x1A59 DUP2 PUSH2 0x3F3 JUMP JUMPDEST SUB PUSH2 0x1A60 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0x1A71 DUP3 PUSH2 0x1A50 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x1A8C JUMPI PUSH2 0x1A89 SWAP2 PUSH0 ADD PUSH2 0x1A64 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x23B JUMP JUMPDEST SWAP2 PUSH1 0x20 PUSH2 0x1AB2 SWAP3 SWAP5 SWAP4 PUSH2 0x1AAB PUSH1 0x40 DUP3 ADD SWAP7 PUSH0 DUP4 ADD SWAP1 PUSH2 0x978 JUMP JUMPDEST ADD SWAP1 PUSH2 0x450 JUMP JUMPDEST JUMP JUMPDEST PUSH0 PUSH32 0x4661696C656420746F207472616E736665722071756F74654173736574000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x1AE8 PUSH1 0x1D PUSH1 0x20 SWAP3 PUSH2 0x32A JUMP JUMPDEST PUSH2 0x1AF1 DUP2 PUSH2 0x1AB4 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x1B0A SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x1ADB JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x1B14 JUMPI JUMP JUMPDEST PUSH2 0x1B1C PUSH2 0x231 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x1B4C PUSH1 0x4 DUP3 ADD PUSH2 0x1AF5 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH0 SHL SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x1B80 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 PUSH2 0x1B50 JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0x1B9E PUSH2 0x1B99 PUSH2 0x1BA3 SWAP3 PUSH2 0x243 JUMP JUMPDEST PUSH2 0x1016 JUMP JUMPDEST PUSH2 0x243 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x1BBE PUSH2 0x1BB9 PUSH2 0x1BC5 SWAP3 PUSH2 0x1B8A JUMP JUMPDEST PUSH2 0x1BA6 JUMP JUMPDEST DUP3 SLOAD PUSH2 0x1B55 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x1BE5 DUP2 PUSH2 0x1BDF PUSH2 0x1BD9 PUSH0 PUSH2 0x1019 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST GT PUSH2 0x108D JUMP JUMPDEST PUSH2 0x1C0A PUSH2 0x1BF1 CALLER PUSH2 0x3ABC JUMP JUMPDEST PUSH2 0x1C03 PUSH2 0x1BFD DUP5 PUSH2 0x243 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST LT ISZERO PUSH2 0x1129 JUMP JUMPDEST PUSH2 0x1C2D PUSH2 0x1C15 PUSH2 0x298C JUMP JUMPDEST PUSH2 0x1C27 PUSH2 0x1C21 PUSH0 PUSH2 0x1019 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST GT PUSH2 0x11C5 JUMP JUMPDEST PUSH2 0x1C6A PUSH1 0x20 PUSH2 0x1C54 PUSH2 0x1C4F PUSH2 0x1C4A PUSH2 0x1C45 PUSH1 0x1 PUSH2 0x123A JUMP JUMPDEST PUSH2 0x126F JUMP JUMPDEST PUSH2 0x1287 JUMP JUMPDEST PUSH2 0x1293 JUMP JUMPDEST PUSH4 0x313CE567 SWAP1 PUSH2 0x1C62 PUSH2 0x231 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x129F JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x1C7A PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x27DC JUMPI PUSH0 SWAP2 PUSH2 0x27AE JUMPI JUMPDEST POP SWAP1 PUSH2 0x1CC3 PUSH1 0x20 PUSH2 0x1CAD PUSH2 0x1CA8 PUSH2 0x1CA3 PUSH1 0x2 PUSH2 0x130A JUMP JUMPDEST PUSH2 0x1287 JUMP JUMPDEST PUSH2 0x1293 JUMP JUMPDEST PUSH4 0x313CE567 SWAP1 PUSH2 0x1CBB PUSH2 0x231 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x129F JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x1CD3 PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x27A9 JUMPI PUSH0 SWAP2 PUSH2 0x277B JUMPI JUMPDEST POP SWAP1 PUSH2 0x1D30 PUSH1 0x20 PUSH2 0x1CFE PUSH2 0x1CF9 PUSH1 0x1 PUSH2 0x123A JUMP JUMPDEST PUSH2 0x126F JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x1D25 PUSH2 0x1D10 ADDRESS PUSH2 0x1317 JUMP JUMPDEST SWAP3 PUSH2 0x1D19 PUSH2 0x231 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x129F JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x985 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x2776 JUMPI PUSH0 SWAP2 PUSH2 0x2748 JUMPI JUMPDEST POP SWAP1 PUSH2 0x1D95 PUSH1 0x20 PUSH2 0x1D63 PUSH2 0x1D5E PUSH2 0x1D59 PUSH1 0x2 PUSH2 0x130A JUMP JUMPDEST PUSH2 0x135C JUMP JUMPDEST PUSH2 0x1368 JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x1D8A PUSH2 0x1D75 ADDRESS PUSH2 0x1317 JUMP JUMPDEST SWAP3 PUSH2 0x1D7E PUSH2 0x231 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x129F JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x985 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x2743 JUMPI PUSH0 SWAP2 PUSH2 0x2715 JUMPI JUMPDEST POP SWAP4 PUSH2 0x1DF9 PUSH1 0x20 PUSH2 0x1DC7 PUSH2 0x1DC2 PUSH2 0x1DBD PUSH0 PUSH2 0x130A JUMP JUMPDEST PUSH2 0x135C JUMP JUMPDEST PUSH2 0x1368 JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x1DEE PUSH2 0x1DD9 ADDRESS PUSH2 0x1317 JUMP JUMPDEST SWAP3 PUSH2 0x1DE2 PUSH2 0x231 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x129F JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x985 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x2710 JUMPI PUSH0 SWAP2 PUSH2 0x26E2 JUMPI JUMPDEST POP SWAP3 DUP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x12 DUP5 SWAP1 PUSH2 0x1E3C SWAP1 PUSH2 0x1377 JUMP JUMPDEST SWAP1 PUSH2 0x1E46 SWAP2 PUSH2 0x13C0 JUMP JUMPDEST PUSH2 0x1E4F SWAP1 PUSH2 0x13E4 JUMP JUMPDEST PUSH2 0x1E58 SWAP2 PUSH2 0x142D JUMP JUMPDEST PUSH2 0x1E61 SWAP1 PUSH2 0x243 JUMP JUMPDEST SWAP1 PUSH2 0x1E6B SWAP1 PUSH2 0x243 JUMP JUMPDEST GT ISZERO PUSH2 0x1E76 SWAP1 PUSH2 0x14CE JUMP JUMPDEST DUP6 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x12 DUP8 SWAP1 PUSH2 0x1EA5 SWAP1 PUSH2 0x1377 JUMP JUMPDEST SWAP1 PUSH2 0x1EAF SWAP2 PUSH2 0x13C0 JUMP JUMPDEST PUSH2 0x1EB8 SWAP1 PUSH2 0x13E4 JUMP JUMPDEST PUSH2 0x1EC1 SWAP2 PUSH2 0x142D JUMP JUMPDEST PUSH2 0x1ECA SWAP1 PUSH2 0x243 JUMP JUMPDEST SWAP1 PUSH2 0x1ED4 SWAP1 PUSH2 0x243 JUMP JUMPDEST GT ISZERO PUSH2 0x1EDF SWAP1 PUSH2 0x1590 JUMP JUMPDEST PUSH1 0x12 DUP3 SWAP1 PUSH2 0x1EEC SWAP1 PUSH2 0x1377 JUMP JUMPDEST SWAP1 PUSH2 0x1EF6 SWAP2 PUSH2 0x13C0 JUMP JUMPDEST PUSH2 0x1EFF SWAP1 PUSH2 0x13E4 JUMP JUMPDEST PUSH2 0x1F08 SWAP2 PUSH2 0x15D3 JUMP JUMPDEST SWAP5 PUSH1 0x12 DUP6 SWAP1 PUSH2 0x1F16 SWAP1 PUSH2 0x1377 JUMP JUMPDEST SWAP1 PUSH2 0x1F20 SWAP2 PUSH2 0x13C0 JUMP JUMPDEST PUSH2 0x1F29 SWAP1 PUSH2 0x13E4 JUMP JUMPDEST PUSH2 0x1F32 SWAP2 PUSH2 0x15D3 JUMP JUMPDEST SWAP1 DUP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 PUSH2 0x1F5F SWAP2 PUSH2 0x142D JUMP JUMPDEST PUSH2 0x1F68 SWAP1 PUSH2 0x243 JUMP JUMPDEST SWAP1 PUSH2 0x1F72 SWAP1 PUSH2 0x243 JUMP JUMPDEST GT ISZERO PUSH2 0x1F7D SWAP1 PUSH2 0x1687 JUMP JUMPDEST DUP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 PUSH2 0x1FA9 SWAP2 PUSH2 0x142D JUMP JUMPDEST PUSH2 0x1FB2 SWAP1 PUSH2 0x243 JUMP JUMPDEST SWAP1 PUSH2 0x1FBC SWAP1 PUSH2 0x243 JUMP JUMPDEST GT ISZERO PUSH2 0x1FC7 SWAP1 PUSH2 0x1687 JUMP JUMPDEST DUP3 DUP7 PUSH2 0x1FD2 SWAP2 PUSH2 0x15D3 JUMP JUMPDEST PUSH2 0x1FDA PUSH2 0x298C JUMP JUMPDEST PUSH2 0x1FE3 SWAP2 PUSH2 0x142D JUMP JUMPDEST SWAP2 DUP4 SWAP1 PUSH2 0x1FEF SWAP2 PUSH2 0x15D3 JUMP JUMPDEST PUSH2 0x1FF7 PUSH2 0x298C JUMP JUMPDEST PUSH2 0x2000 SWAP2 PUSH2 0x142D JUMP JUMPDEST SWAP3 CALLER SWAP1 PUSH2 0x200C SWAP2 PUSH2 0x48CF JUMP JUMPDEST PUSH1 0x12 PUSH2 0x2017 SWAP1 PUSH2 0x1377 JUMP JUMPDEST SWAP1 PUSH2 0x2021 SWAP2 PUSH2 0x13C0 JUMP JUMPDEST PUSH2 0x202A SWAP1 PUSH2 0x13E4 JUMP JUMPDEST PUSH2 0x2033 SWAP2 PUSH2 0x142D JUMP JUMPDEST SWAP3 PUSH1 0x12 PUSH2 0x203F SWAP1 PUSH2 0x1377 JUMP JUMPDEST SWAP1 PUSH2 0x2049 SWAP2 PUSH2 0x13C0 JUMP JUMPDEST PUSH2 0x2052 SWAP1 PUSH2 0x13E4 JUMP JUMPDEST PUSH2 0x205B SWAP2 PUSH2 0x142D JUMP JUMPDEST SWAP3 DUP3 PUSH2 0x2067 PUSH1 0x1 PUSH2 0x123A JUMP JUMPDEST PUSH2 0x2070 SWAP1 PUSH2 0x126F JUMP JUMPDEST PUSH4 0x7A2D13A PUSH2 0x207D PUSH2 0x231 JUMP JUMPDEST DUP1 SWAP5 PUSH2 0x2089 DUP3 SWAP4 PUSH2 0x129F JUMP JUMPDEST DUP3 MSTORE PUSH1 0x4 DUP3 ADD SWAP1 PUSH2 0x2099 SWAP2 PUSH2 0x45D JUMP JUMPDEST SUB DUP2 GAS SWAP4 PUSH1 0x20 SWAP5 STATICCALL DUP1 ISZERO PUSH2 0x26DD JUMPI PUSH2 0x20BF PUSH2 0x20C5 SWAP2 PUSH2 0x20CC SWAP5 PUSH0 SWAP2 PUSH2 0x26AF JUMPI JUMPDEST POP PUSH2 0x243 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST GT ISZERO PUSH2 0x1749 JUMP JUMPDEST PUSH1 0x20 PUSH2 0x20E0 PUSH2 0x20DB PUSH1 0x1 PUSH2 0x123A JUMP JUMPDEST PUSH2 0x126F JUMP JUMPDEST PUSH4 0xBA087652 SWAP4 SWAP1 PUSH2 0x2115 PUSH0 PUSH2 0x20F4 ADDRESS PUSH2 0x1317 JUMP JUMPDEST SWAP7 PUSH2 0x2120 PUSH2 0x2101 ADDRESS PUSH2 0x1317 JUMP JUMPDEST PUSH2 0x2109 PUSH2 0x231 JUMP JUMPDEST SWAP10 DUP11 SWAP8 DUP9 SWAP7 DUP8 SWAP6 PUSH2 0x129F JUMP JUMPDEST DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0x178C JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x26AA JUMPI PUSH2 0x2182 SWAP3 PUSH2 0x267E JUMPI JUMPDEST POP PUSH1 0x20 PUSH2 0x2150 PUSH2 0x214B PUSH2 0x2146 PUSH0 PUSH2 0x130A JUMP JUMPDEST PUSH2 0x135C JUMP JUMPDEST PUSH2 0x1368 JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x2177 PUSH2 0x2162 ADDRESS PUSH2 0x1317 JUMP JUMPDEST SWAP3 PUSH2 0x216B PUSH2 0x231 JUMP JUMPDEST SWAP7 DUP8 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x129F JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x985 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x2679 JUMPI PUSH2 0x21BA SWAP3 PUSH0 SWAP2 PUSH2 0x264B JUMPI JUMPDEST POP PUSH2 0x21B5 DUP2 PUSH2 0x21AE PUSH2 0x21A8 DUP6 PUSH2 0x243 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST LT ISZERO PUSH2 0x1817 JUMP JUMPDEST PUSH2 0x185A JUMP JUMPDEST DUP1 PUSH2 0x21CD PUSH2 0x21C7 PUSH0 PUSH2 0x1019 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST GT PUSH2 0x2330 JUMPI JUMPDEST POP DUP1 PUSH2 0x21E7 PUSH2 0x21E1 PUSH0 PUSH2 0x1019 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST GT PUSH2 0x2317 JUMPI JUMPDEST POP POP PUSH2 0x2201 PUSH2 0x21FC PUSH1 0x1 PUSH2 0x123A JUMP JUMPDEST PUSH2 0x126F JUMP JUMPDEST PUSH2 0x2250 PUSH4 0x7A2D13A SWAP2 PUSH1 0x20 PUSH2 0x221E PUSH2 0x2219 PUSH1 0x1 PUSH2 0x123A JUMP JUMPDEST PUSH2 0x126F JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x2245 PUSH2 0x2230 ADDRESS PUSH2 0x1317 JUMP JUMPDEST SWAP3 PUSH2 0x2239 PUSH2 0x231 JUMP JUMPDEST SWAP7 DUP8 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x129F JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x985 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x2312 JUMPI PUSH2 0x228D SWAP4 PUSH1 0x20 SWAP4 PUSH0 SWAP4 PUSH2 0x22DF JUMPI JUMPDEST POP PUSH2 0x2282 SWAP1 PUSH2 0x2276 PUSH2 0x231 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x129F JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x45D JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x22DA JUMPI PUSH2 0x22AA SWAP2 PUSH0 SWAP2 PUSH2 0x22AC JUMPI JUMPDEST POP PUSH1 0x5 PUSH2 0x1BA9 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x22CD SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x22D3 JUMPI JUMPDEST PUSH2 0x22C5 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1332 JUMP JUMPDEST PUSH0 PUSH2 0x22A2 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x22BB JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST PUSH2 0x2282 SWAP2 SWAP4 POP PUSH2 0x2304 SWAP1 DUP6 RETURNDATASIZE DUP2 GT PUSH2 0x230B JUMPI JUMPDEST PUSH2 0x22FC DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1332 JUMP JUMPDEST SWAP3 SWAP1 PUSH2 0x2269 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x22F2 JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST PUSH2 0x2329 SWAP2 PUSH2 0x2324 SWAP2 PUSH2 0x4BD1 JUMP JUMPDEST PUSH2 0x1B0D JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x21ED JUMP JUMPDEST PUSH2 0x2339 DUP2 PUSH2 0x494E JUMP JUMPDEST SWAP1 PUSH2 0x2357 DUP3 PUSH2 0x2350 PUSH2 0x234A DUP5 PUSH2 0x243 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST GT ISZERO PUSH2 0x18D8 JUMP JUMPDEST PUSH2 0x2362 DUP2 DUP4 SWAP1 PUSH2 0x185A JUMP JUMPDEST POP PUSH2 0x236C DUP3 PUSH2 0x494E JUMP JUMPDEST PUSH2 0x2389 DUP2 PUSH2 0x2382 PUSH2 0x237C DUP7 PUSH2 0x243 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST GT ISZERO PUSH2 0x199A JUMP JUMPDEST PUSH2 0x23B6 PUSH1 0x20 PUSH2 0x23A0 PUSH2 0x239B PUSH1 0x3 PUSH2 0x1A0A JUMP JUMPDEST PUSH2 0x1A17 JUMP JUMPDEST PUSH4 0x4CC7325 SWAP1 PUSH2 0x23AE PUSH2 0x231 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x129F JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x23C6 PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x2646 JUMPI PUSH0 SWAP2 PUSH2 0x2618 JUMPI JUMPDEST POP SWAP2 PUSH2 0x2407 PUSH1 0x20 PUSH2 0x23F1 PUSH2 0x23EC PUSH1 0x3 PUSH2 0x1A0A JUMP JUMPDEST PUSH2 0x1A17 JUMP JUMPDEST PUSH4 0x3B19E84A SWAP1 PUSH2 0x23FF PUSH2 0x231 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x129F JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x2417 PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x2613 JUMPI PUSH0 SWAP2 PUSH2 0x25E5 JUMPI JUMPDEST POP SWAP4 PUSH1 0x20 PUSH2 0x2446 PUSH2 0x2441 PUSH2 0x243C PUSH0 PUSH2 0x130A JUMP JUMPDEST PUSH2 0x135C JUMP JUMPDEST PUSH2 0x1368 JUMP JUMPDEST SWAP3 PUSH4 0xA9059CBB SWAP4 PUSH2 0x2475 PUSH0 PUSH2 0x245D DUP13 SWAP5 DUP8 SWAP1 PUSH2 0x185A JUMP JUMPDEST SWAP7 PUSH2 0x2480 PUSH2 0x2469 PUSH2 0x231 JUMP JUMPDEST SWAP9 DUP10 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x129F JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x1A91 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x25E0 JUMPI PUSH1 0x20 SWAP3 PUSH2 0x25B5 JUMPI JUMPDEST POP PUSH2 0x24AD PUSH2 0x24A8 PUSH2 0x24A3 PUSH0 PUSH2 0x130A JUMP JUMPDEST PUSH2 0x135C JUMP JUMPDEST PUSH2 0x1368 JUMP JUMPDEST PUSH2 0x24DA PUSH0 PUSH2 0x24C2 PUSH4 0xA9059CBB SWAP8 SWAP5 DUP8 SWAP1 PUSH2 0x185A JUMP JUMPDEST SWAP7 PUSH2 0x24E5 PUSH2 0x24CE PUSH2 0x231 JUMP JUMPDEST SWAP9 DUP10 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x129F JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x1A91 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x25B0 JUMPI PUSH1 0x20 SWAP3 PUSH2 0x2585 JUMPI JUMPDEST POP PUSH2 0x2512 PUSH2 0x250D PUSH2 0x2508 PUSH0 PUSH2 0x130A JUMP JUMPDEST PUSH2 0x135C JUMP JUMPDEST PUSH2 0x1368 JUMP JUMPDEST PUSH2 0x2535 PUSH0 PUSH4 0xA9059CBB SWAP6 SWAP4 SWAP6 PUSH2 0x2540 PUSH2 0x2529 PUSH2 0x231 JUMP JUMPDEST SWAP8 DUP9 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x129F JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x1A91 JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x2580 JUMPI PUSH2 0x2554 JUMPI JUMPDEST PUSH2 0x21D3 JUMP JUMPDEST PUSH2 0x2574 SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2579 JUMPI JUMPDEST PUSH2 0x256C DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1A73 JUMP JUMPDEST PUSH2 0x254F JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2562 JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST PUSH2 0x25A4 SWAP1 DUP4 RETURNDATASIZE DUP2 GT PUSH2 0x25A9 JUMPI JUMPDEST PUSH2 0x259C DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1A73 JUMP JUMPDEST PUSH2 0x24F8 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2592 JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST PUSH2 0x25D4 SWAP1 DUP4 RETURNDATASIZE DUP2 GT PUSH2 0x25D9 JUMPI JUMPDEST PUSH2 0x25CC DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1A73 JUMP JUMPDEST PUSH2 0x2493 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x25C2 JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST PUSH2 0x2606 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x260C JUMPI JUMPDEST PUSH2 0x25FE DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1A32 JUMP JUMPDEST PUSH0 PUSH2 0x2429 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x25F4 JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST PUSH2 0x2639 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x263F JUMPI JUMPDEST PUSH2 0x2631 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1A32 JUMP JUMPDEST PUSH0 PUSH2 0x23D8 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2627 JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST PUSH2 0x266C SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2672 JUMPI JUMPDEST PUSH2 0x2664 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1332 JUMP JUMPDEST PUSH0 PUSH2 0x2197 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x265A JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST PUSH2 0x269E SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x26A3 JUMPI JUMPDEST PUSH2 0x2696 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1332 JUMP JUMPDEST PUSH2 0x2134 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x268C JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST PUSH2 0x26D0 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x26D6 JUMPI JUMPDEST PUSH2 0x26C8 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1332 JUMP JUMPDEST PUSH0 PUSH2 0x20B9 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x26BE JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST PUSH2 0x2703 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2709 JUMPI JUMPDEST PUSH2 0x26FB DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1332 JUMP JUMPDEST PUSH0 PUSH2 0x1E0B JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x26F1 JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST PUSH2 0x2736 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x273C JUMPI JUMPDEST PUSH2 0x272E DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1332 JUMP JUMPDEST PUSH0 PUSH2 0x1DA7 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2724 JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST PUSH2 0x2769 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x276F JUMPI JUMPDEST PUSH2 0x2761 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1332 JUMP JUMPDEST PUSH0 PUSH2 0x1D42 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2757 JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST PUSH2 0x279C SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x27A2 JUMPI JUMPDEST PUSH2 0x2794 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x12C8 JUMP JUMPDEST PUSH0 PUSH2 0x1CE5 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x278A JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST PUSH2 0x27CF SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x27D5 JUMPI JUMPDEST PUSH2 0x27C7 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x12C8 JUMP JUMPDEST PUSH0 PUSH2 0x1C8C JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x27BD JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST SWAP1 PUSH2 0x27EB SWAP2 PUSH2 0xFE3 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH1 0x1 PUSH1 0x2 DUP4 DIV SWAP3 AND DUP1 ISZERO PUSH2 0x283F JUMPI JUMPDEST PUSH1 0x20 DUP4 LT EQ PUSH2 0x283A JUMPI JUMP JUMPDEST PUSH2 0x27F2 JUMP JUMPDEST SWAP2 PUSH1 0x7F AND SWAP2 PUSH2 0x282F JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP2 MSTORE ADD SWAP1 JUMP JUMPDEST PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP1 PUSH0 SWAP3 SWAP2 DUP1 SLOAD SWAP1 PUSH2 0x2875 PUSH2 0x286E DUP4 PUSH2 0x281F JUMP JUMPDEST DUP1 SWAP5 PUSH2 0x2849 JUMP JUMPDEST SWAP2 PUSH1 0x1 DUP2 AND SWAP1 DUP2 PUSH0 EQ PUSH2 0x28CC JUMPI POP PUSH1 0x1 EQ PUSH2 0x2890 JUMPI JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x289D SWAP2 SWAP3 SWAP4 SWAP5 POP PUSH2 0x2852 JUMP JUMPDEST SWAP2 PUSH0 SWAP3 JUMPDEST DUP2 DUP5 LT PUSH2 0x28B4 JUMPI POP POP ADD SWAP1 PUSH0 DUP1 DUP1 PUSH2 0x288B JUMP JUMPDEST PUSH1 0x1 DUP2 PUSH1 0x20 SWAP3 SWAP6 SWAP4 SWAP6 SLOAD DUP5 DUP7 ADD MSTORE ADD SWAP2 ADD SWAP3 SWAP1 PUSH2 0x28A1 JUMP JUMPDEST SWAP3 SWAP5 SWAP6 POP POP POP PUSH1 0xFF NOT AND DUP3 MSTORE ISZERO ISZERO PUSH1 0x20 MUL ADD SWAP1 PUSH0 DUP1 DUP1 PUSH2 0x288B JUMP JUMPDEST SWAP1 PUSH2 0x28F1 SWAP2 PUSH2 0x285B JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x2914 PUSH2 0x290D SWAP3 PUSH2 0x2904 PUSH2 0x231 JUMP JUMPDEST SWAP4 DUP5 DUP1 SWAP3 PUSH2 0x28E7 JUMP JUMPDEST SUB DUP4 PUSH2 0x6B7 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x291F SWAP1 PUSH2 0x28F4 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x292A PUSH2 0x27ED JUMP JUMPDEST POP PUSH2 0x293E PUSH1 0x3 PUSH2 0x2938 PUSH2 0x4FA0 JUMP JUMPDEST ADD PUSH2 0x2916 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x2962 SWAP2 PUSH2 0x2951 PUSH2 0x2941 JUMP JUMPDEST POP PUSH2 0x295A PUSH2 0x4FC4 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH2 0x4FD1 JUMP JUMPDEST PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x2977 PUSH2 0x297C SWAP2 PUSH2 0x1208 JUMP JUMPDEST PUSH2 0x5AD JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2989 SWAP1 SLOAD PUSH2 0x296B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2994 PUSH2 0x2967 JUMP JUMPDEST POP PUSH2 0x29A8 PUSH1 0x2 PUSH2 0x29A2 PUSH2 0x4FA0 JUMP JUMPDEST ADD PUSH2 0x297F JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP2 PUSH2 0x29D5 SWAP3 PUSH2 0x29B8 PUSH2 0x2941 JUMP JUMPDEST POP PUSH2 0x29CD PUSH2 0x29C4 PUSH2 0x4FC4 JUMP JUMPDEST DUP3 SWAP1 DUP5 SWAP2 PUSH2 0x5021 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH2 0x50EC JUMP JUMPDEST PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH2 0x29E3 SWAP1 PUSH2 0x1247 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x29EF SWAP1 PUSH2 0x29DA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x29FB SWAP1 PUSH2 0x1263 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x40 SWAP1 PUSH2 0x2A27 PUSH2 0x2A2E SWAP5 SWAP7 SWAP6 SWAP4 SWAP7 PUSH2 0x2A1D PUSH1 0x60 DUP5 ADD SWAP9 PUSH0 DUP6 ADD SWAP1 PUSH2 0x978 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x978 JUMP JUMPDEST ADD SWAP1 PUSH2 0x450 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2A3F PUSH2 0x2A45 SWAP2 SWAP4 SWAP3 SWAP4 PUSH2 0x243 JUMP JUMPDEST SWAP3 PUSH2 0x243 JUMP JUMPDEST DUP3 ADD DUP1 SWAP3 GT PUSH2 0x2A50 JUMPI JUMP JUMPDEST PUSH2 0x1393 JUMP JUMPDEST PUSH2 0x2A5D PUSH2 0x2967 JUMP JUMPDEST POP PUSH2 0x2A8B PUSH1 0x20 PUSH2 0x2A75 PUSH2 0x2A70 PUSH1 0x3 PUSH2 0x1A0A JUMP JUMPDEST PUSH2 0x1A17 JUMP JUMPDEST PUSH4 0xBB3BA04C SWAP1 PUSH2 0x2A83 PUSH2 0x231 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x129F JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x2A9B PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x2F56 JUMPI PUSH2 0x2AB6 SWAP2 PUSH0 SWAP2 PUSH2 0x2F28 JUMPI JUMPDEST POP PUSH2 0x29E6 JUMP JUMPDEST PUSH2 0x2AE3 PUSH1 0x20 PUSH2 0x2ACD PUSH2 0x2AC8 PUSH1 0x3 PUSH2 0x1A0A JUMP JUMPDEST PUSH2 0x1A17 JUMP JUMPDEST PUSH4 0x1BF01E9B SWAP1 PUSH2 0x2ADB PUSH2 0x231 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x129F JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x2AF3 PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x2F23 JUMPI PUSH0 SWAP2 PUSH2 0x2EF5 JUMPI JUMPDEST POP SWAP1 PUSH2 0x2B10 PUSH0 PUSH2 0x1019 JUMP JUMPDEST PUSH2 0x2B59 PUSH1 0x20 PUSH2 0x2B27 PUSH2 0x2B22 PUSH1 0x1 PUSH2 0x123A JUMP JUMPDEST PUSH2 0x126F JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x2B4E PUSH2 0x2B39 ADDRESS PUSH2 0x1317 JUMP JUMPDEST SWAP3 PUSH2 0x2B42 PUSH2 0x231 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x129F JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x985 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x2EF0 JUMPI PUSH2 0x2BAC SWAP2 PUSH1 0x20 SWAP2 PUSH0 SWAP2 PUSH2 0x2EC3 JUMPI JUMPDEST POP PUSH2 0x2B85 PUSH2 0x2B80 PUSH1 0x1 PUSH2 0x123A JUMP JUMPDEST PUSH2 0x126F JUMP JUMPDEST PUSH2 0x2BA1 PUSH4 0x7A2D13A PUSH2 0x2B95 PUSH2 0x231 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x129F JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x45D JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x2EBE JUMPI PUSH0 SWAP2 PUSH2 0x2E90 JUMPI JUMPDEST POP PUSH2 0x2C10 PUSH1 0x20 PUSH2 0x2BDE PUSH2 0x2BD9 PUSH2 0x2BD4 PUSH1 0x2 PUSH2 0x130A JUMP JUMPDEST PUSH2 0x135C JUMP JUMPDEST PUSH2 0x1368 JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x2C05 PUSH2 0x2BF0 ADDRESS PUSH2 0x1317 JUMP JUMPDEST SWAP3 PUSH2 0x2BF9 PUSH2 0x231 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x129F JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x985 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x2E8B JUMPI PUSH0 SWAP2 PUSH2 0x2E5D JUMPI JUMPDEST POP PUSH2 0x2C2C PUSH0 PUSH2 0x130A JUMP JUMPDEST PUSH2 0x2C3E PUSH2 0x2C38 DUP8 PUSH2 0x282 JUMP JUMPDEST SWAP2 PUSH2 0x282 JUMP JUMPDEST SUB PUSH2 0x2DC1 JUMPI JUMPDEST PUSH1 0x20 PUSH2 0x2C4F DUP6 PUSH2 0x29F2 JUMP JUMPDEST PUSH4 0x248391FF SWAP1 PUSH2 0x2C84 PUSH2 0x2C62 PUSH1 0x2 PUSH2 0x130A JUMP JUMPDEST SWAP3 PUSH2 0x2C8F PUSH2 0x2C6F PUSH0 PUSH2 0x130A JUMP JUMPDEST SWAP7 PUSH2 0x2C78 PUSH2 0x231 JUMP JUMPDEST SWAP8 DUP9 SWAP7 DUP8 SWAP6 DUP7 SWAP6 PUSH2 0x129F JUMP JUMPDEST DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0x29FE JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x2DBC JUMPI PUSH2 0x2CB3 SWAP4 PUSH2 0x2CAE SWAP3 PUSH0 SWAP3 PUSH2 0x2D8C JUMPI JUMPDEST POP PUSH2 0x2A30 JUMP JUMPDEST PUSH2 0x2A30 JUMP JUMPDEST SWAP2 PUSH2 0x2CBC PUSH2 0x2F75 JUMP JUMPDEST SWAP2 PUSH2 0x2CC6 PUSH0 PUSH2 0x130A JUMP JUMPDEST PUSH2 0x2CD8 PUSH2 0x2CD2 DUP5 PUSH2 0x282 JUMP JUMPDEST SWAP2 PUSH2 0x282 JUMP JUMPDEST SUB PUSH2 0x2CEE JUMPI JUMPDEST POP POP SWAP1 PUSH2 0x2CEB SWAP2 SWAP1 PUSH2 0x2A30 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2CF9 PUSH1 0x20 SWAP2 PUSH2 0x29F2 JUMP JUMPDEST SWAP2 PUSH4 0x248391FF SWAP3 PUSH2 0x2D26 PUSH2 0x2D0C PUSH0 PUSH2 0x130A JUMP JUMPDEST SWAP3 SWAP5 PUSH2 0x2D31 DUP8 PUSH2 0x2D1A PUSH2 0x231 JUMP JUMPDEST SWAP8 DUP9 SWAP7 DUP8 SWAP6 DUP7 SWAP6 PUSH2 0x129F JUMP JUMPDEST DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0x29FE JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x2D87 JUMPI PUSH2 0x2CEB SWAP4 PUSH2 0x2D50 SWAP3 PUSH0 SWAP3 PUSH2 0x2D57 JUMPI JUMPDEST POP PUSH2 0x2A30 JUMP JUMPDEST SWAP2 PUSH0 PUSH2 0x2CDE JUMP JUMPDEST PUSH2 0x2D79 SWAP2 SWAP3 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2D80 JUMPI JUMPDEST PUSH2 0x2D71 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1332 JUMP JUMPDEST SWAP1 PUSH0 PUSH2 0x2D4A JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2D67 JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST PUSH2 0x2DAE SWAP2 SWAP3 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2DB5 JUMPI JUMPDEST PUSH2 0x2DA6 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1332 JUMP JUMPDEST SWAP1 PUSH0 PUSH2 0x2CA8 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2D9C JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST SWAP2 PUSH2 0x2DCB DUP5 PUSH2 0x29F2 JUMP JUMPDEST SWAP1 PUSH1 0x20 PUSH4 0x248391FF SWAP3 PUSH2 0x2DDD PUSH0 PUSH2 0x130A JUMP JUMPDEST SWAP1 PUSH2 0x2DFB DUP10 SWAP6 PUSH2 0x2E06 DUP9 PUSH2 0x2DEF PUSH2 0x231 JUMP JUMPDEST SWAP9 DUP10 SWAP7 DUP8 SWAP6 DUP7 SWAP6 PUSH2 0x129F JUMP JUMPDEST DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0x29FE JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x2E58 JUMPI PUSH2 0x2E22 SWAP3 PUSH0 SWAP3 PUSH2 0x2E28 JUMPI JUMPDEST POP PUSH2 0x2A30 JUMP JUMPDEST SWAP2 PUSH2 0x2C44 JUMP JUMPDEST PUSH2 0x2E4A SWAP2 SWAP3 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2E51 JUMPI JUMPDEST PUSH2 0x2E42 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1332 JUMP JUMPDEST SWAP1 PUSH0 PUSH2 0x2E1C JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2E38 JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST PUSH2 0x2E7E SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2E84 JUMPI JUMPDEST PUSH2 0x2E76 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1332 JUMP JUMPDEST PUSH0 PUSH2 0x2C22 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2E6C JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST PUSH2 0x2EB1 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2EB7 JUMPI JUMPDEST PUSH2 0x2EA9 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1332 JUMP JUMPDEST PUSH0 PUSH2 0x2BBE JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2E9F JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST PUSH2 0x2EE3 SWAP2 POP DUP3 RETURNDATASIZE DUP2 GT PUSH2 0x2EE9 JUMPI JUMPDEST PUSH2 0x2EDB DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1332 JUMP JUMPDEST PUSH0 PUSH2 0x2B72 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2ED1 JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST PUSH2 0x2F16 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2F1C JUMPI JUMPDEST PUSH2 0x2F0E DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1A32 JUMP JUMPDEST PUSH0 PUSH2 0x2B05 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2F04 JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST PUSH2 0x2F49 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2F4F JUMPI JUMPDEST PUSH2 0x2F41 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1A32 JUMP JUMPDEST PUSH0 PUSH2 0x2AB0 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2F37 JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x2F67 PUSH2 0x2F5B JUMP JUMPDEST POP PUSH2 0x2F72 PUSH1 0x12 PUSH2 0x1377 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2F7D PUSH2 0x2967 JUMP JUMPDEST POP PUSH2 0x2F90 PUSH2 0x2F8B PUSH1 0x1 PUSH2 0x123A JUMP JUMPDEST PUSH2 0x126F JUMP JUMPDEST PUSH2 0x2FDF PUSH4 0x7A2D13A SWAP2 PUSH1 0x20 PUSH2 0x2FAD PUSH2 0x2FA8 PUSH1 0x1 PUSH2 0x123A JUMP JUMPDEST PUSH2 0x126F JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x2FD4 PUSH2 0x2FBF ADDRESS PUSH2 0x1317 JUMP JUMPDEST SWAP3 PUSH2 0x2FC8 PUSH2 0x231 JUMP JUMPDEST SWAP7 DUP8 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x129F JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x985 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x30DF JUMPI PUSH2 0x301C SWAP4 PUSH1 0x20 SWAP4 PUSH0 SWAP4 PUSH2 0x30AC JUMPI JUMPDEST POP PUSH2 0x3011 SWAP1 PUSH2 0x3005 PUSH2 0x231 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x129F JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x45D JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x30A7 JUMPI PUSH0 SWAP2 PUSH2 0x3079 JUMPI JUMPDEST POP DUP1 PUSH2 0x304B PUSH2 0x3045 PUSH2 0x3040 PUSH1 0x5 PUSH2 0x297F JUMP JUMPDEST PUSH2 0x243 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST GT PUSH0 EQ PUSH2 0x306A JUMPI PUSH2 0x3066 SWAP1 PUSH2 0x3060 PUSH1 0x5 PUSH2 0x297F JUMP JUMPDEST SWAP1 PUSH2 0x185A JUMP JUMPDEST JUMPDEST SWAP1 JUMP JUMPDEST POP PUSH2 0x3074 PUSH0 PUSH2 0x1019 JUMP JUMPDEST PUSH2 0x3067 JUMP JUMPDEST PUSH2 0x309A SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x30A0 JUMPI JUMPDEST PUSH2 0x3092 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1332 JUMP JUMPDEST PUSH0 PUSH2 0x302E JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x3088 JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST PUSH2 0x3011 SWAP2 SWAP4 POP PUSH2 0x30D1 SWAP1 DUP6 RETURNDATASIZE DUP2 GT PUSH2 0x30D8 JUMPI JUMPDEST PUSH2 0x30C9 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1332 JUMP JUMPDEST SWAP3 SWAP1 PUSH2 0x2FF8 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x30BF JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST PUSH2 0x30EC PUSH2 0x51C9 JUMP JUMPDEST PUSH2 0x30F4 PUSH2 0x30F6 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x30FE PUSH2 0x52D6 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x3108 PUSH2 0x30E4 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x311C SWAP2 PUSH2 0x3117 PUSH2 0x52EC JUMP JUMPDEST PUSH2 0x311E JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x3131 SWAP2 PUSH2 0x312C DUP2 PUSH2 0x53BE JUMP JUMPDEST PUSH2 0x542E JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x313D SWAP2 PUSH2 0x310A JUMP JUMPDEST JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x3154 SWAP1 PUSH2 0x314F PUSH2 0x556C JUMP JUMPDEST PUSH2 0x31A2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x316E PUSH2 0x3169 PUSH2 0x3173 SWAP3 PUSH2 0x3157 JUMP JUMPDEST PUSH2 0x1B50 JUMP JUMPDEST PUSH2 0x7EB JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x319F PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC PUSH2 0x315A JUMP JUMPDEST SWAP1 JUMP JUMPDEST POP PUSH2 0x31AB PUSH2 0x3176 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x31BE PUSH2 0x31B9 PUSH2 0x313F JUMP JUMPDEST PUSH2 0x3143 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x31D3 PUSH2 0x31D8 SWAP2 PUSH2 0x1208 JUMP JUMPDEST PUSH2 0x31C1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x31E5 SWAP1 SLOAD PUSH2 0x31C7 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x31F0 PUSH2 0x2941 JUMP JUMPDEST POP PUSH2 0x3203 PUSH0 PUSH2 0x31FD PUSH2 0x55EA JUMP JUMPDEST ADD PUSH2 0x31DB JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x3218 SWAP2 PUSH2 0x3213 PUSH2 0x47BC JUMP JUMPDEST PUSH2 0x3222 JUMP JUMPDEST PUSH2 0x3220 PUSH2 0x4868 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x3234 SWAP2 PUSH2 0x322F PUSH2 0x4885 JUMP JUMPDEST PUSH2 0x32F4 JUMP JUMPDEST JUMP JUMPDEST PUSH0 PUSH32 0x416D6F756E74206D7573742062652067726561746572207468616E207A65726F SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x3269 PUSH1 0x20 DUP1 SWAP3 PUSH2 0x32A JUMP JUMPDEST PUSH2 0x3272 DUP2 PUSH2 0x3236 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x328B SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x325D JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x3295 JUMPI JUMP JUMPDEST PUSH2 0x329D PUSH2 0x231 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x32CD PUSH1 0x4 DUP3 ADD PUSH2 0x3276 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP2 PUSH1 0x20 PUSH2 0x32F2 SWAP3 SWAP5 SWAP4 PUSH2 0x32EB PUSH1 0x40 DUP3 ADD SWAP7 PUSH0 DUP4 ADD SWAP1 PUSH2 0x450 JUMP JUMPDEST ADD SWAP1 PUSH2 0x978 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x3310 DUP2 PUSH2 0x330A PUSH2 0x3304 PUSH0 PUSH2 0x1019 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST GT PUSH2 0x328E JUMP JUMPDEST PUSH2 0x3318 PUSH2 0x562A JUMP JUMPDEST PUSH2 0x3331 PUSH2 0x332C PUSH2 0x3327 PUSH0 PUSH2 0x130A JUMP JUMPDEST PUSH2 0x135C JUMP JUMPDEST PUSH2 0x1368 JUMP JUMPDEST PUSH1 0x20 PUSH4 0x23B872DD SWAP2 CALLER SWAP1 PUSH2 0x3361 PUSH0 PUSH2 0x3348 ADDRESS PUSH2 0x1317 JUMP JUMPDEST SWAP6 PUSH2 0x336C DUP9 PUSH2 0x3355 PUSH2 0x231 JUMP JUMPDEST SWAP9 DUP10 SWAP8 DUP9 SWAP7 DUP8 SWAP6 PUSH2 0x129F JUMP JUMPDEST DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0x29FE JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x3A89 JUMPI PUSH2 0x3A5D JUMPI JUMPDEST POP PUSH2 0x33A9 PUSH1 0x20 PUSH2 0x3393 PUSH2 0x338E PUSH1 0x3 PUSH2 0x1A0A JUMP JUMPDEST PUSH2 0x1A17 JUMP JUMPDEST PUSH4 0x4CC7325 SWAP1 PUSH2 0x33A1 PUSH2 0x231 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x129F JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x33B9 PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x3A58 JUMPI PUSH0 SWAP2 PUSH2 0x3A2A JUMPI JUMPDEST POP PUSH2 0x33F9 PUSH1 0x20 PUSH2 0x33E3 PUSH2 0x33DE PUSH1 0x3 PUSH2 0x1A0A JUMP JUMPDEST PUSH2 0x1A17 JUMP JUMPDEST PUSH4 0x3B19E84A SWAP1 PUSH2 0x33F1 PUSH2 0x231 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x129F JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x3409 PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x3A25 JUMPI PUSH0 SWAP2 PUSH2 0x39F7 JUMPI JUMPDEST POP SWAP2 PUSH2 0x3426 DUP2 PUSH2 0x494E JUMP JUMPDEST SWAP2 PUSH2 0x3430 DUP4 PUSH2 0x494E JUMP JUMPDEST PUSH1 0x20 PUSH2 0x344B PUSH2 0x3446 PUSH2 0x3441 PUSH0 PUSH2 0x130A JUMP JUMPDEST PUSH2 0x135C JUMP JUMPDEST PUSH2 0x1368 JUMP JUMPDEST PUSH4 0xA9059CBB SWAP4 SWAP1 PUSH2 0x3479 PUSH0 PUSH2 0x3461 DUP10 DUP8 SWAP1 PUSH2 0x185A JUMP JUMPDEST SWAP7 PUSH2 0x3484 PUSH2 0x346D PUSH2 0x231 JUMP JUMPDEST SWAP9 DUP10 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x129F JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x1A91 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x39F2 JUMPI PUSH1 0x20 SWAP3 PUSH2 0x39C7 JUMPI JUMPDEST POP PUSH2 0x34B1 PUSH2 0x34AC PUSH2 0x34A7 PUSH0 PUSH2 0x130A JUMP JUMPDEST PUSH2 0x135C JUMP JUMPDEST PUSH2 0x1368 JUMP JUMPDEST PUSH2 0x34D4 PUSH0 PUSH4 0xA9059CBB SWAP8 SWAP4 SWAP8 PUSH2 0x34DF PUSH2 0x34C8 PUSH2 0x231 JUMP JUMPDEST SWAP10 DUP11 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x129F JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x1A91 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP3 DUP4 ISZERO PUSH2 0x39C2 JUMPI PUSH2 0x34F9 SWAP4 PUSH2 0x3996 JUMPI JUMPDEST POP PUSH2 0x185A JUMP JUMPDEST SWAP1 PUSH2 0x3513 PUSH2 0x350E PUSH2 0x3509 PUSH0 PUSH2 0x130A JUMP JUMPDEST PUSH2 0x135C JUMP JUMPDEST PUSH2 0x1368 JUMP JUMPDEST PUSH1 0x20 PUSH4 0x95EA7B3 SWAP2 PUSH2 0x352D PUSH2 0x3528 PUSH1 0x1 PUSH2 0x123A JUMP JUMPDEST PUSH2 0x126F JUMP JUMPDEST SWAP1 PUSH2 0x354B PUSH0 DUP8 SWAP6 PUSH2 0x3556 PUSH2 0x353F PUSH2 0x231 JUMP JUMPDEST SWAP8 DUP9 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x129F JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x1A91 JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x3991 JUMPI PUSH2 0x3965 JUMPI JUMPDEST POP PUSH2 0x3578 PUSH2 0x3573 PUSH1 0x1 PUSH2 0x123A JUMP JUMPDEST PUSH2 0x126F JUMP JUMPDEST SWAP2 PUSH1 0x20 PUSH4 0x6E553F65 SWAP4 DUP3 SWAP1 PUSH2 0x35A8 PUSH0 PUSH2 0x3590 ADDRESS PUSH2 0x1317 JUMP JUMPDEST SWAP8 PUSH2 0x35B3 PUSH2 0x359C PUSH2 0x231 JUMP JUMPDEST SWAP10 DUP11 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x129F JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x32D1 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP3 DUP4 ISZERO PUSH2 0x3960 JUMPI PUSH2 0x35F9 SWAP4 PUSH2 0x3934 JUMPI JUMPDEST POP PUSH1 0x20 PUSH2 0x35E3 PUSH2 0x35DE PUSH2 0x35D9 PUSH0 PUSH2 0x130A JUMP JUMPDEST PUSH2 0x1287 JUMP JUMPDEST PUSH2 0x1293 JUMP JUMPDEST PUSH4 0x313CE567 SWAP1 PUSH2 0x35F1 PUSH2 0x231 JUMP JUMPDEST SWAP6 DUP7 SWAP3 PUSH2 0x129F JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x3609 PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x392F JUMPI PUSH2 0x3659 SWAP4 PUSH0 SWAP2 PUSH2 0x3901 JUMPI JUMPDEST POP PUSH1 0x20 PUSH2 0x3643 PUSH2 0x363E PUSH2 0x3639 PUSH2 0x3634 PUSH1 0x1 PUSH2 0x123A JUMP JUMPDEST PUSH2 0x126F JUMP JUMPDEST PUSH2 0x1287 JUMP JUMPDEST PUSH2 0x1293 JUMP JUMPDEST PUSH4 0x313CE567 SWAP1 PUSH2 0x3651 PUSH2 0x231 JUMP JUMPDEST SWAP7 DUP8 SWAP3 PUSH2 0x129F JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x3669 PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x38FC JUMPI PUSH2 0x36D3 PUSH2 0x36DE SWAP4 PUSH2 0x36D8 SWAP3 PUSH2 0x36E4 SWAP8 PUSH0 SWAP2 PUSH2 0x38CE JUMPI JUMPDEST POP SWAP4 DUP1 PUSH2 0x369E PUSH2 0x3698 DUP8 PUSH2 0x54C JUMP JUMPDEST SWAP2 PUSH2 0x54C JUMP JUMPDEST GT PUSH0 EQ PUSH2 0x38AD JUMPI PUSH2 0x36BC PUSH2 0x36B7 PUSH2 0x36C2 SWAP4 SWAP3 DUP8 SWAP1 PUSH2 0x13C0 JUMP JUMPDEST PUSH2 0x13E4 JUMP JUMPDEST SWAP1 PUSH2 0x142D JUMP JUMPDEST JUMPDEST SWAP3 PUSH2 0x36CE PUSH1 0x12 PUSH2 0x1377 JUMP JUMPDEST PUSH2 0x13C0 JUMP JUMPDEST PUSH2 0x13E4 JUMP JUMPDEST SWAP1 PUSH2 0x15D3 JUMP JUMPDEST SWAP1 PUSH2 0x590E JUMP JUMPDEST PUSH2 0x36F6 PUSH2 0x36F1 PUSH1 0x1 PUSH2 0x123A JUMP JUMPDEST PUSH2 0x126F JUMP JUMPDEST PUSH2 0x3745 PUSH4 0x7A2D13A SWAP2 PUSH1 0x20 PUSH2 0x3713 PUSH2 0x370E PUSH1 0x1 PUSH2 0x123A JUMP JUMPDEST PUSH2 0x126F JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x373A PUSH2 0x3725 ADDRESS PUSH2 0x1317 JUMP JUMPDEST SWAP3 PUSH2 0x372E PUSH2 0x231 JUMP JUMPDEST SWAP7 DUP8 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x129F JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x985 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x38A8 JUMPI PUSH2 0x3782 SWAP4 PUSH1 0x20 SWAP4 PUSH0 SWAP4 PUSH2 0x3875 JUMPI JUMPDEST POP PUSH2 0x3777 SWAP1 PUSH2 0x376B PUSH2 0x231 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x129F JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x45D JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x3870 JUMPI PUSH2 0x379F SWAP2 PUSH0 SWAP2 PUSH2 0x3842 JUMPI JUMPDEST POP PUSH1 0x5 PUSH2 0x1BA9 JUMP JUMPDEST PUSH2 0x37F0 PUSH1 0x20 PUSH2 0x37BE PUSH2 0x37B9 PUSH2 0x37B4 PUSH1 0x2 PUSH2 0x130A JUMP JUMPDEST PUSH2 0x135C JUMP JUMPDEST PUSH2 0x1368 JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x37E5 PUSH2 0x37D0 ADDRESS PUSH2 0x1317 JUMP JUMPDEST SWAP3 PUSH2 0x37D9 PUSH2 0x231 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x129F JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x985 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x383D JUMPI PUSH2 0x380D SWAP2 PUSH0 SWAP2 PUSH2 0x380F JUMPI JUMPDEST POP PUSH1 0x4 PUSH2 0x1BA9 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x3830 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x3836 JUMPI JUMPDEST PUSH2 0x3828 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1332 JUMP JUMPDEST PUSH0 PUSH2 0x3805 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x381E JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST PUSH2 0x3863 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x3869 JUMPI JUMPDEST PUSH2 0x385B DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1332 JUMP JUMPDEST PUSH0 PUSH2 0x3797 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x3851 JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST PUSH2 0x3777 SWAP2 SWAP4 POP PUSH2 0x389A SWAP1 DUP6 RETURNDATASIZE DUP2 GT PUSH2 0x38A1 JUMPI JUMPDEST PUSH2 0x3892 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1332 JUMP JUMPDEST SWAP3 SWAP1 PUSH2 0x375E JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x3888 JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST PUSH2 0x38C3 PUSH2 0x38BE PUSH2 0x38C9 SWAP4 SWAP3 DUP8 PUSH2 0x13C0 JUMP JUMPDEST PUSH2 0x13E4 JUMP JUMPDEST SWAP1 PUSH2 0x15D3 JUMP JUMPDEST PUSH2 0x36C3 JUMP JUMPDEST PUSH2 0x38EF SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x38F5 JUMPI JUMPDEST PUSH2 0x38E7 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x12C8 JUMP JUMPDEST PUSH0 PUSH2 0x3689 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x38DD JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST PUSH2 0x3922 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x3928 JUMPI JUMPDEST PUSH2 0x391A DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x12C8 JUMP JUMPDEST PUSH0 PUSH2 0x361E JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x3910 JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST PUSH2 0x3954 SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x3959 JUMPI JUMPDEST PUSH2 0x394C DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1332 JUMP JUMPDEST PUSH2 0x35C7 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x3942 JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST PUSH2 0x3985 SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x398A JUMPI JUMPDEST PUSH2 0x397D DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1A73 JUMP JUMPDEST PUSH2 0x3565 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x3973 JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST PUSH2 0x39B6 SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x39BB JUMPI JUMPDEST PUSH2 0x39AE DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1A73 JUMP JUMPDEST PUSH2 0x34F3 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x39A4 JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST PUSH2 0x39E6 SWAP1 DUP4 RETURNDATASIZE DUP2 GT PUSH2 0x39EB JUMPI JUMPDEST PUSH2 0x39DE DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1A73 JUMP JUMPDEST PUSH2 0x3497 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x39D4 JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST PUSH2 0x3A18 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x3A1E JUMPI JUMPDEST PUSH2 0x3A10 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1A32 JUMP JUMPDEST PUSH0 PUSH2 0x341B JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x3A06 JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST PUSH2 0x3A4B SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x3A51 JUMPI JUMPDEST PUSH2 0x3A43 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1A32 JUMP JUMPDEST PUSH0 PUSH2 0x33CB JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x3A39 JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST PUSH2 0x3A7D SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x3A82 JUMPI JUMPDEST PUSH2 0x3A75 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1A73 JUMP JUMPDEST PUSH2 0x337B JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x3A6B JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST SWAP1 PUSH2 0x3A98 SWAP2 PUSH2 0x3206 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x3AA3 SWAP1 PUSH2 0x1263 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x3AB0 SWAP1 PUSH2 0x3A9A JUMP JUMPDEST PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0x3ADB PUSH2 0x3AE0 SWAP2 PUSH2 0x3ACB PUSH2 0x2967 JUMP JUMPDEST POP PUSH0 PUSH2 0x3AD5 PUSH2 0x4FA0 JUMP JUMPDEST ADD PUSH2 0x3AA6 JUMP JUMPDEST PUSH2 0x297F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3AEB PUSH2 0x51C9 JUMP JUMPDEST PUSH2 0x3AF3 PUSH2 0x3B1D JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x3B09 PUSH2 0x3B04 PUSH2 0x3B0E SWAP3 PUSH2 0x1013 JUMP JUMPDEST PUSH2 0x1016 JUMP JUMPDEST PUSH2 0x269 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3B1A SWAP1 PUSH2 0x3AF5 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3B2E PUSH2 0x3B29 PUSH0 PUSH2 0x3B11 JUMP JUMPDEST PUSH2 0x598C JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x3B38 PUSH2 0x3AE3 JUMP JUMPDEST JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x3B46 PUSH2 0x3B3A JUMP JUMPDEST POP PUSH2 0x3B59 PUSH2 0x3B54 PUSH1 0x3 PUSH2 0x1A0A JUMP JUMPDEST PUSH2 0x1A17 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3B64 PUSH2 0x51C9 JUMP JUMPDEST PUSH2 0x3B6C PUSH2 0x3B6E JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x3B76 PUSH2 0x5A62 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x3B80 PUSH2 0x3B5C JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x40 SHR SWAP1 JUMP JUMPDEST PUSH2 0x3B94 PUSH2 0x3B99 SWAP2 PUSH2 0x3B82 JUMP JUMPDEST PUSH2 0x31C1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3BA6 SWAP1 SLOAD PUSH2 0x3B88 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x3BC2 PUSH2 0x3BC7 SWAP2 PUSH2 0x1208 JUMP JUMPDEST PUSH2 0x3BA9 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3BD4 SWAP1 SLOAD PUSH2 0x3BB6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x3BEA PUSH8 0xFFFFFFFFFFFFFFFF SWAP2 PUSH2 0x1B50 JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0x3C08 PUSH2 0x3C03 PUSH2 0x3C0D SWAP3 PUSH2 0xA7E JUMP JUMPDEST PUSH2 0x1016 JUMP JUMPDEST PUSH2 0xA7E JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x3C28 PUSH2 0x3C23 PUSH2 0x3C2F SWAP3 PUSH2 0x3BF4 JUMP JUMPDEST PUSH2 0x3C10 JUMP JUMPDEST DUP3 SLOAD PUSH2 0x3BD7 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 SHL SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x3C4D PUSH9 0xFF0000000000000000 SWAP2 PUSH2 0x3C33 JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0x3C60 SWAP1 PUSH2 0x3F3 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x3C7B PUSH2 0x3C76 PUSH2 0x3C82 SWAP3 PUSH2 0x3C57 JUMP JUMPDEST PUSH2 0x3C63 JUMP JUMPDEST DUP3 SLOAD PUSH2 0x3C39 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x3C8F SWAP1 PUSH2 0xA7E JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x3CA6 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x3C86 JUMP JUMPDEST JUMP JUMPDEST SWAP3 SWAP6 SWAP2 SWAP4 SWAP5 SWAP1 SWAP5 DUP3 SWAP7 PUSH2 0x3CB9 PUSH2 0x5A6C JUMP JUMPDEST SWAP6 PUSH2 0x3CC5 PUSH0 DUP9 ADD PUSH2 0x3B9C JUMP JUMPDEST DUP1 ISZERO PUSH2 0x3D76 JUMPI JUMPDEST PUSH2 0x3D3A JUMPI PUSH2 0x3CFF SWAP8 PUSH2 0x3CF6 SWAP7 PUSH2 0x3CE4 DUP12 PUSH0 DUP12 ADD PUSH2 0x3C13 JUMP JUMPDEST PUSH2 0x3CF1 PUSH1 0x1 PUSH0 DUP12 ADD PUSH2 0x3C66 JUMP JUMPDEST PUSH2 0x4049 JUMP JUMPDEST PUSH0 DUP1 SWAP2 ADD PUSH2 0x3C66 JUMP JUMPDEST PUSH2 0x3D35 PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 SWAP2 PUSH2 0x3D2C PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x3C93 JUMP JUMPDEST SUB SWAP1 LOG1 JUMP JUMPDEST PUSH2 0x3D42 PUSH2 0x231 JUMP JUMPDEST PUSH32 0xF92EE8A900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x3D72 PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST POP PUSH2 0x3D82 PUSH0 DUP9 ADD PUSH2 0x3BCA JUMP JUMPDEST PUSH2 0x3D94 PUSH2 0x3D8E DUP12 PUSH2 0xA7E JUMP JUMPDEST SWAP2 PUSH2 0xA7E JUMP JUMPDEST LT ISZERO PUSH2 0x3CCC JUMP JUMPDEST SWAP1 PUSH2 0x3DBA PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 PUSH2 0x1B50 JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x3DDC PUSH2 0x3DD7 PUSH2 0x3DE3 SWAP3 PUSH2 0x3A9A JUMP JUMPDEST PUSH2 0x3DC4 JUMP JUMPDEST DUP3 SLOAD PUSH2 0x3D9B JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x3DF0 SWAP1 PUSH2 0x1247 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3DFC SWAP1 PUSH2 0x3DE7 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3E08 SWAP1 PUSH2 0x3DE7 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x3E23 PUSH2 0x3E1E PUSH2 0x3E2A SWAP3 PUSH2 0x3DFF JUMP JUMPDEST PUSH2 0x3E0B JUMP JUMPDEST DUP3 SLOAD PUSH2 0x3D9B JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x3E37 SWAP1 PUSH2 0x1247 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3E43 SWAP1 PUSH2 0x3E2E JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3E4F SWAP1 PUSH2 0x3E2E JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x3E6A PUSH2 0x3E65 PUSH2 0x3E71 SWAP3 PUSH2 0x3E46 JUMP JUMPDEST PUSH2 0x3E52 JUMP JUMPDEST DUP3 SLOAD PUSH2 0x3D9B JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH0 PUSH32 0x496E76616C696420617373657441206164647265737300000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x3EA9 PUSH1 0x16 PUSH1 0x20 SWAP3 PUSH2 0x32A JUMP JUMPDEST PUSH2 0x3EB2 DUP2 PUSH2 0x3E75 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x3ECB SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x3E9C JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x3ED5 JUMPI JUMP JUMPDEST PUSH2 0x3EDD PUSH2 0x231 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x3F0D PUSH1 0x4 DUP3 ADD PUSH2 0x3EB6 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH32 0x496E76616C696420596561726E205661756C7420616464726573730000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x3F45 PUSH1 0x1B PUSH1 0x20 SWAP3 PUSH2 0x32A JUMP JUMPDEST PUSH2 0x3F4E DUP2 PUSH2 0x3F11 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x3F67 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x3F38 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x3F71 JUMPI JUMP JUMPDEST PUSH2 0x3F79 PUSH2 0x231 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x3FA9 PUSH1 0x4 DUP3 ADD PUSH2 0x3F52 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH32 0x496E76616C696420617373657442206164647265737300000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x3FE1 PUSH1 0x16 PUSH1 0x20 SWAP3 PUSH2 0x32A JUMP JUMPDEST PUSH2 0x3FEA DUP2 PUSH2 0x3FAD JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x4003 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x3FD4 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x400D JUMPI JUMP JUMPDEST PUSH2 0x4015 PUSH2 0x231 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x4045 PUSH1 0x4 DUP3 ADD PUSH2 0x3FEE JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x40B1 SWAP7 POP PUSH2 0x40A5 SWAP4 PUSH2 0x4092 PUSH2 0x40AA SWAP8 SWAP7 SWAP5 PUSH2 0x4074 PUSH2 0x409E SWAP6 PUSH2 0x4097 SWAP6 PUSH2 0x406F CALLER PUSH2 0x5AAE JUMP JUMPDEST PUSH2 0x5AD9 JUMP JUMPDEST PUSH2 0x407C PUSH2 0x5AEF JUMP JUMPDEST PUSH2 0x4084 PUSH2 0x5B15 JUMP JUMPDEST PUSH2 0x408C PUSH2 0x5B3B JUMP JUMPDEST PUSH0 PUSH2 0x3DC7 JUMP JUMPDEST PUSH2 0x3DF3 JUMP JUMPDEST PUSH1 0x1 PUSH2 0x3E0E JUMP JUMPDEST PUSH1 0x2 PUSH2 0x3DC7 JUMP JUMPDEST PUSH2 0x3E3A JUMP JUMPDEST PUSH1 0x3 PUSH2 0x3E55 JUMP JUMPDEST PUSH2 0x40DE PUSH2 0x40BD PUSH0 PUSH2 0x130A JUMP JUMPDEST PUSH2 0x40D7 PUSH2 0x40D1 PUSH2 0x40CC PUSH0 PUSH2 0x3B11 JUMP JUMPDEST PUSH2 0x282 JUMP JUMPDEST SWAP2 PUSH2 0x282 JUMP JUMPDEST EQ ISZERO PUSH2 0x3ECE JUMP JUMPDEST PUSH2 0x4114 PUSH2 0x40F3 PUSH2 0x40EE PUSH1 0x1 PUSH2 0x123A JUMP JUMPDEST PUSH2 0x126F JUMP JUMPDEST PUSH2 0x410D PUSH2 0x4107 PUSH2 0x4102 PUSH0 PUSH2 0x3B11 JUMP JUMPDEST PUSH2 0x282 JUMP JUMPDEST SWAP2 PUSH2 0x282 JUMP JUMPDEST EQ ISZERO PUSH2 0x3F6A JUMP JUMPDEST PUSH2 0x4142 PUSH2 0x4121 PUSH1 0x2 PUSH2 0x130A JUMP JUMPDEST PUSH2 0x413B PUSH2 0x4135 PUSH2 0x4130 PUSH0 PUSH2 0x3B11 JUMP JUMPDEST PUSH2 0x282 JUMP JUMPDEST SWAP2 PUSH2 0x282 JUMP JUMPDEST EQ ISZERO PUSH2 0x4006 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x4153 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 PUSH2 0x3CA8 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x415D PUSH2 0x3B3A JUMP JUMPDEST POP PUSH2 0x4170 PUSH0 PUSH2 0x416A PUSH2 0x5B45 JUMP JUMPDEST ADD PUSH2 0x130A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x417B PUSH2 0x27ED JUMP JUMPDEST POP PUSH2 0x418F PUSH1 0x4 PUSH2 0x4189 PUSH2 0x4FA0 JUMP JUMPDEST ADD PUSH2 0x2916 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x419A PUSH2 0x3B3A JUMP JUMPDEST POP PUSH2 0x41AD PUSH2 0x41A8 PUSH1 0x1 PUSH2 0x123A JUMP JUMPDEST PUSH2 0x126F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x41B8 PUSH2 0x47BC JUMP JUMPDEST PUSH2 0x41C0 PUSH2 0x41CA JUMP JUMPDEST PUSH2 0x41C8 PUSH2 0x4868 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x41D2 PUSH2 0x4885 JUMP JUMPDEST PUSH2 0x41DA PUSH2 0x41DC JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x41E4 PUSH2 0x5D4C JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x41EE PUSH2 0x41B0 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x420D SWAP2 PUSH2 0x41FC PUSH2 0x2941 JUMP JUMPDEST POP PUSH2 0x4205 PUSH2 0x4FC4 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH2 0x50EC JUMP JUMPDEST PUSH1 0x1 SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x421C SWAP1 PUSH2 0x3A9A JUMP JUMPDEST PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0x4256 SWAP2 PUSH2 0x424C PUSH2 0x4251 SWAP3 PUSH2 0x423B PUSH2 0x2967 JUMP JUMPDEST POP PUSH1 0x1 PUSH2 0x4246 PUSH2 0x4FA0 JUMP JUMPDEST ADD PUSH2 0x4212 JUMP JUMPDEST PUSH2 0x3AA6 JUMP JUMPDEST PUSH2 0x297F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x426D PUSH2 0x4268 PUSH2 0x4272 SWAP3 PUSH2 0x1013 JUMP JUMPDEST PUSH2 0x1016 JUMP JUMPDEST PUSH2 0xA7E JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x428C PUSH2 0x4287 PUSH2 0x4291 SWAP3 PUSH2 0x4275 JUMP JUMPDEST PUSH2 0x1016 JUMP JUMPDEST PUSH2 0xA7E JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x429D SWAP1 PUSH2 0x1263 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x42A9 SWAP1 PUSH2 0x4278 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x42C0 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x42A0 JUMP JUMPDEST JUMP JUMPDEST SWAP3 SWAP5 SWAP2 SWAP5 SWAP4 SWAP1 SWAP4 PUSH2 0x42D1 PUSH2 0x5A6C JUMP JUMPDEST SWAP6 PUSH2 0x42E6 PUSH2 0x42E0 PUSH0 DUP10 ADD PUSH2 0x3B9C JUMP JUMPDEST ISZERO PUSH2 0x3F3 JUMP JUMPDEST SWAP6 PUSH2 0x42F2 PUSH0 DUP10 ADD PUSH2 0x3BCA JUMP JUMPDEST DUP1 PUSH2 0x4305 PUSH2 0x42FF PUSH0 PUSH2 0x4259 JUMP JUMPDEST SWAP2 PUSH2 0xA7E JUMP JUMPDEST EQ DUP1 PUSH2 0x443F JUMPI JUMPDEST SWAP1 PUSH2 0x4320 PUSH2 0x431A PUSH1 0x1 PUSH2 0x4278 JUMP JUMPDEST SWAP2 PUSH2 0xA7E JUMP JUMPDEST EQ DUP1 PUSH2 0x4417 JUMPI JUMPDEST PUSH2 0x4332 SWAP1 SWAP2 ISZERO PUSH2 0x3F3 JUMP JUMPDEST SWAP1 DUP2 PUSH2 0x4406 JUMPI JUMPDEST POP PUSH2 0x43CA JUMPI PUSH2 0x4362 SWAP6 PUSH2 0x4357 PUSH2 0x434F PUSH1 0x1 PUSH2 0x4278 JUMP JUMPDEST PUSH0 DUP12 ADD PUSH2 0x3C13 JUMP JUMPDEST DUP8 PUSH2 0x43B8 JUMPI JUMPDEST PUSH2 0x4446 JUMP JUMPDEST PUSH2 0x436A JUMPI JUMPDEST POP JUMP JUMPDEST PUSH2 0x4377 SWAP1 PUSH0 DUP1 SWAP2 ADD PUSH2 0x3C66 JUMP JUMPDEST PUSH1 0x1 PUSH2 0x43AF PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 SWAP2 PUSH2 0x43A6 PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x42AD JUMP JUMPDEST SUB SWAP1 LOG1 PUSH0 PUSH2 0x4367 JUMP JUMPDEST PUSH2 0x43C5 PUSH1 0x1 PUSH0 DUP12 ADD PUSH2 0x3C66 JUMP JUMPDEST PUSH2 0x435D JUMP JUMPDEST PUSH2 0x43D2 PUSH2 0x231 JUMP JUMPDEST PUSH32 0xF92EE8A900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x4402 PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x4411 SWAP2 POP ISZERO PUSH2 0x3F3 JUMP JUMPDEST PUSH0 PUSH2 0x4339 JUMP JUMPDEST POP PUSH2 0x4332 PUSH2 0x4424 ADDRESS PUSH2 0x4294 JUMP JUMPDEST EXTCODESIZE PUSH2 0x4437 PUSH2 0x4431 PUSH0 PUSH2 0x1019 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST EQ SWAP1 POP PUSH2 0x4327 JUMP JUMPDEST POP DUP8 PUSH2 0x430C JUMP JUMPDEST PUSH2 0x4492 PUSH2 0x44AC SWAP7 SWAP5 PUSH2 0x448D PUSH2 0x44A0 SWAP6 PUSH2 0x446F PUSH2 0x44A5 SWAP10 SWAP7 PUSH2 0x4499 SWAP7 PUSH2 0x446A CALLER PUSH2 0x5AAE JUMP JUMPDEST PUSH2 0x5AD9 JUMP JUMPDEST PUSH2 0x4477 PUSH2 0x5AEF JUMP JUMPDEST PUSH2 0x447F PUSH2 0x5B15 JUMP JUMPDEST PUSH2 0x4487 PUSH2 0x5B3B JUMP JUMPDEST PUSH0 PUSH2 0x3DC7 JUMP JUMPDEST PUSH2 0x3DF3 JUMP JUMPDEST PUSH1 0x1 PUSH2 0x3E0E JUMP JUMPDEST PUSH1 0x2 PUSH2 0x3DC7 JUMP JUMPDEST PUSH2 0x3E3A JUMP JUMPDEST PUSH1 0x3 PUSH2 0x3E55 JUMP JUMPDEST PUSH2 0x44D9 PUSH2 0x44B8 PUSH0 PUSH2 0x130A JUMP JUMPDEST PUSH2 0x44D2 PUSH2 0x44CC PUSH2 0x44C7 PUSH0 PUSH2 0x3B11 JUMP JUMPDEST PUSH2 0x282 JUMP JUMPDEST SWAP2 PUSH2 0x282 JUMP JUMPDEST EQ ISZERO PUSH2 0x3ECE JUMP JUMPDEST PUSH2 0x450F PUSH2 0x44EE PUSH2 0x44E9 PUSH1 0x1 PUSH2 0x123A JUMP JUMPDEST PUSH2 0x126F JUMP JUMPDEST PUSH2 0x4508 PUSH2 0x4502 PUSH2 0x44FD PUSH0 PUSH2 0x3B11 JUMP JUMPDEST PUSH2 0x282 JUMP JUMPDEST SWAP2 PUSH2 0x282 JUMP JUMPDEST EQ ISZERO PUSH2 0x3F6A JUMP JUMPDEST PUSH2 0x453D PUSH2 0x451C PUSH1 0x2 PUSH2 0x130A JUMP JUMPDEST PUSH2 0x4536 PUSH2 0x4530 PUSH2 0x452B PUSH0 PUSH2 0x3B11 JUMP JUMPDEST PUSH2 0x282 JUMP JUMPDEST SWAP2 PUSH2 0x282 JUMP JUMPDEST EQ ISZERO PUSH2 0x4006 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x454D SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 PUSH2 0x42C2 JUMP JUMPDEST JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x4566 PUSH2 0x4561 PUSH2 0x456B SWAP3 PUSH2 0x454F JUMP JUMPDEST PUSH2 0x1016 JUMP JUMPDEST PUSH2 0x243 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x4576 PUSH2 0x2967 JUMP JUMPDEST POP PUSH2 0x457F PUSH2 0x298C JUMP JUMPDEST PUSH2 0x4591 PUSH2 0x458B PUSH0 PUSH2 0x1019 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST EQ PUSH2 0x46F4 JUMPI PUSH2 0x45C3 PUSH1 0x20 PUSH2 0x45AD PUSH2 0x45A8 PUSH1 0x3 PUSH2 0x1A0A JUMP JUMPDEST PUSH2 0x1A17 JUMP JUMPDEST PUSH4 0x1BF01E9B SWAP1 PUSH2 0x45BB PUSH2 0x231 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x129F JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x45D3 PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x46EF JUMPI PUSH2 0x45FD PUSH2 0x45F8 PUSH2 0x4613 SWAP4 PUSH1 0x20 SWAP4 PUSH0 SWAP2 PUSH2 0x46C2 JUMPI JUMPDEST POP PUSH2 0x1287 JUMP JUMPDEST PUSH2 0x1293 JUMP JUMPDEST PUSH4 0x313CE567 SWAP1 PUSH2 0x460B PUSH2 0x231 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x129F JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x4623 PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x46BD JUMPI PUSH2 0x4667 PUSH2 0x465A PUSH2 0x4655 PUSH2 0x467E SWAP4 PUSH2 0x468C SWAP6 PUSH0 SWAP2 PUSH2 0x468F JUMPI JUMPDEST POP PUSH2 0x4650 PUSH1 0x12 PUSH2 0x1377 JUMP JUMPDEST PUSH2 0x13C0 JUMP JUMPDEST PUSH2 0x13E4 JUMP JUMPDEST PUSH2 0x4662 PUSH2 0x2A55 JUMP JUMPDEST PUSH2 0x15D3 JUMP JUMPDEST PUSH2 0x4678 PUSH8 0xDE0B6B3A7640000 PUSH2 0x4552 JUMP JUMPDEST SWAP1 PUSH2 0x15D3 JUMP JUMPDEST PUSH2 0x4686 PUSH2 0x298C JUMP JUMPDEST SWAP1 PUSH2 0x142D JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x46B0 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x46B6 JUMPI JUMPDEST PUSH2 0x46A8 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x12C8 JUMP JUMPDEST PUSH0 PUSH2 0x4645 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x469E JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST PUSH2 0x46E2 SWAP2 POP DUP5 RETURNDATASIZE DUP2 GT PUSH2 0x46E8 JUMPI JUMPDEST PUSH2 0x46DA DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1A32 JUMP JUMPDEST PUSH0 PUSH2 0x45F2 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x46D0 JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST PUSH2 0x46FD PUSH0 PUSH2 0x1019 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x4711 SWAP1 PUSH2 0x470C PUSH2 0x51C9 JUMP JUMPDEST PUSH2 0x4713 JUMP JUMPDEST JUMP JUMPDEST DUP1 PUSH2 0x472E PUSH2 0x4728 PUSH2 0x4723 PUSH0 PUSH2 0x3B11 JUMP JUMPDEST PUSH2 0x282 JUMP JUMPDEST SWAP2 PUSH2 0x282 JUMP JUMPDEST EQ PUSH2 0x473E JUMPI PUSH2 0x473C SWAP1 PUSH2 0x598C JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x4781 PUSH2 0x474A PUSH0 PUSH2 0x3B11 JUMP JUMPDEST PUSH2 0x4752 PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x1E4FBDF700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x985 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x478E SWAP1 PUSH2 0x4700 JUMP JUMPDEST JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x47A7 PUSH2 0x47A2 PUSH2 0x47AC SWAP3 PUSH2 0x4790 JUMP JUMPDEST PUSH2 0x1016 JUMP JUMPDEST PUSH2 0x243 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x47B9 PUSH1 0x2 PUSH2 0x4793 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x47C4 PUSH2 0x6208 JUMP JUMPDEST PUSH2 0x47CF PUSH0 DUP3 ADD PUSH2 0x297F JUMP JUMPDEST PUSH2 0x47E8 PUSH2 0x47E2 PUSH2 0x47DD PUSH2 0x47AF JUMP JUMPDEST PUSH2 0x243 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST EQ PUSH2 0x4803 JUMPI PUSH2 0x4801 SWAP1 PUSH0 PUSH2 0x47FA PUSH2 0x47AF JUMP JUMPDEST SWAP2 ADD PUSH2 0x1BA9 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x480B PUSH2 0x231 JUMP JUMPDEST PUSH32 0x3EE5AEB500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x483B PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x4853 PUSH2 0x484E PUSH2 0x4858 SWAP3 PUSH2 0x4275 JUMP JUMPDEST PUSH2 0x1016 JUMP JUMPDEST PUSH2 0x243 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x4865 PUSH1 0x1 PUSH2 0x483F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x4883 PUSH2 0x4873 PUSH2 0x6208 JUMP JUMPDEST PUSH0 PUSH2 0x487C PUSH2 0x485B JUMP JUMPDEST SWAP2 ADD PUSH2 0x1BA9 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x488D PUSH2 0x31E8 JUMP JUMPDEST PUSH2 0x4893 JUMPI JUMP JUMPDEST PUSH2 0x489B PUSH2 0x231 JUMP JUMPDEST PUSH32 0xD93C066500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x48CB PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP1 DUP2 PUSH2 0x48EB PUSH2 0x48E5 PUSH2 0x48E0 PUSH0 PUSH2 0x3B11 JUMP JUMPDEST PUSH2 0x282 JUMP JUMPDEST SWAP2 PUSH2 0x282 JUMP JUMPDEST EQ PUSH2 0x4907 JUMPI PUSH2 0x4905 SWAP2 SWAP1 PUSH2 0x48FE PUSH0 PUSH2 0x3B11 JUMP JUMPDEST SWAP1 SWAP2 PUSH2 0x623A JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x494A PUSH2 0x4913 PUSH0 PUSH2 0x3B11 JUMP JUMPDEST PUSH2 0x491B PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x96C6FD1E00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x985 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x4956 PUSH2 0x2967 JUMP JUMPDEST POP PUSH2 0x4984 PUSH1 0x20 PUSH2 0x496E PUSH2 0x4969 PUSH1 0x3 PUSH2 0x1A0A JUMP JUMPDEST PUSH2 0x1A17 JUMP JUMPDEST PUSH4 0x85462D6F SWAP1 PUSH2 0x497C PUSH2 0x231 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x129F JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x4994 PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x4A6F JUMPI PUSH0 SWAP2 PUSH2 0x4A41 JUMPI JUMPDEST POP SWAP1 PUSH2 0x49D5 PUSH1 0x20 PUSH2 0x49BF PUSH2 0x49BA PUSH1 0x3 PUSH2 0x1A0A JUMP JUMPDEST PUSH2 0x1A17 JUMP JUMPDEST PUSH4 0x4F4608A2 SWAP1 PUSH2 0x49CD PUSH2 0x231 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x129F JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x49E5 PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP3 DUP4 ISZERO PUSH2 0x4A3C JUMPI PUSH2 0x4A0B SWAP4 PUSH2 0x4A06 SWAP3 PUSH0 SWAP2 PUSH2 0x4A0E JUMPI JUMPDEST POP SWAP3 PUSH2 0x15D3 JUMP JUMPDEST PUSH2 0x142D JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x4A2F SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x4A35 JUMPI JUMPDEST PUSH2 0x4A27 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1332 JUMP JUMPDEST PUSH0 PUSH2 0x49FF JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x4A1D JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST PUSH2 0x4A62 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x4A68 JUMPI JUMPDEST PUSH2 0x4A5A DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1332 JUMP JUMPDEST PUSH0 PUSH2 0x49A6 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x4A50 JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST PUSH0 PUSH32 0x496E73756666696369656E742071756F74652061737365742062616C616E6365 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x4AA7 PUSH1 0x20 DUP1 SWAP3 PUSH2 0x32A JUMP JUMPDEST PUSH2 0x4AB0 DUP2 PUSH2 0x4A74 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x4AC9 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x4A9B JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x4AD3 JUMPI JUMP JUMPDEST PUSH2 0x4ADB PUSH2 0x231 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x4B0B PUSH1 0x4 DUP3 ADD PUSH2 0x4AB4 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH1 0x20 PUSH32 0x7400000000000000000000000000000000000000000000000000000000000000 SWAP2 PUSH32 0x486169726375742065786365656473207769746864726177616C20616D6F756E PUSH0 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST PUSH2 0x4B69 PUSH1 0x21 PUSH1 0x40 SWAP3 PUSH2 0x32A JUMP JUMPDEST PUSH2 0x4B72 DUP2 PUSH2 0x4B0F JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x4B8B SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x4B5C JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x4B95 JUMPI JUMP JUMPDEST PUSH2 0x4B9D PUSH2 0x231 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x4BCD PUSH1 0x4 DUP3 ADD PUSH2 0x4B76 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x4BD9 PUSH2 0x2941 JUMP JUMPDEST POP PUSH2 0x4C2C DUP2 PUSH1 0x20 PUSH2 0x4BFA PUSH2 0x4BF5 PUSH2 0x4BF0 PUSH1 0x2 PUSH2 0x130A JUMP JUMPDEST PUSH2 0x135C JUMP JUMPDEST PUSH2 0x1368 JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x4C21 PUSH2 0x4C0C ADDRESS PUSH2 0x1317 JUMP JUMPDEST SWAP3 PUSH2 0x4C15 PUSH2 0x231 JUMP JUMPDEST SWAP7 DUP8 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x129F JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x985 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x4F9B JUMPI PUSH2 0x4C4E PUSH2 0x4C54 SWAP2 PUSH2 0x4C5B SWAP5 PUSH0 SWAP2 PUSH2 0x4F6D JUMPI JUMPDEST POP PUSH2 0x243 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST GT ISZERO PUSH2 0x4ACC JUMP JUMPDEST PUSH2 0x4C8C PUSH2 0x4C67 DUP3 PUSH2 0x494E JUMP JUMPDEST SWAP2 PUSH2 0x4C85 DUP4 PUSH2 0x4C7E PUSH2 0x4C78 DUP5 PUSH2 0x243 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST GT ISZERO PUSH2 0x4B8E JUMP JUMPDEST DUP3 SWAP1 PUSH2 0x185A JUMP JUMPDEST SWAP2 PUSH2 0x4C96 DUP3 PUSH2 0x494E JUMP JUMPDEST SWAP1 PUSH2 0x4CB4 DUP3 PUSH2 0x4CAD PUSH2 0x4CA7 DUP7 PUSH2 0x243 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST GT ISZERO PUSH2 0x199A JUMP JUMPDEST PUSH2 0x4CE1 PUSH1 0x20 PUSH2 0x4CCB PUSH2 0x4CC6 PUSH1 0x3 PUSH2 0x1A0A JUMP JUMPDEST PUSH2 0x1A17 JUMP JUMPDEST PUSH4 0x4CC7325 SWAP1 PUSH2 0x4CD9 PUSH2 0x231 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x129F JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x4CF1 PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x4F68 JUMPI PUSH0 SWAP2 PUSH2 0x4F3A JUMPI JUMPDEST POP SWAP3 PUSH2 0x4D32 PUSH1 0x20 PUSH2 0x4D1C PUSH2 0x4D17 PUSH1 0x3 PUSH2 0x1A0A JUMP JUMPDEST PUSH2 0x1A17 JUMP JUMPDEST PUSH4 0x3B19E84A SWAP1 PUSH2 0x4D2A PUSH2 0x231 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x129F JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x4D42 PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x4F35 JUMPI PUSH1 0x20 SWAP2 PUSH0 SWAP2 PUSH2 0x4F08 JUMPI JUMPDEST POP SWAP6 PUSH2 0x4D72 PUSH2 0x4D6D PUSH2 0x4D68 PUSH1 0x2 PUSH2 0x130A JUMP JUMPDEST PUSH2 0x135C JUMP JUMPDEST PUSH2 0x1368 JUMP JUMPDEST PUSH2 0x4D95 PUSH0 PUSH4 0xA9059CBB SWAP7 SWAP4 SWAP7 PUSH2 0x4DA0 PUSH2 0x4D89 PUSH2 0x231 JUMP JUMPDEST SWAP9 DUP10 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x129F JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x1A91 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x4F03 JUMPI PUSH1 0x20 SWAP3 PUSH2 0x4ED8 JUMPI JUMPDEST POP PUSH2 0x4DCE PUSH2 0x4DC9 PUSH2 0x4DC4 PUSH1 0x2 PUSH2 0x130A JUMP JUMPDEST PUSH2 0x135C JUMP JUMPDEST PUSH2 0x1368 JUMP JUMPDEST PUSH2 0x4DFB PUSH0 PUSH2 0x4DE3 PUSH4 0xA9059CBB SWAP8 SWAP5 DUP8 SWAP1 PUSH2 0x185A JUMP JUMPDEST SWAP7 PUSH2 0x4E06 PUSH2 0x4DEF PUSH2 0x231 JUMP JUMPDEST SWAP9 DUP10 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x129F JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x1A91 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x4ED3 JUMPI PUSH1 0x20 SWAP3 PUSH2 0x4EA8 JUMPI JUMPDEST POP PUSH2 0x4E34 PUSH2 0x4E2F PUSH2 0x4E2A PUSH1 0x2 PUSH2 0x130A JUMP JUMPDEST PUSH2 0x135C JUMP JUMPDEST PUSH2 0x1368 JUMP JUMPDEST PUSH2 0x4E57 PUSH0 PUSH4 0xA9059CBB SWAP6 SWAP4 SWAP6 PUSH2 0x4E62 PUSH2 0x4E4B PUSH2 0x231 JUMP JUMPDEST SWAP8 DUP9 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x129F JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x1A91 JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x4EA3 JUMPI PUSH2 0x4E77 JUMPI JUMPDEST POP PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH2 0x4E97 SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x4E9C JUMPI JUMPDEST PUSH2 0x4E8F DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1A73 JUMP JUMPDEST PUSH2 0x4E71 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x4E85 JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST PUSH2 0x4EC7 SWAP1 DUP4 RETURNDATASIZE DUP2 GT PUSH2 0x4ECC JUMPI JUMPDEST PUSH2 0x4EBF DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1A73 JUMP JUMPDEST PUSH2 0x4E19 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x4EB5 JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST PUSH2 0x4EF7 SWAP1 DUP4 RETURNDATASIZE DUP2 GT PUSH2 0x4EFC JUMPI JUMPDEST PUSH2 0x4EEF DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1A73 JUMP JUMPDEST PUSH2 0x4DB3 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x4EE5 JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST PUSH2 0x4F28 SWAP2 POP DUP3 RETURNDATASIZE DUP2 GT PUSH2 0x4F2E JUMPI JUMPDEST PUSH2 0x4F20 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1A32 JUMP JUMPDEST PUSH0 PUSH2 0x4D56 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x4F16 JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST PUSH2 0x4F5B SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x4F61 JUMPI JUMPDEST PUSH2 0x4F53 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1A32 JUMP JUMPDEST PUSH0 PUSH2 0x4D03 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x4F49 JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST PUSH2 0x4F8E SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x4F94 JUMPI JUMPDEST PUSH2 0x4F86 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1332 JUMP JUMPDEST PUSH0 PUSH2 0x4C48 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x4F7C JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE00 SWAP1 JUMP JUMPDEST PUSH2 0x4FCC PUSH2 0x3B3A JUMP JUMPDEST POP CALLER SWAP1 JUMP JUMPDEST SWAP2 PUSH2 0x4FDF SWAP3 SWAP2 PUSH1 0x1 SWAP3 PUSH2 0x63E0 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x40 SWAP1 PUSH2 0x500A PUSH2 0x5011 SWAP5 SWAP7 SWAP6 SWAP4 SWAP7 PUSH2 0x5000 PUSH1 0x60 DUP5 ADD SWAP9 PUSH0 DUP6 ADD SWAP1 PUSH2 0x978 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x450 JUMP JUMPDEST ADD SWAP1 PUSH2 0x450 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x501E SWAP2 SUB PUSH2 0x243 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP3 SWAP2 SWAP3 PUSH2 0x502F DUP2 DUP4 SWAP1 PUSH2 0x4228 JUMP JUMPDEST SWAP1 DUP2 PUSH2 0x5063 PUSH2 0x505D PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x243 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST SUB PUSH2 0x5070 JUMPI JUMPDEST POP POP POP SWAP1 POP JUMP JUMPDEST DUP2 PUSH2 0x5083 PUSH2 0x507D DUP8 PUSH2 0x243 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST LT PUSH2 0x50A9 JUMPI PUSH2 0x50A0 SWAP4 SWAP5 PUSH2 0x5098 SWAP2 SWAP4 SWAP3 PUSH2 0x5013 JUMP JUMPDEST SWAP1 PUSH0 SWAP3 PUSH2 0x63E0 JUMP JUMPDEST DUP1 PUSH0 DUP1 DUP1 PUSH2 0x5069 JUMP JUMPDEST POP PUSH2 0x50E8 DUP5 SWAP3 SWAP2 SWAP3 PUSH2 0x50B9 PUSH2 0x231 JUMP JUMPDEST SWAP4 DUP5 SWAP4 PUSH32 0xFB8F41B200000000000000000000000000000000000000000000000000000000 DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0x4FE1 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP2 DUP3 PUSH2 0x5108 PUSH2 0x5102 PUSH2 0x50FD PUSH0 PUSH2 0x3B11 JUMP JUMPDEST PUSH2 0x282 JUMP JUMPDEST SWAP2 PUSH2 0x282 JUMP JUMPDEST EQ PUSH2 0x5182 JUMPI DUP2 PUSH2 0x5128 PUSH2 0x5122 PUSH2 0x511D PUSH0 PUSH2 0x3B11 JUMP JUMPDEST PUSH2 0x282 JUMP JUMPDEST SWAP2 PUSH2 0x282 JUMP JUMPDEST EQ PUSH2 0x513B JUMPI PUSH2 0x5139 SWAP3 SWAP2 SWAP1 SWAP2 PUSH2 0x623A JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x517E PUSH2 0x5147 PUSH0 PUSH2 0x3B11 JUMP JUMPDEST PUSH2 0x514F PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0xEC442F0500000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x985 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x51C5 PUSH2 0x518E PUSH0 PUSH2 0x3B11 JUMP JUMPDEST PUSH2 0x5196 PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x96C6FD1E00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x985 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x51D1 PUSH2 0x4155 JUMP JUMPDEST PUSH2 0x51EA PUSH2 0x51E4 PUSH2 0x51DF PUSH2 0x4FC4 JUMP JUMPDEST PUSH2 0x282 JUMP JUMPDEST SWAP2 PUSH2 0x282 JUMP JUMPDEST SUB PUSH2 0x51F1 JUMPI JUMP JUMPDEST PUSH2 0x5233 PUSH2 0x51FC PUSH2 0x4FC4 JUMP JUMPDEST PUSH2 0x5204 PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x118CDAA700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x985 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x523F PUSH2 0x653A JUMP JUMPDEST PUSH2 0x5247 PUSH2 0x527F JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x5255 PUSH1 0xFF SWAP2 PUSH2 0x1B50 JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x5274 PUSH2 0x526F PUSH2 0x527B SWAP3 PUSH2 0x3C57 JUMP JUMPDEST PUSH2 0x3C63 JUMP JUMPDEST DUP3 SLOAD PUSH2 0x5249 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x5293 PUSH2 0x528A PUSH2 0x55EA JUMP JUMPDEST PUSH0 DUP1 SWAP2 ADD PUSH2 0x525F JUMP JUMPDEST PUSH2 0x529B PUSH2 0x4FC4 JUMP JUMPDEST PUSH2 0x52D1 PUSH32 0x5DB9EE0A495BF2E6FF9C91A7834C1BA4FDD244A5E8AA4E537BD38AEAE4B073AA SWAP2 PUSH2 0x52C8 PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x985 JUMP JUMPDEST SUB SWAP1 LOG1 JUMP JUMPDEST PUSH2 0x52DE PUSH2 0x5237 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x52E9 SWAP1 PUSH2 0x1263 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x52F5 ADDRESS PUSH2 0x52E0 JUMP JUMPDEST PUSH2 0x5327 PUSH2 0x5321 PUSH32 0x0 PUSH2 0x282 JUMP JUMPDEST SWAP2 PUSH2 0x282 JUMP JUMPDEST EQ DUP1 ISZERO PUSH2 0x5371 JUMPI JUMPDEST PUSH2 0x5335 JUMPI JUMP JUMPDEST PUSH2 0x533D PUSH2 0x231 JUMP JUMPDEST PUSH32 0xE07C8DBA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x536D PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST POP PUSH2 0x537A PUSH2 0x658D JUMP JUMPDEST PUSH2 0x53AC PUSH2 0x53A6 PUSH32 0x0 PUSH2 0x282 JUMP JUMPDEST SWAP2 PUSH2 0x282 JUMP JUMPDEST EQ ISZERO PUSH2 0x532F JUMP JUMPDEST POP PUSH2 0x53BC PUSH2 0x51C9 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x53C7 SWAP1 PUSH2 0x53B3 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x53D2 SWAP1 PUSH2 0x1247 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x53DE SWAP1 PUSH2 0x53C9 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x53EA SWAP1 PUSH2 0x1263 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x53F6 DUP2 PUSH2 0x7EB JUMP JUMPDEST SUB PUSH2 0x53FD JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0x540E DUP3 PUSH2 0x53ED JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x5429 JUMPI PUSH2 0x5426 SWAP2 PUSH0 ADD PUSH2 0x5401 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x23B JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x545C PUSH1 0x20 PUSH2 0x5446 PUSH2 0x5441 DUP7 PUSH2 0x53D5 JUMP JUMPDEST PUSH2 0x53E1 JUMP JUMPDEST PUSH4 0x52D1902D SWAP1 PUSH2 0x5454 PUSH2 0x231 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x129F JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x546C PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 SWAP2 PUSH0 SWAP3 PUSH2 0x553C JUMPI JUMPDEST POP ISZERO PUSH0 EQ PUSH2 0x54CD JUMPI POP POP SWAP1 PUSH1 0x1 PUSH2 0x548E JUMPI POP JUMPDEST JUMP JUMPDEST PUSH2 0x54C9 SWAP1 PUSH2 0x549A PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x4C9C8CE300000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x985 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP3 DUP4 PUSH2 0x54E8 PUSH2 0x54E2 PUSH2 0x54DD PUSH2 0x3176 JUMP JUMPDEST PUSH2 0x7EB JUMP JUMPDEST SWAP2 PUSH2 0x7EB JUMP JUMPDEST SUB PUSH2 0x54FD JUMPI PUSH2 0x54F8 SWAP3 SWAP4 POP PUSH2 0x65B7 JUMP JUMPDEST PUSH2 0x548C JUMP JUMPDEST PUSH2 0x5538 DUP5 PUSH2 0x5509 PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0xAA1D49A400000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x7FB JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x555E SWAP2 SWAP3 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x5565 JUMPI JUMPDEST PUSH2 0x5556 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x5410 JUMP JUMPDEST SWAP1 PUSH0 PUSH2 0x5479 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x554C JUMP JUMPDEST PUSH2 0x5575 ADDRESS PUSH2 0x52E0 JUMP JUMPDEST PUSH2 0x55A7 PUSH2 0x55A1 PUSH32 0x0 PUSH2 0x282 JUMP JUMPDEST SWAP2 PUSH2 0x282 JUMP JUMPDEST SUB PUSH2 0x55AE JUMPI JUMP JUMPDEST PUSH2 0x55B6 PUSH2 0x231 JUMP JUMPDEST PUSH32 0xE07C8DBA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x55E6 PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH32 0xCD5ED15C6E187E77E9AEE88184C21F4F2182AB5827CB3B7E07FBEDCD63F03300 SWAP1 JUMP JUMPDEST PUSH2 0x5622 PUSH2 0x561D PUSH2 0x5627 SWAP3 PUSH2 0x4790 JUMP JUMPDEST PUSH2 0x1016 JUMP JUMPDEST PUSH2 0x54C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x563C PUSH2 0x5637 PUSH1 0x1 PUSH2 0x123A JUMP JUMPDEST PUSH2 0x126F JUMP JUMPDEST PUSH2 0x568B PUSH4 0x7A2D13A SWAP2 PUSH1 0x20 PUSH2 0x5659 PUSH2 0x5654 PUSH1 0x1 PUSH2 0x123A JUMP JUMPDEST PUSH2 0x126F JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x5680 PUSH2 0x566B ADDRESS PUSH2 0x1317 JUMP JUMPDEST SWAP3 PUSH2 0x5674 PUSH2 0x231 JUMP JUMPDEST SWAP7 DUP8 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x129F JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x985 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x5909 JUMPI PUSH2 0x56C8 SWAP4 PUSH1 0x20 SWAP4 PUSH0 SWAP4 PUSH2 0x58D6 JUMPI JUMPDEST POP PUSH2 0x56BD SWAP1 PUSH2 0x56B1 PUSH2 0x231 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x129F JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x45D JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x58D1 JUMPI PUSH0 SWAP2 PUSH2 0x58A3 JUMPI JUMPDEST POP DUP1 PUSH2 0x56F7 PUSH2 0x56F1 PUSH2 0x56EC PUSH1 0x5 PUSH2 0x297F JUMP JUMPDEST PUSH2 0x243 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST GT PUSH0 EQ PUSH2 0x5894 JUMPI PUSH2 0x5712 SWAP1 PUSH2 0x570C PUSH1 0x5 PUSH2 0x297F JUMP JUMPDEST SWAP1 PUSH2 0x185A JUMP JUMPDEST JUMPDEST PUSH2 0x5747 PUSH1 0x20 PUSH2 0x5731 PUSH2 0x572C PUSH2 0x5727 PUSH0 PUSH2 0x130A JUMP JUMPDEST PUSH2 0x1287 JUMP JUMPDEST PUSH2 0x1293 JUMP JUMPDEST PUSH4 0x313CE567 SWAP1 PUSH2 0x573F PUSH2 0x231 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x129F JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x5757 PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x588F JUMPI PUSH2 0x57A0 PUSH2 0x57A5 SWAP2 PUSH2 0x57AB SWAP4 PUSH0 SWAP2 PUSH2 0x5861 JUMPI JUMPDEST POP PUSH2 0x579B PUSH2 0x5795 PUSH2 0x5790 PUSH1 0x1 SWAP4 PUSH2 0x578A PUSH1 0x2 PUSH2 0x560E JUMP JUMPDEST SWAP1 PUSH2 0x13C0 JUMP JUMPDEST PUSH2 0x13E4 JUMP JUMPDEST SWAP2 PUSH2 0x483F JUMP JUMPDEST PUSH2 0x15D3 JUMP JUMPDEST PUSH2 0x243 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST GT PUSH2 0x5854 JUMPI JUMPDEST PUSH2 0x5802 PUSH1 0x20 PUSH2 0x57D0 PUSH2 0x57CB PUSH2 0x57C6 PUSH1 0x2 PUSH2 0x130A JUMP JUMPDEST PUSH2 0x135C JUMP JUMPDEST PUSH2 0x1368 JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x57F7 PUSH2 0x57E2 ADDRESS PUSH2 0x1317 JUMP JUMPDEST SWAP3 PUSH2 0x57EB PUSH2 0x231 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x129F JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x985 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x584F JUMPI PUSH2 0x581F SWAP2 PUSH0 SWAP2 PUSH2 0x5821 JUMPI JUMPDEST POP PUSH1 0x4 PUSH2 0x1BA9 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x5842 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x5848 JUMPI JUMPDEST PUSH2 0x583A DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1332 JUMP JUMPDEST PUSH0 PUSH2 0x5817 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x5830 JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST PUSH2 0x585C PUSH2 0x5D4C JUMP JUMPDEST PUSH2 0x57B1 JUMP JUMPDEST PUSH2 0x5882 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x5888 JUMPI JUMPDEST PUSH2 0x587A DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x12C8 JUMP JUMPDEST PUSH0 PUSH2 0x5773 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x5870 JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST POP PUSH2 0x589E PUSH0 PUSH2 0x1019 JUMP JUMPDEST PUSH2 0x5713 JUMP JUMPDEST PUSH2 0x58C4 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x58CA JUMPI JUMPDEST PUSH2 0x58BC DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1332 JUMP JUMPDEST PUSH0 PUSH2 0x56DA JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x58B2 JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST PUSH2 0x56BD SWAP2 SWAP4 POP PUSH2 0x58FB SWAP1 DUP6 RETURNDATASIZE DUP2 GT PUSH2 0x5902 JUMPI JUMPDEST PUSH2 0x58F3 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1332 JUMP JUMPDEST SWAP3 SWAP1 PUSH2 0x56A4 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x58E9 JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST DUP1 PUSH2 0x5929 PUSH2 0x5923 PUSH2 0x591E PUSH0 PUSH2 0x3B11 JUMP JUMPDEST PUSH2 0x282 JUMP JUMPDEST SWAP2 PUSH2 0x282 JUMP JUMPDEST EQ PUSH2 0x5945 JUMPI PUSH2 0x5943 SWAP2 PUSH2 0x593B PUSH0 PUSH2 0x3B11 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH2 0x623A JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x5988 PUSH2 0x5951 PUSH0 PUSH2 0x3B11 JUMP JUMPDEST PUSH2 0x5959 PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0xEC442F0500000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x985 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x5994 PUSH2 0x5B45 JUMP JUMPDEST PUSH2 0x59AC PUSH2 0x59A2 PUSH0 DUP4 ADD PUSH2 0x130A JUMP JUMPDEST SWAP2 PUSH0 DUP5 SWAP2 ADD PUSH2 0x3DC7 JUMP JUMPDEST SWAP1 PUSH2 0x59E0 PUSH2 0x59DA PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP4 PUSH2 0x3A9A JUMP JUMPDEST SWAP2 PUSH2 0x3A9A JUMP JUMPDEST SWAP2 PUSH2 0x59E9 PUSH2 0x231 JUMP JUMPDEST DUP1 PUSH2 0x59F3 DUP2 PUSH2 0x2DE JUMP JUMPDEST SUB SWAP1 LOG3 JUMP JUMPDEST PUSH2 0x5A00 PUSH2 0x4885 JUMP JUMPDEST PUSH2 0x5A08 PUSH2 0x5A0A JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x5A1F PUSH2 0x5A15 PUSH2 0x55EA JUMP JUMPDEST PUSH0 PUSH1 0x1 SWAP2 ADD PUSH2 0x525F JUMP JUMPDEST PUSH2 0x5A27 PUSH2 0x4FC4 JUMP JUMPDEST PUSH2 0x5A5D PUSH32 0x62E78CEA01BEE320CD4E420270B5EA74000D11B0C9F74754EBDBFC544B05A258 SWAP2 PUSH2 0x5A54 PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x985 JUMP JUMPDEST SUB SWAP1 LOG1 JUMP JUMPDEST PUSH2 0x5A6A PUSH2 0x59F8 JUMP JUMPDEST JUMP JUMPDEST PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 SWAP1 JUMP JUMPDEST PUSH2 0x5AA1 SWAP1 PUSH2 0x5A9C PUSH2 0x6640 JUMP JUMPDEST PUSH2 0x5AA3 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x5AAC SWAP1 PUSH2 0x6718 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x5AB7 SWAP1 PUSH2 0x5A90 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x5ACB SWAP2 PUSH2 0x5AC6 PUSH2 0x6640 JUMP JUMPDEST PUSH2 0x5ACD JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x5AD7 SWAP2 PUSH2 0x695B JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x5AE3 SWAP2 PUSH2 0x5AB9 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x5AED PUSH2 0x6640 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x5AF7 PUSH2 0x5AE5 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x5B01 PUSH2 0x6640 JUMP JUMPDEST PUSH2 0x5B09 PUSH2 0x5B0B JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x5B13 PUSH2 0x6996 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x5B1D PUSH2 0x5AF9 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x5B27 PUSH2 0x6640 JUMP JUMPDEST PUSH2 0x5B2F PUSH2 0x5B31 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x5B39 PUSH2 0x69C8 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x5B43 PUSH2 0x5B1F JUMP JUMPDEST JUMP JUMPDEST PUSH32 0x9016D09D72D40FDAE2FD8CEAC6B6234C7706214FD39C1CD1E609A0528C199300 SWAP1 JUMP JUMPDEST PUSH1 0x20 PUSH32 0x6C61626C65000000000000000000000000000000000000000000000000000000 SWAP2 PUSH32 0x42616C756E695631795661756C743A204E6F20696E7465726573742061766169 PUSH0 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST PUSH2 0x5BC3 PUSH1 0x25 PUSH1 0x40 SWAP3 PUSH2 0x32A JUMP JUMPDEST PUSH2 0x5BCC DUP2 PUSH2 0x5B69 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x5BE5 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x5BB6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x5BEF JUMPI JUMP JUMPDEST PUSH2 0x5BF7 PUSH2 0x231 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x5C27 PUSH1 0x4 DUP3 ADD PUSH2 0x5BD0 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH32 0x42616C756E695631795661756C743A2052656465656D204661696C6564000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x5C5F PUSH1 0x1D PUSH1 0x20 SWAP3 PUSH2 0x32A JUMP JUMPDEST PUSH2 0x5C68 DUP2 PUSH2 0x5C2B JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x5C81 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x5C52 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x5C8B JUMPI JUMP JUMPDEST PUSH2 0x5C93 PUSH2 0x231 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x5CC3 PUSH1 0x4 DUP3 ADD PUSH2 0x5C6C JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x5CD0 SWAP1 PUSH2 0x1247 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x5CDC SWAP1 PUSH2 0x5CC7 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x5CE8 SWAP1 PUSH2 0x1263 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x5D20 PUSH2 0x5D27 SWAP5 PUSH2 0x5D16 PUSH1 0x60 SWAP5 SWAP9 SWAP8 SWAP6 PUSH2 0x5D0C PUSH1 0x80 DUP7 ADD SWAP11 PUSH0 DUP8 ADD SWAP1 PUSH2 0x978 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD SWAP1 PUSH2 0x978 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD SWAP1 PUSH2 0x450 JUMP JUMPDEST ADD SWAP1 PUSH2 0x978 JUMP JUMPDEST JUMP JUMPDEST SWAP2 PUSH1 0x20 PUSH2 0x5D4A SWAP3 SWAP5 SWAP4 PUSH2 0x5D43 PUSH1 0x40 DUP3 ADD SWAP7 PUSH0 DUP4 ADD SWAP1 PUSH2 0x450 JUMP JUMPDEST ADD SWAP1 PUSH2 0x450 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x5D5E PUSH2 0x5D59 PUSH1 0x1 PUSH2 0x123A JUMP JUMPDEST PUSH2 0x126F JUMP JUMPDEST PUSH2 0x5DAD PUSH4 0x7A2D13A SWAP2 PUSH1 0x20 PUSH2 0x5D7B PUSH2 0x5D76 PUSH1 0x1 PUSH2 0x123A JUMP JUMPDEST PUSH2 0x126F JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x5DA2 PUSH2 0x5D8D ADDRESS PUSH2 0x1317 JUMP JUMPDEST SWAP3 PUSH2 0x5D96 PUSH2 0x231 JUMP JUMPDEST SWAP7 DUP8 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x129F JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x985 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x6203 JUMPI PUSH2 0x5DEA SWAP4 PUSH1 0x20 SWAP4 PUSH0 SWAP4 PUSH2 0x61D0 JUMPI JUMPDEST POP PUSH2 0x5DDF SWAP1 PUSH2 0x5DD3 PUSH2 0x231 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x129F JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x45D JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x61CB JUMPI PUSH0 SWAP2 PUSH2 0x619D JUMPI JUMPDEST POP DUP1 PUSH2 0x5E19 PUSH2 0x5E13 PUSH2 0x5E0E PUSH1 0x5 PUSH2 0x297F JUMP JUMPDEST PUSH2 0x243 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST GT PUSH0 EQ PUSH2 0x618E JUMPI PUSH2 0x5E34 SWAP1 PUSH2 0x5E2E PUSH1 0x5 PUSH2 0x297F JUMP JUMPDEST SWAP1 PUSH2 0x185A JUMP JUMPDEST JUMPDEST PUSH2 0x5E51 DUP2 PUSH2 0x5E4B PUSH2 0x5E45 PUSH0 PUSH2 0x1019 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST GT PUSH2 0x5BE8 JUMP JUMPDEST PUSH2 0x5E92 PUSH1 0x20 PUSH2 0x5E68 PUSH2 0x5E63 PUSH1 0x1 PUSH2 0x123A JUMP JUMPDEST PUSH2 0x126F JUMP JUMPDEST PUSH4 0xC6E6F592 SWAP1 PUSH2 0x5E87 DUP6 SWAP3 PUSH2 0x5E7B PUSH2 0x231 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x129F JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x45D JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x6189 JUMPI PUSH0 SWAP2 PUSH2 0x615B JUMPI JUMPDEST POP PUSH1 0x20 PUSH2 0x5EB9 PUSH2 0x5EB4 PUSH1 0x1 PUSH2 0x123A JUMP JUMPDEST PUSH2 0x126F JUMP JUMPDEST PUSH4 0xBA087652 SWAP3 SWAP1 PUSH2 0x5EEE PUSH0 PUSH2 0x5ECD ADDRESS PUSH2 0x1317 JUMP JUMPDEST SWAP6 PUSH2 0x5EF9 PUSH2 0x5EDA ADDRESS PUSH2 0x1317 JUMP JUMPDEST PUSH2 0x5EE2 PUSH2 0x231 JUMP JUMPDEST SWAP9 DUP10 SWAP8 DUP9 SWAP7 DUP8 SWAP6 PUSH2 0x129F JUMP JUMPDEST DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0x178C JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x6156 JUMPI PUSH0 SWAP2 PUSH2 0x6128 JUMPI JUMPDEST POP PUSH2 0x5F28 DUP2 PUSH2 0x5F22 PUSH2 0x5F1C PUSH0 PUSH2 0x1019 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST GT PUSH2 0x5C84 JUMP JUMPDEST PUSH2 0x5F55 PUSH1 0x20 PUSH2 0x5F3F PUSH2 0x5F3A PUSH1 0x3 PUSH2 0x1A0A JUMP JUMPDEST PUSH2 0x1A17 JUMP JUMPDEST PUSH4 0x82755EBB SWAP1 PUSH2 0x5F4D PUSH2 0x231 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x129F JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x5F65 PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x6123 JUMPI PUSH2 0x5F80 SWAP2 PUSH0 SWAP2 PUSH2 0x60F5 JUMPI JUMPDEST POP PUSH2 0x5CD3 JUMP JUMPDEST PUSH2 0x5F99 PUSH2 0x5F94 PUSH2 0x5F8F PUSH0 PUSH2 0x130A JUMP JUMPDEST PUSH2 0x135C JUMP JUMPDEST PUSH2 0x1368 JUMP JUMPDEST SWAP1 PUSH1 0x20 PUSH4 0x95EA7B3 SWAP3 PUSH2 0x5FAB DUP4 PUSH2 0x5CDF JUMP JUMPDEST SWAP1 PUSH2 0x5FC9 PUSH0 DUP8 SWAP7 PUSH2 0x5FD4 PUSH2 0x5FBD PUSH2 0x231 JUMP JUMPDEST SWAP9 DUP10 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x129F JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x1A91 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x60F0 JUMPI PUSH2 0x5FEE SWAP3 PUSH2 0x60C4 JUMPI JUMPDEST POP PUSH2 0x5CDF JUMP JUMPDEST PUSH1 0x20 PUSH4 0x2D6BC8EA SWAP2 PUSH2 0x5FFF PUSH0 PUSH2 0x130A JUMP JUMPDEST SWAP1 PUSH2 0x6031 PUSH0 PUSH2 0x600E PUSH1 0x2 PUSH2 0x130A JUMP JUMPDEST SWAP6 PUSH2 0x603C DUP9 PUSH2 0x601C ADDRESS PUSH2 0x1317 JUMP JUMPDEST SWAP1 PUSH2 0x6025 PUSH2 0x231 JUMP JUMPDEST SWAP10 DUP11 SWAP9 DUP10 SWAP8 DUP9 SWAP7 PUSH2 0x129F JUMP JUMPDEST DUP7 MSTORE PUSH1 0x4 DUP7 ADD PUSH2 0x5CEB JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x60BF JUMPI PUSH2 0x6093 JUMPI JUMPDEST POP CALLER SWAP1 SWAP2 PUSH2 0x6079 PUSH32 0x1CBC5AB135991BD2B6A4B034A04AA2AA086DAC1371CB9B16B8B5E2ED6B036BED SWAP3 PUSH2 0x3A9A JUMP JUMPDEST SWAP3 PUSH2 0x608E PUSH2 0x6085 PUSH2 0x231 JUMP JUMPDEST SWAP3 DUP4 SWAP3 DUP4 PUSH2 0x5D29 JUMP JUMPDEST SUB SWAP1 LOG2 JUMP JUMPDEST PUSH2 0x60B3 SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x60B8 JUMPI JUMPDEST PUSH2 0x60AB DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1332 JUMP JUMPDEST PUSH2 0x604B JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x60A1 JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST PUSH2 0x60E4 SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x60E9 JUMPI JUMPDEST PUSH2 0x60DC DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1A73 JUMP JUMPDEST PUSH2 0x5FE8 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x60D2 JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST PUSH2 0x6116 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x611C JUMPI JUMPDEST PUSH2 0x610E DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1A32 JUMP JUMPDEST PUSH0 PUSH2 0x5F7A JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x6104 JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST PUSH2 0x6149 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x614F JUMPI JUMPDEST PUSH2 0x6141 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1332 JUMP JUMPDEST PUSH0 PUSH2 0x5F0B JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x6137 JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST PUSH2 0x617C SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x6182 JUMPI JUMPDEST PUSH2 0x6174 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1332 JUMP JUMPDEST PUSH0 PUSH2 0x5EA4 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x616A JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST POP PUSH2 0x6198 PUSH0 PUSH2 0x1019 JUMP JUMPDEST PUSH2 0x5E35 JUMP JUMPDEST PUSH2 0x61BE SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x61C4 JUMPI JUMPDEST PUSH2 0x61B6 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1332 JUMP JUMPDEST PUSH0 PUSH2 0x5DFC JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x61AC JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST PUSH2 0x5DDF SWAP2 SWAP4 POP PUSH2 0x61F5 SWAP1 DUP6 RETURNDATASIZE DUP2 GT PUSH2 0x61FC JUMPI JUMPDEST PUSH2 0x61ED DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1332 JUMP JUMPDEST SWAP3 SWAP1 PUSH2 0x5DC6 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x61E3 JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x6237 SWAP2 ADD PUSH2 0x243 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH2 0x6245 PUSH2 0x4FA0 JUMP JUMPDEST DUP2 PUSH2 0x6260 PUSH2 0x625A PUSH2 0x6255 PUSH0 PUSH2 0x3B11 JUMP JUMPDEST PUSH2 0x282 JUMP JUMPDEST SWAP2 PUSH2 0x282 JUMP JUMPDEST EQ PUSH0 EQ PUSH2 0x634B JUMPI PUSH2 0x6287 DUP4 PUSH2 0x6281 PUSH1 0x2 DUP5 ADD SWAP2 PUSH2 0x627C DUP4 PUSH2 0x297F JUMP JUMPDEST PUSH2 0x2A30 JUMP JUMPDEST SWAP1 PUSH2 0x1BA9 JUMP JUMPDEST JUMPDEST DUP4 PUSH2 0x62A3 PUSH2 0x629D PUSH2 0x6298 PUSH0 PUSH2 0x3B11 JUMP JUMPDEST PUSH2 0x282 JUMP JUMPDEST SWAP2 PUSH2 0x282 JUMP JUMPDEST EQ PUSH0 EQ PUSH2 0x631C JUMPI PUSH2 0x62CB SWAP1 PUSH2 0x62C5 PUSH1 0x2 DUP6 SWAP3 ADD SWAP2 PUSH2 0x62C0 DUP4 PUSH2 0x297F JUMP JUMPDEST PUSH2 0x5013 JUMP JUMPDEST SWAP1 PUSH2 0x1BA9 JUMP JUMPDEST JUMPDEST SWAP2 SWAP1 SWAP2 PUSH2 0x6317 PUSH2 0x6305 PUSH2 0x62FF PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP4 PUSH2 0x3A9A JUMP JUMPDEST SWAP4 PUSH2 0x3A9A JUMP JUMPDEST SWAP4 PUSH2 0x630E PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x45D JUMP JUMPDEST SUB SWAP1 LOG3 JUMP JUMPDEST PUSH2 0x6346 SWAP1 PUSH2 0x6340 PUSH2 0x6331 PUSH0 DUP7 SWAP4 ADD DUP8 SWAP1 PUSH2 0x3AA6 JUMP JUMPDEST SWAP2 PUSH2 0x633B DUP4 PUSH2 0x297F JUMP JUMPDEST PUSH2 0x622C JUMP JUMPDEST SWAP1 PUSH2 0x1BA9 JUMP JUMPDEST PUSH2 0x62CC JUMP JUMPDEST PUSH2 0x6360 PUSH2 0x635B PUSH0 DUP4 ADD DUP5 SWAP1 PUSH2 0x3AA6 JUMP JUMPDEST PUSH2 0x297F JUMP JUMPDEST DUP1 PUSH2 0x6373 PUSH2 0x636D DUP7 PUSH2 0x243 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST LT PUSH2 0x639D JUMPI PUSH2 0x6386 PUSH2 0x6398 SWAP2 DUP6 SWAP1 PUSH2 0x5013 JUMP JUMPDEST PUSH2 0x6393 PUSH0 DUP5 ADD DUP6 SWAP1 PUSH2 0x3AA6 JUMP JUMPDEST PUSH2 0x1BA9 JUMP JUMPDEST PUSH2 0x6288 JUMP JUMPDEST SWAP2 PUSH2 0x63DC SWAP2 POP SWAP2 SWAP3 PUSH2 0x63AD PUSH2 0x231 JUMP JUMPDEST SWAP4 DUP5 SWAP4 PUSH32 0xE450D38C00000000000000000000000000000000000000000000000000000000 DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0x4FE1 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP1 SWAP3 PUSH2 0x63EA PUSH2 0x4FA0 JUMP JUMPDEST DUP3 PUSH2 0x6405 PUSH2 0x63FF PUSH2 0x63FA PUSH0 PUSH2 0x3B11 JUMP JUMPDEST PUSH2 0x282 JUMP JUMPDEST SWAP2 PUSH2 0x282 JUMP JUMPDEST EQ PUSH2 0x64F3 JUMPI DUP5 PUSH2 0x6425 PUSH2 0x641F PUSH2 0x641A PUSH0 PUSH2 0x3B11 JUMP JUMPDEST PUSH2 0x282 JUMP JUMPDEST SWAP2 PUSH2 0x282 JUMP JUMPDEST EQ PUSH2 0x64AC JUMPI PUSH2 0x644C SWAP1 PUSH2 0x6447 PUSH2 0x6440 PUSH1 0x1 DUP8 SWAP4 ADD DUP7 SWAP1 PUSH2 0x4212 JUMP JUMPDEST DUP8 SWAP1 PUSH2 0x3AA6 JUMP JUMPDEST PUSH2 0x1BA9 JUMP JUMPDEST PUSH2 0x6456 JUMPI JUMPDEST POP POP POP JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH2 0x64A1 PUSH2 0x648F PUSH2 0x6489 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP4 PUSH2 0x3A9A JUMP JUMPDEST SWAP4 PUSH2 0x3A9A JUMP JUMPDEST SWAP4 PUSH2 0x6498 PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x45D JUMP JUMPDEST SUB SWAP1 LOG3 PUSH0 DUP1 DUP1 PUSH2 0x6451 JUMP JUMPDEST PUSH2 0x64EF PUSH2 0x64B8 PUSH0 PUSH2 0x3B11 JUMP JUMPDEST PUSH2 0x64C0 PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x94280D6200000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x985 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x6536 PUSH2 0x64FF PUSH0 PUSH2 0x3B11 JUMP JUMPDEST PUSH2 0x6507 PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0xE602DF0500000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x985 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x654B PUSH2 0x6545 PUSH2 0x31E8 JUMP JUMPDEST ISZERO PUSH2 0x3F3 JUMP JUMPDEST PUSH2 0x6551 JUMPI JUMP JUMPDEST PUSH2 0x6559 PUSH2 0x231 JUMP JUMPDEST PUSH32 0x8DFC202B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x6589 PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x6595 PUSH2 0x3B3A JUMP JUMPDEST POP PUSH2 0x65B0 PUSH0 PUSH2 0x65AA PUSH2 0x65A5 PUSH2 0x3176 JUMP JUMPDEST PUSH2 0x69D2 JUMP JUMPDEST ADD PUSH2 0x130A JUMP JUMPDEST SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x65C1 DUP3 PUSH2 0x69D5 JUMP JUMPDEST DUP2 PUSH2 0x65EC PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP2 PUSH2 0x3A9A JUMP JUMPDEST SWAP1 PUSH2 0x65F5 PUSH2 0x231 JUMP JUMPDEST DUP1 PUSH2 0x65FF DUP2 PUSH2 0x2DE JUMP JUMPDEST SUB SWAP1 LOG2 PUSH2 0x660B DUP2 PUSH2 0x65B3 JUMP JUMPDEST PUSH2 0x661D PUSH2 0x6617 PUSH0 PUSH2 0x1019 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST GT PUSH0 EQ PUSH2 0x6631 JUMPI PUSH2 0x662D SWAP2 PUSH2 0x6AE5 JUMP JUMPDEST POP JUMPDEST JUMP JUMPDEST POP POP PUSH2 0x663B PUSH2 0x6A4A JUMP JUMPDEST PUSH2 0x662F JUMP JUMPDEST PUSH2 0x6651 PUSH2 0x664B PUSH2 0x6B14 JUMP JUMPDEST ISZERO PUSH2 0x3F3 JUMP JUMPDEST PUSH2 0x6657 JUMPI JUMP JUMPDEST PUSH2 0x665F PUSH2 0x231 JUMP JUMPDEST PUSH32 0xD7E6BCF800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x668F PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x66A4 SWAP1 PUSH2 0x669F PUSH2 0x6640 JUMP JUMPDEST PUSH2 0x66A6 JUMP JUMPDEST JUMP JUMPDEST DUP1 PUSH2 0x66C1 PUSH2 0x66BB PUSH2 0x66B6 PUSH0 PUSH2 0x3B11 JUMP JUMPDEST PUSH2 0x282 JUMP JUMPDEST SWAP2 PUSH2 0x282 JUMP JUMPDEST EQ PUSH2 0x66D1 JUMPI PUSH2 0x66CF SWAP1 PUSH2 0x598C JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x6714 PUSH2 0x66DD PUSH0 PUSH2 0x3B11 JUMP JUMPDEST PUSH2 0x66E5 PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x1E4FBDF700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x985 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x6721 SWAP1 PUSH2 0x6693 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x6735 SWAP2 PUSH2 0x6730 PUSH2 0x6640 JUMP JUMPDEST PUSH2 0x6937 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x1F PUSH1 0x20 SWAP2 ADD DIV SWAP1 JUMP JUMPDEST SHL SWAP1 JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x8 PUSH2 0x677F SWAP2 MUL SWAP2 PUSH2 0x6779 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 PUSH2 0x6741 JUMP JUMPDEST SWAP3 PUSH2 0x6741 JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x679F PUSH2 0x679A PUSH2 0x67A7 SWAP4 PUSH2 0x1B8A JUMP JUMPDEST PUSH2 0x1BA6 JUMP JUMPDEST SWAP1 DUP4 SLOAD PUSH2 0x6745 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x67BD SWAP2 PUSH2 0x67B7 PUSH2 0x2967 JUMP JUMPDEST SWAP2 PUSH2 0x6789 JUMP JUMPDEST JUMP JUMPDEST JUMPDEST DUP2 DUP2 LT PUSH2 0x67CB JUMPI POP POP JUMP JUMPDEST DUP1 PUSH2 0x67D8 PUSH0 PUSH1 0x1 SWAP4 PUSH2 0x67AB JUMP JUMPDEST ADD PUSH2 0x67C0 JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x1F DUP2 GT PUSH2 0x67EE JUMPI JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x67FA PUSH2 0x681F SWAP4 PUSH2 0x2852 JUMP JUMPDEST SWAP1 PUSH1 0x20 PUSH2 0x6806 DUP5 PUSH2 0x6737 JUMP JUMPDEST DUP4 ADD SWAP4 LT PUSH2 0x6827 JUMPI JUMPDEST PUSH2 0x6818 SWAP1 PUSH2 0x6737 JUMP JUMPDEST ADD SWAP1 PUSH2 0x67BF JUMP JUMPDEST PUSH0 DUP1 DUP1 PUSH2 0x67E9 JUMP JUMPDEST SWAP2 POP PUSH2 0x6818 DUP2 SWAP3 SWAP1 POP PUSH2 0x680F JUMP JUMPDEST SWAP1 PUSH2 0x6845 SWAP1 PUSH0 NOT SWAP1 PUSH1 0x8 MUL PUSH2 0x5A9 JUMP JUMPDEST NOT AND SWAP1 JUMP JUMPDEST DUP2 PUSH2 0x6854 SWAP2 PUSH2 0x6835 JUMP JUMPDEST SWAP1 PUSH1 0x2 MUL OR SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x6866 DUP2 PUSH2 0x326 JUMP JUMPDEST SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x6926 JUMPI PUSH2 0x688A DUP3 PUSH2 0x6884 DUP6 SLOAD PUSH2 0x281F JUMP JUMPDEST DUP6 PUSH2 0x67DE JUMP JUMPDEST PUSH1 0x20 SWAP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 EQ PUSH2 0x68BE JUMPI SWAP2 DUP1 SWAP2 PUSH2 0x68AD SWAP4 PUSH0 SWAP3 PUSH2 0x68B2 JUMPI JUMPDEST POP POP PUSH2 0x684A JUMP JUMPDEST SWAP1 SSTORE JUMPDEST JUMP JUMPDEST SWAP1 SWAP2 POP ADD MLOAD PUSH0 DUP1 PUSH2 0x68A6 JUMP JUMPDEST PUSH1 0x1F NOT DUP4 AND SWAP2 PUSH2 0x68CD DUP6 PUSH2 0x2852 JUMP JUMPDEST SWAP3 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x690E JUMPI POP SWAP2 PUSH1 0x2 SWAP4 SWAP2 DUP6 PUSH1 0x1 SWAP7 SWAP5 LT PUSH2 0x68F4 JUMPI JUMPDEST POP POP POP MUL ADD SWAP1 SSTORE PUSH2 0x68B0 JUMP JUMPDEST PUSH2 0x6904 SWAP2 ADD MLOAD PUSH1 0x1F DUP5 AND SWAP1 PUSH2 0x6835 JUMP JUMPDEST SWAP1 SSTORE PUSH0 DUP1 DUP1 PUSH2 0x68E8 JUMP JUMPDEST SWAP2 SWAP4 PUSH1 0x20 PUSH1 0x1 DUP2 SWAP3 DUP8 DUP8 ADD MLOAD DUP2 SSTORE ADD SWAP6 ADD SWAP3 ADD PUSH2 0x68D0 JUMP JUMPDEST PUSH2 0x68A JUMP JUMPDEST SWAP1 PUSH2 0x6935 SWAP2 PUSH2 0x685C JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x4 PUSH2 0x6959 SWAP3 PUSH2 0x6952 PUSH2 0x6948 PUSH2 0x4FA0 JUMP JUMPDEST SWAP4 PUSH1 0x3 DUP6 ADD PUSH2 0x692B JUMP JUMPDEST SWAP2 ADD PUSH2 0x692B JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x6965 SWAP2 PUSH2 0x6723 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x696F PUSH2 0x6640 JUMP JUMPDEST PUSH2 0x6977 PUSH2 0x6979 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x6994 PUSH2 0x6984 PUSH2 0x6208 JUMP JUMPDEST PUSH0 PUSH2 0x698D PUSH2 0x485B JUMP JUMPDEST SWAP2 ADD PUSH2 0x1BA9 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x699E PUSH2 0x6967 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x69A8 PUSH2 0x6640 JUMP JUMPDEST PUSH2 0x69B0 PUSH2 0x69B2 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x69C6 PUSH2 0x69BD PUSH2 0x55EA JUMP JUMPDEST PUSH0 DUP1 SWAP2 ADD PUSH2 0x525F JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x69D0 PUSH2 0x69A0 JUMP JUMPDEST JUMP JUMPDEST SWAP1 JUMP JUMPDEST DUP1 EXTCODESIZE PUSH2 0x69E9 PUSH2 0x69E3 PUSH0 PUSH2 0x1019 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST EQ PUSH2 0x6A0B JUMPI PUSH2 0x6A09 SWAP1 PUSH0 PUSH2 0x6A03 PUSH2 0x69FE PUSH2 0x3176 JUMP JUMPDEST PUSH2 0x69D2 JUMP JUMPDEST ADD PUSH2 0x3DC7 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x6A46 SWAP1 PUSH2 0x6A17 PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x4C9C8CE300000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x985 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST CALLVALUE PUSH2 0x6A5D PUSH2 0x6A57 PUSH0 PUSH2 0x1019 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST GT PUSH2 0x6A64 JUMPI JUMP JUMPDEST PUSH2 0x6A6C PUSH2 0x231 JUMP JUMPDEST PUSH32 0xB398979F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x6A9C PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x6AB7 PUSH2 0x6AB2 DUP4 PUSH2 0x6F5 JUMP JUMPDEST PUSH2 0x6E0 JUMP JUMPDEST SWAP2 DUP3 MSTORE JUMP JUMPDEST RETURNDATASIZE PUSH0 EQ PUSH2 0x6AD7 JUMPI PUSH2 0x6ACC RETURNDATASIZE PUSH2 0x6AA5 JUMP JUMPDEST SWAP1 RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY JUMPDEST JUMP JUMPDEST PUSH2 0x6ADF PUSH2 0x6AA0 JUMP JUMPDEST SWAP1 PUSH2 0x6AD5 JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x6B11 SWAP4 PUSH2 0x6AF3 PUSH2 0x6AA0 JUMP JUMPDEST POP DUP4 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 MLOAD SWAP2 GAS DELEGATECALL SWAP1 PUSH2 0x6B08 PUSH2 0x6ABC JUMP JUMPDEST SWAP1 SWAP2 SWAP1 SWAP2 PUSH2 0x6B32 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x6B1C PUSH2 0x2941 JUMP JUMPDEST POP PUSH2 0x6B2F PUSH0 PUSH2 0x6B29 PUSH2 0x5A6C JUMP JUMPDEST ADD PUSH2 0x3B9C JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x6B46 SWAP1 PUSH2 0x6B3F PUSH2 0x6AA0 JUMP JUMPDEST POP ISZERO PUSH2 0x3F3 JUMP JUMPDEST PUSH0 EQ PUSH2 0x6B52 JUMPI POP PUSH2 0x6BD6 JUMP JUMPDEST PUSH2 0x6B5B DUP3 PUSH2 0x65B3 JUMP JUMPDEST PUSH2 0x6B6D PUSH2 0x6B67 PUSH0 PUSH2 0x1019 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST EQ DUP1 PUSH2 0x6BBB JUMPI JUMPDEST PUSH2 0x6B7C JUMPI POP SWAP1 JUMP JUMPDEST PUSH2 0x6BB7 SWAP1 PUSH2 0x6B88 PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x9996B31500000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x985 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST POP DUP1 EXTCODESIZE PUSH2 0x6BD0 PUSH2 0x6BCA PUSH0 PUSH2 0x1019 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST EQ PUSH2 0x6B74 JUMP JUMPDEST PUSH2 0x6BDF DUP2 PUSH2 0x65B3 JUMP JUMPDEST PUSH2 0x6BF1 PUSH2 0x6BEB PUSH0 PUSH2 0x1019 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST GT PUSH0 EQ PUSH2 0x6C00 JUMPI DUP1 MLOAD SWAP1 PUSH1 0x20 ADD REVERT JUMPDEST PUSH2 0x6C08 PUSH2 0x231 JUMP JUMPDEST PUSH32 0x1425EA4200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x6C38 PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SELFBALANCE PUSH12 0xD292C84F9B07C6D81D4B96A2 DUP15 POP DUP7 SDIV PUSH14 0xF8EA15CCFB438BC561CAB769A464 PUSH20 0x6F6C634300081900330000000000000000000000 ","sourceMap":"773:11857:20:-:0;;;;;;;;;-1:-1:-1;773:11857:20;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;:::o;:::-;;;;;;;;;;;;;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;:::o;:::-;;:::i;:::-;;;:::o;:::-;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::o;:::-;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::o;1170:26::-;;;;;;:::i;:::-;;:::o;773:11857::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;1203:30::-;;;;;;:::i;:::-;;:::o;773:11857::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;;;:::o;:::-;;;;:::i;:::-;;;;;;;:::i;:::-;:::o;:::-;;;:::i;:::-;;:::o;1819:58:2:-;1870:7;;:::i;:::-;1819:58;:::o;:::-;;;:::i;:::-;;:::o;773:11857:20:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::o;986:24::-;;;;;:::i;:::-;;:::o;773:11857::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;1131:32::-;;;;;;:::i;:::-;;:::o;773:11857::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;1055:25::-;;;;;;:::i;:::-;;:::o;773:11857::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;3217:103:6;;3282:1;3217:103;;;:::i;:::-;3282:1;:::i;:::-;;;:::i;:::-;3217:103::o;2281:72:5:-;;2345:1;2281:72;;;:::i;:::-;2345:1;:::i;:::-;2281:72::o;773:11857:20:-;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;:::o;:::-;;:::i;:::-;;;;:::i;:::-;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;8223:3446::-;8325:55;8333:6;:10;;8342:1;8333:10;:::i;:::-;;;:::i;:::-;;8325:55;:::i;:::-;8391:64;8399:21;8409:10;8399:21;:::i;:::-;:31;;8424:6;8399:31;:::i;:::-;;;:::i;:::-;;;8391:64;:::i;:::-;8466:57;8474:13;;:::i;:::-;:17;;8490:1;8474:17;:::i;:::-;;;:::i;:::-;;8466:57;:::i;:::-;8557:47;;:45;:36;8572:20;8580:11;;;:::i;:::-;8572:20;:::i;:::-;8557:36;:::i;:::-;:45;:::i;:::-;;:47;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;8223:3446;8536:68;8651:10;8636:37;;:35;:26;8651:10;;;:::i;:::-;8636:26;:::i;:::-;:35;:::i;:::-;;:37;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;8223:3446;8615:58;8750:11;:36;;:21;:11;;;:::i;:::-;:21;:::i;:::-;;8780:4;8750:36;8772:13;8780:4;8772:13;:::i;:::-;8750:36;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;8223:3446;8722:64;8827:10;8820:43;;:28;:18;8827:10;;;:::i;:::-;8820:18;:::i;:::-;:28;:::i;:::-;;8857:4;8820:43;8849:13;8857:4;8849:13;:::i;:::-;8820:43;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;8223:3446;8797:66;8903:9;8896:42;;:27;:17;8903:9;;;:::i;:::-;8896:17;:::i;:::-;:27;:::i;:::-;;8932:4;8896:42;8924:13;8932:4;8924:13;:::i;:::-;8896:42;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;8223:3446;8874:64;9022:17;;9043;9071:2;9076:12;9071:17;;;;:::i;:::-;;;;;:::i;:::-;9064:25;;;:::i;:::-;9043:47;;;:::i;:::-;9022:68;;;:::i;:::-;;;;;:::i;:::-;;;9014:136;;;:::i;:::-;9169:12;9185:17;9213:2;9218:12;9213:17;;;;:::i;:::-;;;;;:::i;:::-;9206:25;;;:::i;:::-;9185:47;;;:::i;:::-;9169:63;;;:::i;:::-;;;;;:::i;:::-;;;9161:126;;;:::i;:::-;9354:2;9359:12;9354:17;;;;:::i;:::-;;;;;:::i;:::-;9347:25;;;:::i;:::-;9326:46;;;:::i;:::-;9406:2;;9411:12;9406:17;;;;:::i;:::-;;;;;:::i;:::-;9399:25;;;:::i;:::-;9383:41;;;:::i;:::-;9518:6;;9528:17;9548;9528:37;;;:::i;:::-;9518:47;;;:::i;:::-;;;;;:::i;:::-;;;9510:93;;;:::i;:::-;9622:6;9632:17;9652:12;9632:32;;;:::i;:::-;9622:42;;;:::i;:::-;;;;;:::i;:::-;;;9614:88;;;:::i;:::-;9787:6;9796:17;9787:26;;;:::i;:::-;9817:13;;:::i;:::-;9786:44;;;:::i;:::-;9868:6;;9877:12;9868:21;;;:::i;:::-;9893:13;;:::i;:::-;9867:39;;;:::i;:::-;9925:10;;9937:6;;;;:::i;:::-;10015:2;:17;;;:::i;:::-;;;;;:::i;:::-;10008:25;;;:::i;:::-;9989:44;;;:::i;:::-;10070:2;;:17;;;:::i;:::-;;;;;:::i;:::-;10063:25;;;:::i;:::-;10044:44;;;:::i;:::-;10175:15;;10194:11;;;:::i;:::-;:27;;;:::i;:::-;;:46;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;10175:65;;10194:46;10167:126;10194:46;;;;;8223:3446;10175:65;;:::i;:::-;;;:::i;:::-;;;10167:126;:::i;:::-;10306:65;:18;:11;;;:::i;:::-;:18;:::i;:::-;;10325:15;10350:4;10306:65;;10342:13;10350:4;10342:13;:::i;:::-;10365:4;10306:65;10357:13;10365:4;10357:13;:::i;:::-;10306:65;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;10411:42;10306:65;;;8223:3446;10418:9;10411:42;:27;:17;10418:9;;;:::i;:::-;10411:17;:::i;:::-;:27;:::i;:::-;;10447:4;10411:42;10439:13;10447:4;10439:13;:::i;:::-;10411:42;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;10567:30;10411:42;;;;;8223:3446;10384:69;10464;10472:16;:31;;10492:11;10472:31;:::i;:::-;;;:::i;:::-;;;10464:69;:::i;:::-;10567:30;:::i;:::-;10646:12;:16;;10661:1;10646:16;:::i;:::-;;;:::i;:::-;;10642:742;;8223:3446;11400:15;;:19;;11418:1;11400:19;:::i;:::-;;;:::i;:::-;;11396:174;;8223:3446;11596:11;;:27;:11;;;:::i;:::-;:27;:::i;:::-;11624:36;11596:27;11624:11;:36;:21;:11;;;:::i;:::-;:21;:::i;:::-;;11654:4;11624:36;11646:13;11654:4;11646:13;:::i;:::-;11624:36;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;11596:65;11624:36;11596:65;11624:36;;;;;8223:3446;11596:65;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;11582:79;11596:65;;;;;8223:3446;11582:79;;;:::i;:::-;8223:3446::o;11596:65::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;11624:36::-;11596:65;11624:36;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;:::i;11396:174::-;11509:49;11468:15;11451:43;11468:15;11451:43;:::i;:::-;11509:49;:::i;:::-;11396:174;;;;10642:742;10697:22;10706:12;10697:22;:::i;:::-;10742:7;10734:58;10742:7;:23;;10753:12;10742:23;:::i;:::-;;;:::i;:::-;;;10734:58;:::i;:::-;10850:22;:12;10865:7;10850:22;;:::i;:::-;;10906:17;10915:7;10906:17;:::i;:::-;10938:73;10946:8;:19;;10958:7;10946:19;:::i;:::-;;;:::i;:::-;;;10938:73;:::i;:::-;11063:27;;:25;:9;;;:::i;:::-;:25;:::i;:::-;;:27;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;10642:742;11040:50;11124:9;:23;;:21;:9;;;:::i;:::-;:21;:::i;:::-;;:23;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;10642:742;11105:42;11183:9;11176:60;:26;:17;11183:9;;;:::i;:::-;11176:17;:::i;:::-;:26;:::i;:::-;;;11203:8;11176:60;;11213:22;11203:8;11213:12;11228:7;11213:22;;:::i;:::-;11176:60;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;11251;11176;;;10642:742;11258:9;11251:26;:17;11258:9;;;:::i;:::-;11251:17;:::i;:::-;:26;:::i;:::-;:60;;11292:18;11251:26;11278:12;11292:7;11302:8;11292:18;;:::i;:::-;11251:60;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;11326:46;11251:60;;;10642:742;11333:9;11326:26;:17;11333:9;;;:::i;:::-;11326:17;:::i;:::-;:26;:::i;:::-;:46;;:26;11353:8;11363;11326:46;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;10642:742;;;11326:46;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;11251:60::-;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;11176:::-;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;11124:23::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;11063:27::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;10411:42::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;10306:65::-;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;10194:46::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;8896:42::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;8820:43::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;8750:36::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;8636:37::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;8557:47::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;8223:3446::-;;;;;:::i;:::-;:::o;773:11857::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;:::i;:::-;;:::o;3011:144:3:-;3056:13;;:::i;:::-;3106:18;3134:14;3141:7;3106:18;;:::i;:::-;3141:7;3134:14;:::i;:::-;;:::o;773:11857:20:-;;;:::o;5505:186:3:-;5657:5;5505:186;5578:4;;:::i;:::-;5610:12;;;:::i;:::-;5648:7;5657:5;;;:::i;:::-;5680:4;5673:11;:::o;773:11857:20:-;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;4191:152:3:-;4243:7;;:::i;:::-;4287:18;4322:14;;4287:18;;:::i;:::-;4322:14;;:::i;:::-;4315:21;:::o;6251:244::-;;6461:5;6251:244;6338:4;;:::i;:::-;6372:12;6425:5;6372:12;;:::i;:::-;6410:4;6416:7;6425:5;;;:::i;:::-;6457:2;6461:5;;;:::i;:::-;6484:4;6477:11;:::o;773:11857:20:-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;:::o;:::-;;:::i;6134:872::-;6190:7;;:::i;:::-;6251:9;:27;;:25;:9;;;:::i;:::-;:25;:::i;:::-;;:27;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;6235:44;6251:27;;;;;6134:872;6235:44;;:::i;:::-;6305:19;;:17;:9;;;:::i;:::-;:17;:::i;:::-;;:19;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;6134:872;6290:34;6355:1;6335:21;6355:1;6335:21;:::i;:::-;6389:36;;:21;:11;;;:::i;:::-;:21;:::i;:::-;;6419:4;6389:36;6411:13;6419:4;6411:13;:::i;:::-;6389:36;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;6463:41;6389:36;6463:41;6389:36;;;;;6134:872;6369:56;6463:27;:11;;;:::i;:::-;:27;:::i;:::-;:41;:27;:41;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;6134:872;6436:68;6535:43;;:28;:18;6542:10;;;:::i;:::-;6535:18;:::i;:::-;:28;:::i;:::-;;6572:4;6535:43;6564:13;6572:4;6564:13;:::i;:::-;6535:43;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;6134:872;6515:63;6595:9;;;:::i;:::-;:17;;6608:4;6595:17;:::i;:::-;;;:::i;:::-;;6591:88;;6134:872;6703:51;:14;:6;:14;:::i;:::-;;6718:10;6703:51;6718:10;;;:::i;:::-;6730:9;6703:51;6730:9;;;:::i;:::-;6741:12;6703:51;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;6765:32;6703:51;6690:64;6703:51;;;;;6134:872;6690:64;;:::i;:::-;6765:32;:::i;:::-;6829:16;;;:::i;:::-;6862:9;;;;:::i;:::-;:17;;6875:4;6862:17;:::i;:::-;;;:::i;:::-;;6858:77;;6134:872;6961:8;;;6948:21;6961:8;6948:21;;:::i;:::-;6982:16;:::o;6858:77::-;6894:14;:41;:6;:14;:::i;:::-;;;6909:9;6894:41;6909:9;;;:::i;:::-;6920:4;6926:8;6894:41;6926:8;6894:41;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;6948:21;6894:41;6881:54;6894:41;;;;;6858:77;6881:54;;:::i;:::-;6858:77;;;;6894:41;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;:::i;6703:51::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;:::i;6591:88::-;6627:6;:14;:6;:14;:::i;:::-;;:52;:14;6642:9;;;;:::i;:::-;6653:4;6627:52;6653:4;6659:19;6627:52;6659:19;6627:52;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;6614:65;6627:52;;;;;6591:88;6614:65;;:::i;:::-;6591:88;;;6627:52;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;:::i;6535:43::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;6463:41::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;6389:36::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;6305:19::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;6251:27::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;773:11857::-;;;:::o;4049:82:3:-;4098:5;;:::i;:::-;4122:2;4115:9;4122:2;4115:9;:::i;:::-;;:::o;7931:284:20:-;7987:7;;:::i;:::-;8029:11;:27;:11;;;:::i;:::-;:27;:::i;:::-;8057:36;8029:27;8057:11;:36;:21;:11;;;:::i;:::-;:21;:::i;:::-;;8087:4;8057:36;8079:13;8087:4;8079:13;:::i;:::-;8057:36;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;8029:65;8057:36;8029:65;8057:36;;;;;7931:284;8029:65;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;7931:284;8007:87;8124:11;:25;;8138:11;;;:::i;:::-;8124:25;:::i;:::-;;;:::i;:::-;;:57;;;;8152:25;:11;8166;;;:::i;:::-;8152:25;;:::i;:::-;8124:57;8192:15;:::o;8124:57::-;8180:1;8124:57;8180:1;8124:57;:::i;:::-;;;8029:65;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;8057:36::-;8029:65;8057:36;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;:::i;2303:62:0:-;;;:::i;:::-;2357:1;;:::i;:::-;2303:62::o;6050:76:20:-;;;:::i;:::-;:::o;:::-;;;:::i;:::-;:::o;2622:62:2:-;;2676:1;2622:62;;;:::i;:::-;2676:1;:::i;:::-;2622:62::o;4158:214::-;;4360:4;4158:214;4291:17;;;:::i;:::-;4360:4;:::i;:::-;4158:214::o;:::-;;;;;:::i;:::-;:::o;773:11857:20:-;;;:::o;2890:72:2:-;2954:1;2890:72;;;:::i;:::-;2954:1;:::i;:::-;2890:72;:::o;773:11857:20:-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1279:114:9:-;1327:66;;;:::i;:::-;1279:114;:::o;3705:134:2:-;3800:32;;;:::i;:::-;3793:39;:::o;3705:134::-;3774:7;;;:::i;:::-;;:::i;:::-;3705:134;:::o;773:11857:20:-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;2692:145:5:-;2739:4;;:::i;:::-;2783:21;2821:9;;2783:21;;:::i;:::-;2821:9;;:::i;:::-;2814:16;:::o;3217:103:6:-;;3282:1;3217:103;;;:::i;:::-;3282:1;:::i;:::-;;;:::i;:::-;3217:103::o;2281:72:5:-;;2345:1;2281:72;;;:::i;:::-;2345:1;:::i;:::-;2281:72::o;773:11857:20:-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;:::o;3104:1444::-;3205:55;3213:6;:10;;3222:1;3213:10;:::i;:::-;;;:::i;:::-;;3205:55;:::i;:::-;;;:::i;:::-;3304:30;:17;3311:9;;;:::i;:::-;3304:17;:::i;:::-;:30;:::i;:::-;:65;:30;3335:10;;3355:4;3304:65;;3347:13;3355:4;3347:13;:::i;:::-;3362:6;3304:65;3362:6;3304:65;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;3104:1444;3405:9;:27;;:25;:9;;;:::i;:::-;:25;:::i;:::-;;:27;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;3104:1444;3382:50;3462:23;;:21;:9;;;:::i;:::-;:21;:::i;:::-;;:23;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;3104:1444;3443:42;3522:6;3513:16;3522:6;3513:16;:::i;:::-;3565:7;3556:17;3565:7;3556:17;:::i;:::-;3586:60;:26;:17;3593:9;;;:::i;:::-;3586:17;:::i;:::-;:26;:::i;:::-;;3613:12;3627:7;3586:60;;3627:18;:7;3637:8;3627:18;;:::i;:::-;3586:60;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;3657:46;3586:60;;;3104:1444;3664:9;3657:26;:17;3664:9;;;:::i;:::-;3657:17;:::i;:::-;:26;:::i;:::-;:46;;:26;3684:8;3694;3657:46;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;3738:16;3657:46;;;3104:1444;3738:6;:16;:::i;:::-;3774:9;3767:25;:17;3774:9;;;:::i;:::-;3767:17;:::i;:::-;:25;:::i;:::-;:60;:25;3801:11;3793:20;3801:11;;;:::i;:::-;3793:20;:::i;:::-;3815:11;3767:60;;3815:11;3767:60;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;3104:1444;3838:11;:19;:11;;;:::i;:::-;:19;:::i;:::-;;:47;:19;3858:11;;3879:4;3838:47;;3871:13;3879:4;3871:13;:::i;:::-;3838:47;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;3918:36;3838:47;;;3104:1444;3933:9;3918:36;:34;:25;3933:9;;;:::i;:::-;3918:25;:::i;:::-;:34;:::i;:::-;;:36;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;3986:47;3918:36;;;;;3104:1444;3898:56;3986:47;:45;:36;4001:20;4009:11;;;:::i;:::-;4001:20;:::i;:::-;3986:36;:::i;:::-;:45;:::i;:::-;;:47;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;4318:17;4297:39;3986:47;4311:25;3986:47;4359:12;3986:47;;;;;3104:1444;3965:68;4050:11;;:26;;4064:12;4050:26;:::i;:::-;;;:::i;:::-;;4046:216;;;;4121:34;4128:26;4107:48;:11;4128;4142:12;4128:26;;:::i;:::-;4121:34;:::i;:::-;4107:48;;:::i;:::-;4046:216;4318:2;:17;:2;:17;:::i;:::-;;:::i;:::-;4311:25;:::i;:::-;4297:39;;:::i;:::-;4359:12;;:::i;:::-;4399:27;:11;;;:::i;:::-;:27;:::i;:::-;4427:36;4399:27;4427:11;:36;:21;:11;;;:::i;:::-;:21;:::i;:::-;;4457:4;4427:36;4449:13;4457:4;4449:13;:::i;:::-;4427:36;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;4399:65;4427:36;4399:65;4427:36;;;;;4046:216;4399:65;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;4385:79;4399:65;;;;;4046:216;4385:79;;;:::i;:::-;4497:43;;:28;:18;4504:10;;;:::i;:::-;4497:18;:::i;:::-;:28;:::i;:::-;;4534:4;4497:43;4526:13;4534:4;4526:13;:::i;:::-;4497:43;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;4477:63;4497:43;;;;;4046:216;4477:63;;;:::i;:::-;3104:1444::o;4497:43::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;4399:65::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;4427:36::-;4399:65;4427:36;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;:::i;4046:216::-;4216:34;4223:26;4202:48;:11;4223:12;;:26;:::i;:::-;4216:34;:::i;:::-;4202:48;;:::i;:::-;4046:216;;3986:47;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;3918:36::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;3838:47::-;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;3767:60::-;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;3657:46::-;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;3586:60::-;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;3462:23::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;3405:27::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;3304:65::-;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;3104:1444::-;;;;;:::i;:::-;:::o;773:11857::-;;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;4401:171:3:-;4545:20;;4401:171;4466:7;;:::i;:::-;4510:18;4545:11;4510:18;;:::i;:::-;4545:11;:20;:::i;:::-;;:::i;:::-;4538:27;:::o;2303:62:0:-;;;:::i;:::-;2357:1;;:::i;:::-;2303:62::o;773:11857:20:-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;3155:101:0:-;3238:10;;3246:1;3238:10;:::i;:::-;;:::i;:::-;3155:101::o;:::-;;;:::i;:::-;:::o;773:11857:20:-;;;:::o;7464:105::-;7516:7;;:::i;:::-;7551:9;7543:18;7551:9;;;:::i;:::-;7543:18;:::i;:::-;7536:25;:::o;2303:62:0:-;;;:::i;:::-;2357:1;;:::i;:::-;2303:62::o;5970:72:20:-;;;:::i;:::-;:::o;:::-;;;:::i;:::-;:::o;773:11857::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;6252:431:1:-;;;;;;;;2409:8:20;6390:26:1;;;:::i;:::-;6431:1;:15;;:1;:15;;:::i;:::-;:44;;;;6252:431;6427:105;;6618:23;6558:7;6607:1;6558:7;6541:24;6558:7;6541:14;:1;:14;:24;:::i;:::-;6575:22;6593:4;6575:15;:1;:15;:22;:::i;:::-;6607:1;:::i;:::-;6618:15;6636:5;6618:1;:15;:23;:::i;:::-;6656:20;;;;;:::i;:::-;;;;;;:::i;:::-;;;;6252:431::o;6427:105::-;6498:23;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;6431:44;6450:1;:14;;:1;:14;;:::i;:::-;:25;;6468:7;6450:25;:::i;:::-;;;:::i;:::-;;;6431:44;;773:11857:20;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;2145:859;2723:47;2145:859;;2692:20;2145:859;2606:19;2735:35;2145:859;;;2487:7;2636:45;2145:859;2650:31;2145:859;2445:10;;;:::i;:::-;2487:7;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;2606:19;;:::i;:::-;2650:31;:::i;:::-;2636:45;;:::i;:::-;2692:20;;:::i;:::-;2735:35;:::i;:::-;2723:47;;:::i;:::-;2783:58;2791:9;;;:::i;:::-;:23;;2804:10;2812:1;2804:10;:::i;:::-;2791:23;:::i;:::-;;;:::i;:::-;;;2783:58;:::i;:::-;2852:74;2860:20;2868:11;;;:::i;:::-;2860:20;:::i;:::-;:34;;2884:10;2892:1;2884:10;:::i;:::-;2860:34;:::i;:::-;;;:::i;:::-;;;2852:74;:::i;:::-;2937:59;2945:10;;;:::i;:::-;:24;;2959:10;2967:1;2959:10;:::i;:::-;2945:24;:::i;:::-;;;:::i;:::-;;;2937:59;:::i;:::-;2145:859::o;:::-;;;;;;;;;;:::i;:::-;:::o;2441:144:0:-;2487:7;;:::i;:::-;2533:20;2570:8;;2533:20;;:::i;:::-;2570:8;;:::i;:::-;2563:15;:::o;3268:148:3:-;3315:13;;:::i;:::-;3365:18;3393:16;3400:9;3365:18;;:::i;:::-;3400:9;3393:16;:::i;:::-;;:::o;7577:109:20:-;7631:7;;:::i;:::-;7666:11;7658:20;7666:11;;;:::i;:::-;7658:20;:::i;:::-;7651:27;:::o;3217:103:6:-;;;:::i;:::-;3282:1;;:::i;:::-;;;:::i;:::-;3217:103::o;2281:72:5:-;;;:::i;:::-;2345:1;;:::i;:::-;2281:72::o;5380:85:20:-;;;:::i;:::-;:::o;:::-;;;:::i;:::-;:::o;4767:178:3:-;4911:5;4767:178;4836:4;;:::i;:::-;4868:12;;;:::i;:::-;4907:2;4911:5;;;:::i;:::-;4934:4;4927:11;:::o;773:11857:20:-;;;;;:::i;:::-;;;;;;;;;:::o;5003:195:3:-;5162:29;5003:195;5162:20;:29;5003:195;5083:7;;:::i;:::-;5127:18;5162:13;5127:18;;:::i;:::-;5162:13;:20;:::i;:::-;:29;:::i;:::-;;:::i;:::-;5155:36;:::o;773:11857:20:-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;4069:1104:1:-;;;;;;;;4191:26;;:::i;:::-;4302:1;4301:16;4302:15;;:1;:15;;:::i;:::-;4301:16;;:::i;:::-;4348:1;:14;;:1;:14;;:::i;:::-;4726:11;:16;;4741:1;4726:16;:::i;:::-;;;:::i;:::-;;:34;;;4069:1104;4790:11;:16;;4805:1;4790:16;:::i;:::-;;;:::i;:::-;;:50;;;4069:1104;4855:13;4770:70;4856:12;4855:13;;:::i;:::-;:30;;;;4069:1104;4851:91;;;5055:1;4968;4951:18;;4968:1;4951:18;:::i;:::-;:14;:1;:14;:18;:::i;:::-;4983:14;4979:67;;4069:1104;5055:1;:::i;:::-;5066:101;;4069:1104;;:::o;5066:101::-;5100:23;5118:5;5100:15;5118:5;5100:1;:15;:23;:::i;:::-;5154:1;5142:14;;;;;:::i;:::-;;;;;;:::i;:::-;;;;5066:101;;;4979:67;5013:22;5031:4;5013:15;:1;:15;:22;:::i;:::-;4979:67;;4851:91;4908:23;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;4855:30;4872:13;4873:12;;4872:13;;:::i;:::-;4855:30;;;4790:50;4818:4;4855:13;4810;4818:4;4810:13;:::i;:::-;:25;:30;;4839:1;4810:30;:::i;:::-;;;:::i;:::-;;4790:50;;;;4726:34;4746:14;;4726:34;;1318:819:20;1783:31;1856:47;1318:819;;1739:19;1825:20;1318:819;1620:7;1868:35;1318:819;;1769:45;1318:819;1578:10;;;:::i;:::-;1620:7;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;1739:19;;:::i;:::-;1783:31;:::i;:::-;1769:45;;:::i;:::-;1825:20;;:::i;:::-;1868:35;:::i;:::-;1856:47;;:::i;:::-;1916:58;1924:9;;;:::i;:::-;:23;;1937:10;1945:1;1937:10;:::i;:::-;1924:23;:::i;:::-;;;:::i;:::-;;;1916:58;:::i;:::-;1985:74;1993:20;2001:11;;;:::i;:::-;1993:20;:::i;:::-;:34;;2017:10;2025:1;2017:10;:::i;:::-;1993:34;:::i;:::-;;;:::i;:::-;;;1985:74;:::i;:::-;2070:59;2078:10;;;:::i;:::-;:24;;2092:10;2100:1;2092:10;:::i;:::-;2078:24;:::i;:::-;;;:::i;:::-;;;2070:59;:::i;:::-;1318:819::o;:::-;;;;;;;;;:::i;:::-;:::o;773:11857::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;7014:442::-;7067:7;;:::i;:::-;7091:13;;;:::i;:::-;:18;;7108:1;7091:18;:::i;:::-;;;:::i;:::-;;7087:32;;7145:19;;:17;:9;;;:::i;:::-;:17;:::i;:::-;;:19;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;7192:29;:20;:31;7145:19;7192:31;7145:19;;;;;7014:442;7130:34;7192:20;:::i;:::-;:29;:::i;:::-;;:31;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;7311:25;7251:21;7258:13;7374:24;7192:31;7373:42;7192:31;;;;;7014:442;7175:48;7258:13;:2;:13;:::i;:::-;;:::i;:::-;7251:21;:::i;:::-;7311:16;;:::i;:::-;:25;:::i;:::-;7374:24;7394:4;7374:24;:::i;:::-;;;:::i;:::-;7402:13;;:::i;:::-;7373:42;;:::i;:::-;7426:22;:::o;7192:31::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;7145:19::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;7087:32::-;7111:8;7118:1;7111:8;:::i;:::-;;:::o;2303:62:0:-;2357:1;2303:62;;;:::i;:::-;2357:1;:::i;:::-;2303:62::o;3405:215::-;3489:8;:22;;3501:10;3509:1;3501:10;:::i;:::-;3489:22;:::i;:::-;;;:::i;:::-;;3485:91;;3604:8;;;:::i;:::-;3405:215::o;3485:91::-;3534:31;3554:10;3562:1;3554:10;:::i;:::-;3534:31;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;3405:215;;;;:::i;:::-;:::o;773:11857:20:-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1812:36:6:-;1847:1;;;:::i;:::-;1812:36;:::o;3326:384::-;3410:28;;:::i;:::-;3526:9;;:1;:9;;:::i;:::-;:20;;3539:7;;:::i;:::-;3526:20;:::i;:::-;;;:::i;:::-;;3522:88;;3684:19;3696:7;3684:9;3696:7;;:::i;:::-;3684:1;:9;:19;:::i;:::-;3326:384::o;3522:88::-;3569:30;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;773:11857:20;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1766:40:6:-;1805:1;;;:::i;:::-;1766:40;:::o;3716:283::-;3969:23;3799:28;;:::i;:::-;3969:9;3981:11;;:::i;:::-;3969:1;:9;:23;:::i;:::-;3716:283::o;2905:128:5:-;2970:8;;:::i;:::-;2966:61;;2905:128::o;2966:61::-;3001:15;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;9522:206:3;;9592:7;:21;;9603:10;9611:1;9603:10;:::i;:::-;9592:21;:::i;:::-;;;:::i;:::-;;9588:89;;9715:5;9694:7;9711:1;9703:10;9711:1;9703:10;:::i;:::-;9715:5;;;:::i;:::-;9522:206::o;9588:89::-;9636:30;9655:10;9663:1;9655:10;:::i;:::-;9636:30;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;7694:229:20;7751:7;;:::i;:::-;7790:9;:22;;:20;:9;;;:::i;:::-;:20;:::i;:::-;;:22;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;7694:229;7771:41;7843:9;:23;;:21;:9;;;:::i;:::-;:21;:::i;:::-;;:23;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;7884:31;7843:23;7885:17;7843:23;;;;;7694:229;7823:43;7885:6;:17;:::i;:::-;7884:31;:::i;:::-;7877:38;:::o;7843:23::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;7790:22::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;773:11857::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;11677:950;11764:4;;:::i;:::-;11789:15;11808:43;11789:15;11808:43;:28;:18;11815:10;;;:::i;:::-;11808:18;:::i;:::-;:28;:::i;:::-;;11845:4;11808:43;11837:13;11845:4;11837:13;:::i;:::-;11808:43;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;11789:62;;11808:43;11781:121;11808:43;;;;;11677:950;11789:62;;:::i;:::-;;;:::i;:::-;;;11781:121;:::i;:::-;12099:25;11941;11950:15;11941:25;:::i;:::-;11985:7;11977:72;11985:7;:26;;11996:15;11985:26;:::i;:::-;;;:::i;:::-;;;11977:72;:::i;:::-;12117:7;12099:25;;:::i;:::-;12163:7;12154:17;12163:7;12154:17;:::i;:::-;12190:8;12182:73;12190:8;:19;;12202:7;12190:19;:::i;:::-;;;:::i;:::-;;;12182:73;:::i;:::-;12299:27;;:25;:9;;;:::i;:::-;:25;:::i;:::-;;:27;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;11677:950;12276:50;12356:9;:23;;:21;:9;;;:::i;:::-;:21;:::i;:::-;;:23;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;12400:57;12356:23;;;;;11677:950;12337:42;12407:10;12400:27;:18;12407:10;;;:::i;:::-;12400:18;:::i;:::-;:27;:::i;:::-;:57;;:27;12428:8;12438:18;12400:57;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;12468:61;12400:57;;;11677:950;12475:10;12468:27;:18;12475:10;;;:::i;:::-;12468:18;:::i;:::-;:27;:::i;:::-;:61;;12510:18;12468:27;12496:12;12510:7;12520:8;12510:18;;:::i;:::-;12468:61;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;12540:47;12468:61;;;11677:950;12547:10;12540:27;:18;12547:10;;;:::i;:::-;12540:18;:::i;:::-;:27;:::i;:::-;:47;;:27;12568:8;12578;12540:47;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;11677:950;12615:4;;12608:11;:::o;12540:47::-;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;12468:61::-;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;12400:57::-;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;12356:23::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;12299:27::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;11808:43::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;2242:153:3:-;2326:63;2242:153;:::o;887:96:4:-;940:7;;:::i;:::-;966:10;;959:17;:::o;10264:128:3:-;;10380:4;10264:128;10364:7;10380:4;;;:::i;:::-;10264:128::o;773:11857:20:-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;:::i;:::-;;:::o;11993:477:3:-;;;;12119:25;12129:5;12136:7;12119:25;;:::i;:::-;12158:16;;:37;;12178:17;12158:37;:::i;:::-;;;:::i;:::-;;12154:310;;11993:477;;;;;;:::o;12154:310::-;12215:16;:24;;12234:5;12215:24;:::i;:::-;;;:::i;:::-;;12211:130;;12433:5;12391;;12407:24;12391:5;12398:7;12407:16;:24;:::i;:::-;12433:5;;;;:::i;:::-;12154:310;;;;;;12211:130;12293:7;12266:60;12293:7;;12302:16;12320:5;12266:60;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;6868:300;;6951:4;:18;;6959:10;6967:1;6959:10;:::i;:::-;6951:18;:::i;:::-;;;:::i;:::-;;6947:86;;7046:2;:16;;7052:10;7060:1;7052:10;:::i;:::-;7046:16;:::i;:::-;;;:::i;:::-;;7042:86;;7155:5;7145:4;7151:2;7155:5;;;:::i;:::-;6868:300::o;7042:86::-;7085:32;7106:10;7114:1;7106:10;:::i;:::-;7085:32;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;6947:86;6992:30;7011:10;7019:1;7011:10;:::i;:::-;6992:30;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;2658:162:0;2717:7;;:::i;:::-;:23;;2728:12;;:::i;:::-;2717:23;:::i;:::-;;;:::i;:::-;;2713:101;;2658:162::o;2713:101::-;2763:40;2790:12;;:::i;:::-;2763:40;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;2531:66:5;;;:::i;:::-;2589:1;;:::i;:::-;2531:66::o;773:11857:20:-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;3674:178:5:-;3791:17;3760:21;;:::i;:::-;3791:9;3803:5;3791:1;:9;:17;:::i;:::-;3832:12;;:::i;:::-;3823:22;;;;;:::i;:::-;;;;;;:::i;:::-;;;;3674:178::o;:::-;;;:::i;:::-;:::o;773:11857:20:-;;;;:::i;:::-;;:::o;4599:312:2:-;4671:13;4679:4;4671:13;:::i;:::-;:23;;4688:6;4671:23;:::i;:::-;;;:::i;:::-;;:120;;;;4599:312;4654:251;;4599:312::o;4654:251::-;4865:29;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;4671:120;4749:32;;;:::i;:::-;:42;;4785:6;4749:42;:::i;:::-;;;:::i;:::-;;;4671:120;;2303:62:0;;;;:::i;:::-;:::o;3012:84:20:-;;;;:::i;:::-;:::o;773:11857::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;6052:538:2:-;;;6151:52;;:50;:36;6169:17;6151:36;:::i;:::-;:50;:::i;:::-;;:52;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;6052:538;6147:437;;;;;;;;;;;;;;6052:538::o;6147:437::-;6513:60;6555:17;6513:60;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;6147:437;6245:4;;:40;;6253:32;;:::i;:::-;6245:40;:::i;:::-;;;:::i;:::-;;6241:120;;6423:4;6404:17;;;6423:4;:::i;:::-;6147:437;;6241:120;6312:34;6341:4;6312:34;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;6151:52;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;5028:213;5094:13;5102:4;5094:13;:::i;:::-;:23;;5111:6;5094:23;:::i;:::-;;;:::i;:::-;;5090:145;;5028:213::o;5090:145::-;5195:29;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;1147:162:5;1237:66;1147:162;:::o;773:11857:20:-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;5473:489::-;5543:27;:11;;;:::i;:::-;:27;:::i;:::-;5571:36;5543:27;5571:11;:36;:21;:11;;;:::i;:::-;:21;:::i;:::-;;5601:4;5571:36;5593:13;5601:4;5593:13;:::i;:::-;5571:36;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;5543:65;5571:36;5543:65;5571:36;;;;;5473:489;5543:65;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;5473:489;5521:87;5638:11;:25;;5652:11;;;:::i;:::-;5638:25;:::i;:::-;;;:::i;:::-;;:57;;;;5666:25;:11;5680;;;:::i;:::-;5666:25;;:::i;:::-;5638:57;5726:36;;:34;:25;5741:9;;;:::i;:::-;5726:25;:::i;:::-;:34;:::i;:::-;;:36;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;5786:27;5828:16;5726:36;5828:16;5726:36;;;;;5638:57;5706:56;5786:27;5790:23;5797:15;5786:1;5797:11;:15;5811:1;5797:15;:::i;:::-;;;:::i;:::-;5790:23;:::i;:::-;5786:27;;:::i;:::-;;:::i;:::-;5828:16;:::i;:::-;;;:::i;:::-;;5824:55;;5638:57;5911:43;;:28;:18;5918:10;;;:::i;:::-;5911:18;:::i;:::-;:28;:::i;:::-;;5948:4;5911:43;5940:13;5948:4;5940:13;:::i;:::-;5911:43;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;5891:63;5911:43;;;;;5638:57;5891:63;;;:::i;:::-;5473:489::o;5911:43::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;5824:55::-;;;:::i;:::-;;;5726:36;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;5638:57::-;5694:1;5638:57;5694:1;5638:57;:::i;:::-;;;5543:65;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;5571:36::-;5543:65;5571:36;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;:::i;8996:208:3:-;9066:7;:21;;9077:10;9085:1;9077:10;:::i;:::-;9066:21;:::i;:::-;;;:::i;:::-;;9062:91;;9191:5;9178:1;9170:10;9178:1;9170:10;:::i;:::-;9182:7;9191:5;;;:::i;:::-;8996:208::o;9062:91::-;9110:32;9131:10;9139:1;9131:10;:::i;:::-;9110:32;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;3774:248:0;3874:20;;:::i;:::-;3941:19;3923:8;;:1;:8;;:::i;:::-;3952;3941;3952;3941:1;:8;:19;:::i;:::-;4006:8;3975:40;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;3774:248::o;2281:72:5:-;;;:::i;:::-;2345:1;;:::i;:::-;2281:72::o;3366:176::-;3484:16;3453:21;;:::i;:::-;3484:9;3496:4;3484:1;:9;:16;:::i;:::-;3522:12;;:::i;:::-;3515:20;;;;;:::i;:::-;;;;;;:::i;:::-;;;;3366:176::o;:::-;;;:::i;:::-;:::o;8737:170:1:-;8837:64;8737:170;:::o;6893:76::-;6961:1;6893:76;;;:::i;:::-;6961:1;:::i;:::-;6893:76::o;1847:127:0:-;1954:12;1847:127;1954:12;:::i;:::-;1847:127::o;:::-;;;;:::i;:::-;:::o;6893:76:1:-;;6961:1;6893:76;;;:::i;:::-;6961:1;:::i;:::-;6893:76::o;2577:147:3:-;;2709:7;2577:147;2709:7;:::i;:::-;2577:147::o;:::-;;;;;:::i;:::-;:::o;6893:76:1:-;;;:::i;:::-;:::o;2968:67:2:-;;;:::i;:::-;:::o;6893:76:1:-;;;:::i;:::-;6961:1;;:::i;:::-;6893:76::o;2540:111:6:-;;;:::i;:::-;:::o;:::-;;;:::i;:::-;:::o;6893:76:1:-;;;:::i;:::-;6961:1;;:::i;:::-;6893:76::o;1836:97:5:-;;;:::i;:::-;:::o;:::-;;;:::i;:::-;:::o;1192:159:0:-;1280:65;1192:159;:::o;773:11857:20:-;;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;:::o;4556:816::-;4614:27;:11;;;:::i;:::-;:27;:::i;:::-;4642:36;4614:27;4642:11;:36;:21;:11;;;:::i;:::-;:21;:::i;:::-;;4672:4;4642:36;4664:13;4672:4;4664:13;:::i;:::-;4642:36;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;4614:65;4642:36;4614:65;4642:36;;;;;4556:816;4614:65;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;4556:816;4592:87;4709:11;:25;;4723:11;;;:::i;:::-;4709:25;:::i;:::-;;;:::i;:::-;;:57;;;;4737:25;:11;4751;;;:::i;:::-;4737:25;;:::i;:::-;4709:57;4777:62;4785:8;:12;;4796:1;4785:12;:::i;:::-;;;:::i;:::-;;4777:62;:::i;:::-;4877:37;;:27;:11;;;:::i;:::-;:27;:::i;:::-;;4905:8;4877:37;4905:8;4877:37;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;4709:57;4852:62;4945:64;:18;:11;;;:::i;:::-;:18;:::i;:::-;;4964:14;4988:4;4945:64;;4980:13;4988:4;4980:13;:::i;:::-;5003:4;4945:64;4995:13;5003:4;4995:13;:::i;:::-;4945:64;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;4709:57;4925:84;5022:55;5030:9;:13;;5042:1;5030:13;:::i;:::-;;;:::i;:::-;;5022:55;:::i;:::-;5134:28;;:26;:9;;;:::i;:::-;:26;:::i;:::-;;:28;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;5117:46;5134:28;;;;;4709:57;5117:46;;:::i;:::-;5176:25;:17;5183:9;;;:::i;:::-;5176:17;:::i;:::-;:25;:::i;:::-;;:54;:25;5210:7;5202:16;5210:7;5202:16;:::i;:::-;5220:9;5176:54;;5220:9;5176:54;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;5243:18;5176:54;;;4709:57;5243:7;:18;:::i;:::-;:67;:18;5262:9;;;;:::i;:::-;5273:10;5243:67;;5273:10;;;:::i;:::-;5285:9;5243:67;5285:9;5296:13;5304:4;5296:13;:::i;:::-;5243:67;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;4709:57;5332:10;;5344:9;5355:8;5328:36;;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;4556:816::o;5243:67::-;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;5176:54::-;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;5134:28::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;4945:64::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;4877:37::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;4709:57::-;4765:1;4709:57;4765:1;4709:57;:::i;:::-;;;4614:65;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;4642:36::-;4614:65;4642:36;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;:::i;2251:183:6:-;2355:73;2251:183;:::o;773:11857:20:-;;;;;;:::i;:::-;;:::o;7483:1170:3:-;;;;7593:18;;:::i;:::-;7625:4;:18;;7633:10;7641:1;7633:10;:::i;:::-;7625:18;:::i;:::-;;;:::i;:::-;;7621:546;;;;7761:23;7779:5;7761:23;:14;:1;:14;:23;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;7621:546;8181:2;:16;;8187:10;8195:1;8187:10;:::i;:::-;8181:16;:::i;:::-;;;:::i;:::-;;8177:429;;;;8344:23;8362:5;8344:23;:14;8362:5;8344:1;:14;:23;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;8177:429;8636:2;8640:5;8621:25;;;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;;:::i;:::-;;;;7483:1170::o;8177:429::-;8557:24;8576:5;8557:24;:15;:11;8576:5;8557:1;:11;8569:2;8557:15;;:::i;:::-;:24;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;8177:429;;7621:546;7837:17;;:11;:1;:11;7849:4;7837:17;;:::i;:::-;;:::i;:::-;7872:11;:19;;7886:5;7872:19;:::i;:::-;;;:::i;:::-;;7868:115;;8123:19;8103:39;8123:11;8137:5;8123:19;;:::i;:::-;8103:17;:11;:1;:11;8115:4;8103:17;;:::i;:::-;:39;:::i;:::-;7621:546;;7868:115;7943:4;7918:50;7943:4;;7949:11;7962:5;7918:50;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;11224:487;;;11357:18;;:::i;:::-;11389:5;:19;;11398:10;11406:1;11398:10;:::i;:::-;11389:19;:::i;:::-;;;:::i;:::-;;11385:89;;11487:7;:21;;11498:10;11506:1;11498:10;:::i;:::-;11487:21;:::i;:::-;;;:::i;:::-;;11483:90;;11582:37;11614:5;11582:29;:20;:13;11614:5;11582:1;:13;11596:5;11582:20;;:::i;:::-;11603:7;11582:29;;:::i;:::-;:37;:::i;:::-;11629:76;;11224:487;;;;:::o;11629:76::-;11679:7;11688:5;11663:31;;;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;;:::i;:::-;;;;11629:76;;;;;11483:90;11531:31;11551:10;11559:1;11551:10;:::i;:::-;11531:31;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;11385:89;11431:32;11452:10;11460:1;11452:10;:::i;:::-;11431:32;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;3105:126:5;3167:9;3168:8;;:::i;:::-;3167:9;;:::i;:::-;3163:62;;3105:126::o;3163:62::-;3199:15;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;1957:138:9;2009:7;;:::i;:::-;2062:19;2035:53;;:47;2062:19;;:::i;:::-;2035:47;:::i;:::-;:53;;:::i;:::-;2028:60;:::o;773:11857:20:-;;;:::o;2779:335:9:-;;2889:17;;;:::i;:::-;2931;2922:27;;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;2964:11;:4;:11;:::i;:::-;:15;;2978:1;2964:15;:::i;:::-;;;:::i;:::-;;2960:148;;;;2995:53;3024:17;2995:53;:::i;:::-;;2960:148;2779:335::o;2960:148::-;;;;;:::i;:::-;;;7084:141:1;7150:18;7151:17;;:::i;:::-;7150:18;;:::i;:::-;7146:73;;7084:141::o;7146:73::-;7191:17;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;6893:76;6961:1;6893:76;;;:::i;:::-;6961:1;:::i;:::-;6893:76::o;1980:235:0:-;2076:12;:26;;2092:10;2100:1;2092:10;:::i;:::-;2076:26;:::i;:::-;;;:::i;:::-;;2072:95;;2195:12;;;:::i;:::-;1980:235::o;2072:95::-;2125:31;2145:10;2153:1;2145:10;:::i;:::-;2125:31;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;1980:235;;;;:::i;:::-;:::o;6893:76:1:-;;6961:1;6893:76;;;:::i;:::-;6961:1;:::i;:::-;6893:76::o;773:11857:20:-;;;;;;;:::o;:::-;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;;:::i;:::-;:::o;:::-;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;:::o;2730:216:3:-;2920:9;:19;2730:216;2895:15;2867:18;;:::i;:::-;2905:5;2895:7;:1;:7;:15;:::i;:::-;2920:1;:9;:19;:::i;:::-;2730:216::o;:::-;;;;;:::i;:::-;:::o;6893:76:1:-;;;:::i;:::-;6961:1;;:::i;:::-;6893:76::o;2657:183:6:-;2810:23;2772:28;;:::i;:::-;2810:9;2822:11;;:::i;:::-;2810:1;:9;:23;:::i;:::-;2657:183::o;:::-;;;:::i;:::-;:::o;6893:76:1:-;;;:::i;:::-;6961:1;;:::i;:::-;6893:76::o;1939:156:5:-;2071:17;2040:21;;:::i;:::-;2071:9;2083:5;2071:1;:9;:17;:::i;:::-;1939:156::o;:::-;;;:::i;:::-;:::o;1684:190:14:-;;:::o;2186:281:9:-;2263:17;:29;:34;;2296:1;2263:34;:::i;:::-;;;:::i;:::-;;2259:119;;2387:73;2443:17;2387:53;:47;2414:19;;:::i;:::-;2387:47;:::i;:::-;:53;:73;:::i;:::-;2186:281::o;2259:119::-;2320:47;2349:17;2320:47;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;6598:122;6648:9;:13;;6660:1;6648:13;:::i;:::-;;;:::i;:::-;;6644:70;;6598:122::o;6644:70::-;6684:19;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;773:11857:20;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;:::i;:::-;;;;4106:253:13;4255:25;4106:253;4297:55;4106:253;4189:12;;:::i;:::-;4255:6;;4275:4;4255:25;;;;;;;;;;;:::i;:::-;4324:6;4332:7;4341:10;4297:55;;:::i;:::-;4290:62;:::o;8487:120:1:-;8537:4;;:::i;:::-;8560:26;:40;;:26;;:::i;:::-;:40;;:::i;:::-;8553:47;:::o;4625:582:13:-;;4797:8;4625:582;4769:12;;:::i;:::-;4798:7;4797:8;;:::i;:::-;4793:408;;;;4829:10;;:::i;4793:408::-;5045:17;:10;:17;:::i;:::-;:22;;5066:1;5045:22;:::i;:::-;;;:::i;:::-;;:49;;;4793:408;5041:119;;5180:10;5173:17;:::o;5041:119::-;5121:24;5138:6;5121:24;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;5045:49;5071:6;;:18;:23;;5093:1;5071:23;:::i;:::-;;;:::i;:::-;;5045:49;;5743:516;5874:17;:10;:17;:::i;:::-;:21;;5894:1;5874:21;:::i;:::-;;;:::i;:::-;;5870:383;;;;6046:142;;;;;;5870:383;6225:17;;:::i;:::-;;;;;;;;;;:::i;:::-;;;"},"gasEstimates":{"creation":{"codeDepositCost":"5552400","executionCost":"infinite","totalCost":"infinite"},"external":{"UPGRADE_INTERFACE_VERSION()":"infinite","accumulatedAssetB()":"3302","allTimeInterest()":"2906","allowance(address,address)":"infinite","approve(address,uint256)":"infinite","balanceOf(address)":"infinite","baseAsset()":"3231","buy()":"infinite","decimals()":"infinite","deposit(uint256,address)":"infinite","initialize(string,string,address,address,address,address)":"infinite","interestEarned()":"infinite","lastDeposit()":"2774","name()":"infinite","owner()":"3148","pause()":"infinite","paused()":"2942","proxiableUUID()":"infinite","quoteAsset()":"3362","registry()":"infinite","reinitialize(string,string,address,address,address,address,uint64)":"infinite","renounceOwnership()":"infinite","symbol()":"infinite","totalSupply()":"2733","totalValuation()":"infinite","transfer(address,uint256)":"infinite","transferFrom(address,address,uint256)":"infinite","transferOwnership(address)":"infinite","unitPrice()":"infinite","unpause()":"infinite","upgradeToAndCall(address,bytes)":"infinite","withdraw(uint256,address)":"infinite","yearnVault()":"infinite"},"internal":{"_authorizeUpgrade(address)":"infinite","_buy()":"infinite","_haircut(uint256)":"infinite","_handleWithdrawB(uint256,address)":"infinite","_processInterest()":"infinite"}},"methodIdentifiers":{"UPGRADE_INTERFACE_VERSION()":"ad3cb1cc","accumulatedAssetB()":"f7fde10f","allTimeInterest()":"6560bc80","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","baseAsset()":"cdf456e1","buy()":"a6f2ae3a","decimals()":"313ce567","deposit(uint256,address)":"6e553f65","initialize(string,string,address,address,address,address)":"e56f2fe4","interestEarned()":"374261ab","lastDeposit()":"36b77107","name()":"06fdde03","owner()":"8da5cb5b","pause()":"8456cb59","paused()":"5c975abb","proxiableUUID()":"52d1902d","quoteAsset()":"fdf262b7","registry()":"7b103999","reinitialize(string,string,address,address,address,address,uint64)":"88696f62","renounceOwnership()":"715018a6","symbol()":"95d89b41","totalSupply()":"18160ddd","totalValuation()":"295b9300","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","transferOwnership(address)":"f2fde38b","unitPrice()":"e73faa2d","unpause()":"3f4ba83a","upgradeToAndCall(address,bytes)":"4f1ef286","withdraw(uint256,address)":"00f714ce","yearnVault()":"9db5df46"}},"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EnforcedPause\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExpectedPause\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UUPSUnauthorizedCallContext\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"UUPSUnsupportedProxiableUUID\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"interest\",\"type\":\"uint256\"}],\"name\":\"Buy\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"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\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"UPGRADE_INTERFACE_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"accumulatedAssetB\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"allTimeInterest\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"baseAsset\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"buy\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"_assetA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_yearnVaultAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_assetB\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_registryAddress\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"interestEarned\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastDeposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"quoteAsset\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"registry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"_assetA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_yearnVaultAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_assetB\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_registryAddress\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"_version\",\"type\":\"uint64\"}],\"name\":\"reinitialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalValuation\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unitPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"yearnVault\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}],\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"EnforcedPause()\":[{\"details\":\"The operation failed because the contract is paused.\"}],\"ExpectedPause()\":[{\"details\":\"The operation failed because the contract is not paused.\"}],\"FailedInnerCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}],\"UUPSUnauthorizedCallContext()\":[{\"details\":\"The call is from an unauthorized context.\"}],\"UUPSUnsupportedProxiableUUID(bytes32)\":[{\"details\":\"The storage `slot` is unsupported as a UUID.\"}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Paused(address)\":{\"details\":\"Emitted when the pause is triggered by `account`.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"},\"Unpaused(address)\":{\"details\":\"Emitted when the pause is lifted by `account`.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"paused()\":{\"details\":\"Returns true if the contract is paused, and false otherwise.\"},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/vaults/BaluniV1YearnVault.sol\":\"BaluniV1YearnVault\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":20000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {ContextUpgradeable} from \\\"../utils/ContextUpgradeable.sol\\\";\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * The initial owner is set to the address provided by the deployer. This can\\n * later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract OwnableUpgradeable is Initializable, ContextUpgradeable {\\n    /// @custom:storage-location erc7201:openzeppelin.storage.Ownable\\n    struct OwnableStorage {\\n        address _owner;\\n    }\\n\\n    // keccak256(abi.encode(uint256(keccak256(\\\"openzeppelin.storage.Ownable\\\")) - 1)) & ~bytes32(uint256(0xff))\\n    bytes32 private constant OwnableStorageLocation = 0x9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300;\\n\\n    function _getOwnableStorage() private pure returns (OwnableStorage storage $) {\\n        assembly {\\n            $.slot := OwnableStorageLocation\\n        }\\n    }\\n\\n    /**\\n     * @dev The caller account is not authorized to perform an operation.\\n     */\\n    error OwnableUnauthorizedAccount(address account);\\n\\n    /**\\n     * @dev The owner is not a valid owner account. (eg. `address(0)`)\\n     */\\n    error OwnableInvalidOwner(address owner);\\n\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n    /**\\n     * @dev Initializes the contract setting the address provided by the deployer as the initial owner.\\n     */\\n    function __Ownable_init(address initialOwner) internal onlyInitializing {\\n        __Ownable_init_unchained(initialOwner);\\n    }\\n\\n    function __Ownable_init_unchained(address initialOwner) internal onlyInitializing {\\n        if (initialOwner == address(0)) {\\n            revert OwnableInvalidOwner(address(0));\\n        }\\n        _transferOwnership(initialOwner);\\n    }\\n\\n    /**\\n     * @dev Throws if called by any account other than the owner.\\n     */\\n    modifier onlyOwner() {\\n        _checkOwner();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Returns the address of the current owner.\\n     */\\n    function owner() public view virtual returns (address) {\\n        OwnableStorage storage $ = _getOwnableStorage();\\n        return $._owner;\\n    }\\n\\n    /**\\n     * @dev Throws if the sender is not the owner.\\n     */\\n    function _checkOwner() internal view virtual {\\n        if (owner() != _msgSender()) {\\n            revert OwnableUnauthorizedAccount(_msgSender());\\n        }\\n    }\\n\\n    /**\\n     * @dev Leaves the contract without owner. It will not be possible to call\\n     * `onlyOwner` functions. Can only be called by the current owner.\\n     *\\n     * NOTE: Renouncing ownership will leave the contract without an owner,\\n     * thereby disabling any functionality that is only available to the owner.\\n     */\\n    function renounceOwnership() public virtual onlyOwner {\\n        _transferOwnership(address(0));\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public virtual onlyOwner {\\n        if (newOwner == address(0)) {\\n            revert OwnableInvalidOwner(address(0));\\n        }\\n        _transferOwnership(newOwner);\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Internal function without access restriction.\\n     */\\n    function _transferOwnership(address newOwner) internal virtual {\\n        OwnableStorage storage $ = _getOwnableStorage();\\n        address oldOwner = $._owner;\\n        $._owner = newOwner;\\n        emit OwnershipTransferred(oldOwner, newOwner);\\n    }\\n}\\n\",\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n *     function initialize() initializer public {\\n *         __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n *     }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n *     function initializeV2() reinitializer(2) public {\\n *         __ERC20Permit_init(\\\"MyToken\\\");\\n *     }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n *     _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n    /**\\n     * @dev Storage of the initializable contract.\\n     *\\n     * It's implemented on a custom ERC-7201 namespace to reduce the risk of storage collisions\\n     * when using with upgradeable contracts.\\n     *\\n     * @custom:storage-location erc7201:openzeppelin.storage.Initializable\\n     */\\n    struct InitializableStorage {\\n        /**\\n         * @dev Indicates that the contract has been initialized.\\n         */\\n        uint64 _initialized;\\n        /**\\n         * @dev Indicates that the contract is in the process of being initialized.\\n         */\\n        bool _initializing;\\n    }\\n\\n    // keccak256(abi.encode(uint256(keccak256(\\\"openzeppelin.storage.Initializable\\\")) - 1)) & ~bytes32(uint256(0xff))\\n    bytes32 private constant INITIALIZABLE_STORAGE = 0xf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00;\\n\\n    /**\\n     * @dev The contract is already initialized.\\n     */\\n    error InvalidInitialization();\\n\\n    /**\\n     * @dev The contract is not initializing.\\n     */\\n    error NotInitializing();\\n\\n    /**\\n     * @dev Triggered when the contract has been initialized or reinitialized.\\n     */\\n    event Initialized(uint64 version);\\n\\n    /**\\n     * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n     * `onlyInitializing` functions can be used to initialize parent contracts.\\n     *\\n     * Similar to `reinitializer(1)`, except that in the context of a constructor an `initializer` may be invoked any\\n     * number of times. This behavior in the constructor can be useful during testing and is not expected to be used in\\n     * production.\\n     *\\n     * Emits an {Initialized} event.\\n     */\\n    modifier initializer() {\\n        // solhint-disable-next-line var-name-mixedcase\\n        InitializableStorage storage $ = _getInitializableStorage();\\n\\n        // Cache values to avoid duplicated sloads\\n        bool isTopLevelCall = !$._initializing;\\n        uint64 initialized = $._initialized;\\n\\n        // Allowed calls:\\n        // - initialSetup: the contract is not in the initializing state and no previous version was\\n        //                 initialized\\n        // - construction: the contract is initialized at version 1 (no reininitialization) and the\\n        //                 current contract is just being deployed\\n        bool initialSetup = initialized == 0 && isTopLevelCall;\\n        bool construction = initialized == 1 && address(this).code.length == 0;\\n\\n        if (!initialSetup && !construction) {\\n            revert InvalidInitialization();\\n        }\\n        $._initialized = 1;\\n        if (isTopLevelCall) {\\n            $._initializing = true;\\n        }\\n        _;\\n        if (isTopLevelCall) {\\n            $._initializing = false;\\n            emit Initialized(1);\\n        }\\n    }\\n\\n    /**\\n     * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n     * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n     * used to initialize parent contracts.\\n     *\\n     * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n     * are added through upgrades and that require initialization.\\n     *\\n     * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n     * cannot be nested. If one is invoked in the context of another, execution will revert.\\n     *\\n     * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n     * a contract, executing them in the right order is up to the developer or operator.\\n     *\\n     * WARNING: Setting the version to 2**64 - 1 will prevent any future reinitialization.\\n     *\\n     * Emits an {Initialized} event.\\n     */\\n    modifier reinitializer(uint64 version) {\\n        // solhint-disable-next-line var-name-mixedcase\\n        InitializableStorage storage $ = _getInitializableStorage();\\n\\n        if ($._initializing || $._initialized >= version) {\\n            revert InvalidInitialization();\\n        }\\n        $._initialized = version;\\n        $._initializing = true;\\n        _;\\n        $._initializing = false;\\n        emit Initialized(version);\\n    }\\n\\n    /**\\n     * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n     * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n     */\\n    modifier onlyInitializing() {\\n        _checkInitializing();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Reverts if the contract is not in an initializing state. See {onlyInitializing}.\\n     */\\n    function _checkInitializing() internal view virtual {\\n        if (!_isInitializing()) {\\n            revert NotInitializing();\\n        }\\n    }\\n\\n    /**\\n     * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n     * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n     * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n     * through proxies.\\n     *\\n     * Emits an {Initialized} event the first time it is successfully executed.\\n     */\\n    function _disableInitializers() internal virtual {\\n        // solhint-disable-next-line var-name-mixedcase\\n        InitializableStorage storage $ = _getInitializableStorage();\\n\\n        if ($._initializing) {\\n            revert InvalidInitialization();\\n        }\\n        if ($._initialized != type(uint64).max) {\\n            $._initialized = type(uint64).max;\\n            emit Initialized(type(uint64).max);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n     */\\n    function _getInitializedVersion() internal view returns (uint64) {\\n        return _getInitializableStorage()._initialized;\\n    }\\n\\n    /**\\n     * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n     */\\n    function _isInitializing() internal view returns (bool) {\\n        return _getInitializableStorage()._initializing;\\n    }\\n\\n    /**\\n     * @dev Returns a pointer to the storage namespace.\\n     */\\n    // solhint-disable-next-line var-name-mixedcase\\n    function _getInitializableStorage() private pure returns (InitializableStorage storage $) {\\n        assembly {\\n            $.slot := INITIALIZABLE_STORAGE\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/utils/UUPSUpgradeable.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC1822Proxiable} from \\\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\\\";\\nimport {ERC1967Utils} from \\\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\\\";\\nimport {Initializable} from \\\"./Initializable.sol\\\";\\n\\n/**\\n * @dev An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an\\n * {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy.\\n *\\n * A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is\\n * reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing\\n * `UUPSUpgradeable` with a custom implementation of upgrades.\\n *\\n * The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism.\\n */\\nabstract contract UUPSUpgradeable is Initializable, IERC1822Proxiable {\\n    /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\\n    address private immutable __self = address(this);\\n\\n    /**\\n     * @dev The version of the upgrade interface of the contract. If this getter is missing, both `upgradeTo(address)`\\n     * and `upgradeToAndCall(address,bytes)` are present, and `upgradeTo` must be used if no function should be called,\\n     * while `upgradeToAndCall` will invoke the `receive` function if the second argument is the empty byte string.\\n     * If the getter returns `\\\"5.0.0\\\"`, only `upgradeToAndCall(address,bytes)` is present, and the second argument must\\n     * be the empty byte string if no function should be called, making it impossible to invoke the `receive` function\\n     * during an upgrade.\\n     */\\n    string public constant UPGRADE_INTERFACE_VERSION = \\\"5.0.0\\\";\\n\\n    /**\\n     * @dev The call is from an unauthorized context.\\n     */\\n    error UUPSUnauthorizedCallContext();\\n\\n    /**\\n     * @dev The storage `slot` is unsupported as a UUID.\\n     */\\n    error UUPSUnsupportedProxiableUUID(bytes32 slot);\\n\\n    /**\\n     * @dev Check that the execution is being performed through a delegatecall call and that the execution context is\\n     * a proxy contract with an implementation (as defined in ERC1967) pointing to self. This should only be the case\\n     * for UUPS and transparent proxies that are using the current contract as their implementation. Execution of a\\n     * function through ERC1167 minimal proxies (clones) would not normally pass this test, but is not guaranteed to\\n     * fail.\\n     */\\n    modifier onlyProxy() {\\n        _checkProxy();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Check that the execution is not being performed through a delegate call. This allows a function to be\\n     * callable on the implementing contract but not through proxies.\\n     */\\n    modifier notDelegated() {\\n        _checkNotDelegated();\\n        _;\\n    }\\n\\n    function __UUPSUpgradeable_init() internal onlyInitializing {\\n    }\\n\\n    function __UUPSUpgradeable_init_unchained() internal onlyInitializing {\\n    }\\n    /**\\n     * @dev Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the\\n     * implementation. It is used to validate the implementation's compatibility when performing an upgrade.\\n     *\\n     * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n     * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n     * function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\\n     */\\n    function proxiableUUID() external view virtual notDelegated returns (bytes32) {\\n        return ERC1967Utils.IMPLEMENTATION_SLOT;\\n    }\\n\\n    /**\\n     * @dev Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call\\n     * encoded in `data`.\\n     *\\n     * Calls {_authorizeUpgrade}.\\n     *\\n     * Emits an {Upgraded} event.\\n     *\\n     * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\\n     */\\n    function upgradeToAndCall(address newImplementation, bytes memory data) public payable virtual onlyProxy {\\n        _authorizeUpgrade(newImplementation);\\n        _upgradeToAndCallUUPS(newImplementation, data);\\n    }\\n\\n    /**\\n     * @dev Reverts if the execution is not performed via delegatecall or the execution\\n     * context is not of a proxy with an ERC1967-compliant implementation pointing to self.\\n     * See {_onlyProxy}.\\n     */\\n    function _checkProxy() internal view virtual {\\n        if (\\n            address(this) == __self || // Must be called through delegatecall\\n            ERC1967Utils.getImplementation() != __self // Must be called through an active proxy\\n        ) {\\n            revert UUPSUnauthorizedCallContext();\\n        }\\n    }\\n\\n    /**\\n     * @dev Reverts if the execution is performed via delegatecall.\\n     * See {notDelegated}.\\n     */\\n    function _checkNotDelegated() internal view virtual {\\n        if (address(this) != __self) {\\n            // Must not be called through delegatecall\\n            revert UUPSUnauthorizedCallContext();\\n        }\\n    }\\n\\n    /**\\n     * @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract. Called by\\n     * {upgradeToAndCall}.\\n     *\\n     * Normally, this function will use an xref:access.adoc[access control] modifier such as {Ownable-onlyOwner}.\\n     *\\n     * ```solidity\\n     * function _authorizeUpgrade(address) internal onlyOwner {}\\n     * ```\\n     */\\n    function _authorizeUpgrade(address newImplementation) internal virtual;\\n\\n    /**\\n     * @dev Performs an implementation upgrade with a security check for UUPS proxies, and additional setup call.\\n     *\\n     * As a security check, {proxiableUUID} is invoked in the new implementation, and the return value\\n     * is expected to be the implementation slot in ERC1967.\\n     *\\n     * Emits an {IERC1967-Upgraded} event.\\n     */\\n    function _upgradeToAndCallUUPS(address newImplementation, bytes memory data) private {\\n        try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n            if (slot != ERC1967Utils.IMPLEMENTATION_SLOT) {\\n                revert UUPSUnsupportedProxiableUUID(slot);\\n            }\\n            ERC1967Utils.upgradeToAndCall(newImplementation, data);\\n        } catch {\\n            // The implementation is not UUPS\\n            revert ERC1967Utils.ERC1967InvalidImplementation(newImplementation);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x3f13b947637c4969c0644cab4ef399cdc4b67f101463b8775c5a43b118558e53\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/ERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"@openzeppelin/contracts/token/ERC20/IERC20.sol\\\";\\nimport {IERC20Metadata} from \\\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\\\";\\nimport {ContextUpgradeable} from \\\"../../utils/ContextUpgradeable.sol\\\";\\nimport {IERC20Errors} from \\\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\\\";\\nimport {Initializable} from \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC20} interface.\\n *\\n * This implementation is agnostic to the way tokens are created. This means\\n * that a supply mechanism has to be added in a derived contract using {_mint}.\\n *\\n * TIP: For a detailed writeup see our guide\\n * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\\n * to implement supply mechanisms].\\n *\\n * The default value of {decimals} is 18. To change this, you should override\\n * this function so it returns a different value.\\n *\\n * We have followed general OpenZeppelin Contracts guidelines: functions revert\\n * instead returning `false` on failure. This behavior is nonetheless\\n * conventional and does not conflict with the expectations of ERC20\\n * applications.\\n *\\n * Additionally, an {Approval} event is emitted on calls to {transferFrom}.\\n * This allows applications to reconstruct the allowance for all accounts just\\n * by listening to said events. Other implementations of the EIP may not emit\\n * these events, as it isn't required by the specification.\\n */\\nabstract contract ERC20Upgradeable is Initializable, ContextUpgradeable, IERC20, IERC20Metadata, IERC20Errors {\\n    /// @custom:storage-location erc7201:openzeppelin.storage.ERC20\\n    struct ERC20Storage {\\n        mapping(address account => uint256) _balances;\\n\\n        mapping(address account => mapping(address spender => uint256)) _allowances;\\n\\n        uint256 _totalSupply;\\n\\n        string _name;\\n        string _symbol;\\n    }\\n\\n    // keccak256(abi.encode(uint256(keccak256(\\\"openzeppelin.storage.ERC20\\\")) - 1)) & ~bytes32(uint256(0xff))\\n    bytes32 private constant ERC20StorageLocation = 0x52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00;\\n\\n    function _getERC20Storage() private pure returns (ERC20Storage storage $) {\\n        assembly {\\n            $.slot := ERC20StorageLocation\\n        }\\n    }\\n\\n    /**\\n     * @dev Sets the values for {name} and {symbol}.\\n     *\\n     * All two of these values are immutable: they can only be set once during\\n     * construction.\\n     */\\n    function __ERC20_init(string memory name_, string memory symbol_) internal onlyInitializing {\\n        __ERC20_init_unchained(name_, symbol_);\\n    }\\n\\n    function __ERC20_init_unchained(string memory name_, string memory symbol_) internal onlyInitializing {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        $._name = name_;\\n        $._symbol = symbol_;\\n    }\\n\\n    /**\\n     * @dev Returns the name of the token.\\n     */\\n    function name() public view virtual returns (string memory) {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        return $._name;\\n    }\\n\\n    /**\\n     * @dev Returns the symbol of the token, usually a shorter version of the\\n     * name.\\n     */\\n    function symbol() public view virtual returns (string memory) {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        return $._symbol;\\n    }\\n\\n    /**\\n     * @dev Returns the number of decimals used to get its user representation.\\n     * For example, if `decimals` equals `2`, a balance of `505` tokens should\\n     * be displayed to a user as `5.05` (`505 / 10 ** 2`).\\n     *\\n     * Tokens usually opt for a value of 18, imitating the relationship between\\n     * Ether and Wei. This is the default value returned by this function, unless\\n     * it's overridden.\\n     *\\n     * NOTE: This information is only used for _display_ purposes: it in\\n     * no way affects any of the arithmetic of the contract, including\\n     * {IERC20-balanceOf} and {IERC20-transfer}.\\n     */\\n    function decimals() public view virtual returns (uint8) {\\n        return 18;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-totalSupply}.\\n     */\\n    function totalSupply() public view virtual returns (uint256) {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        return $._totalSupply;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-balanceOf}.\\n     */\\n    function balanceOf(address account) public view virtual returns (uint256) {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        return $._balances[account];\\n    }\\n\\n    /**\\n     * @dev See {IERC20-transfer}.\\n     *\\n     * Requirements:\\n     *\\n     * - `to` cannot be the zero address.\\n     * - the caller must have a balance of at least `value`.\\n     */\\n    function transfer(address to, uint256 value) public virtual returns (bool) {\\n        address owner = _msgSender();\\n        _transfer(owner, to, value);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-allowance}.\\n     */\\n    function allowance(address owner, address spender) public view virtual returns (uint256) {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        return $._allowances[owner][spender];\\n    }\\n\\n    /**\\n     * @dev See {IERC20-approve}.\\n     *\\n     * NOTE: If `value` is the maximum `uint256`, the allowance is not updated on\\n     * `transferFrom`. This is semantically equivalent to an infinite approval.\\n     *\\n     * Requirements:\\n     *\\n     * - `spender` cannot be the zero address.\\n     */\\n    function approve(address spender, uint256 value) public virtual returns (bool) {\\n        address owner = _msgSender();\\n        _approve(owner, spender, value);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-transferFrom}.\\n     *\\n     * Emits an {Approval} event indicating the updated allowance. This is not\\n     * required by the EIP. See the note at the beginning of {ERC20}.\\n     *\\n     * NOTE: Does not update the allowance if the current allowance\\n     * is the maximum `uint256`.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` and `to` cannot be the zero address.\\n     * - `from` must have a balance of at least `value`.\\n     * - the caller must have allowance for ``from``'s tokens of at least\\n     * `value`.\\n     */\\n    function transferFrom(address from, address to, uint256 value) public virtual returns (bool) {\\n        address spender = _msgSender();\\n        _spendAllowance(from, spender, value);\\n        _transfer(from, to, value);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to`.\\n     *\\n     * This internal function is equivalent to {transfer}, and can be used to\\n     * e.g. implement automatic token fees, slashing mechanisms, etc.\\n     *\\n     * Emits a {Transfer} event.\\n     *\\n     * NOTE: This function is not virtual, {_update} should be overridden instead.\\n     */\\n    function _transfer(address from, address to, uint256 value) internal {\\n        if (from == address(0)) {\\n            revert ERC20InvalidSender(address(0));\\n        }\\n        if (to == address(0)) {\\n            revert ERC20InvalidReceiver(address(0));\\n        }\\n        _update(from, to, value);\\n    }\\n\\n    /**\\n     * @dev Transfers a `value` amount of tokens from `from` to `to`, or alternatively mints (or burns) if `from`\\n     * (or `to`) is the zero address. All customizations to transfers, mints, and burns should be done by overriding\\n     * this function.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _update(address from, address to, uint256 value) internal virtual {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        if (from == address(0)) {\\n            // Overflow check required: The rest of the code assumes that totalSupply never overflows\\n            $._totalSupply += value;\\n        } else {\\n            uint256 fromBalance = $._balances[from];\\n            if (fromBalance < value) {\\n                revert ERC20InsufficientBalance(from, fromBalance, value);\\n            }\\n            unchecked {\\n                // Overflow not possible: value <= fromBalance <= totalSupply.\\n                $._balances[from] = fromBalance - value;\\n            }\\n        }\\n\\n        if (to == address(0)) {\\n            unchecked {\\n                // Overflow not possible: value <= totalSupply or value <= fromBalance <= totalSupply.\\n                $._totalSupply -= value;\\n            }\\n        } else {\\n            unchecked {\\n                // Overflow not possible: balance + value is at most totalSupply, which we know fits into a uint256.\\n                $._balances[to] += value;\\n            }\\n        }\\n\\n        emit Transfer(from, to, value);\\n    }\\n\\n    /**\\n     * @dev Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0).\\n     * Relies on the `_update` mechanism\\n     *\\n     * Emits a {Transfer} event with `from` set to the zero address.\\n     *\\n     * NOTE: This function is not virtual, {_update} should be overridden instead.\\n     */\\n    function _mint(address account, uint256 value) internal {\\n        if (account == address(0)) {\\n            revert ERC20InvalidReceiver(address(0));\\n        }\\n        _update(address(0), account, value);\\n    }\\n\\n    /**\\n     * @dev Destroys a `value` amount of tokens from `account`, lowering the total supply.\\n     * Relies on the `_update` mechanism.\\n     *\\n     * Emits a {Transfer} event with `to` set to the zero address.\\n     *\\n     * NOTE: This function is not virtual, {_update} should be overridden instead\\n     */\\n    function _burn(address account, uint256 value) internal {\\n        if (account == address(0)) {\\n            revert ERC20InvalidSender(address(0));\\n        }\\n        _update(account, address(0), value);\\n    }\\n\\n    /**\\n     * @dev Sets `value` as the allowance of `spender` over the `owner` s tokens.\\n     *\\n     * This internal function is equivalent to `approve`, and can be used to\\n     * e.g. set automatic allowances for certain subsystems, etc.\\n     *\\n     * Emits an {Approval} event.\\n     *\\n     * Requirements:\\n     *\\n     * - `owner` cannot be the zero address.\\n     * - `spender` cannot be the zero address.\\n     *\\n     * Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument.\\n     */\\n    function _approve(address owner, address spender, uint256 value) internal {\\n        _approve(owner, spender, value, true);\\n    }\\n\\n    /**\\n     * @dev Variant of {_approve} with an optional flag to enable or disable the {Approval} event.\\n     *\\n     * By default (when calling {_approve}) the flag is set to true. On the other hand, approval changes made by\\n     * `_spendAllowance` during the `transferFrom` operation set the flag to false. This saves gas by not emitting any\\n     * `Approval` event during `transferFrom` operations.\\n     *\\n     * Anyone who wishes to continue emitting `Approval` events on the`transferFrom` operation can force the flag to\\n     * true using the following override:\\n     * ```\\n     * function _approve(address owner, address spender, uint256 value, bool) internal virtual override {\\n     *     super._approve(owner, spender, value, true);\\n     * }\\n     * ```\\n     *\\n     * Requirements are the same as {_approve}.\\n     */\\n    function _approve(address owner, address spender, uint256 value, bool emitEvent) internal virtual {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        if (owner == address(0)) {\\n            revert ERC20InvalidApprover(address(0));\\n        }\\n        if (spender == address(0)) {\\n            revert ERC20InvalidSpender(address(0));\\n        }\\n        $._allowances[owner][spender] = value;\\n        if (emitEvent) {\\n            emit Approval(owner, spender, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Updates `owner` s allowance for `spender` based on spent `value`.\\n     *\\n     * Does not update the allowance value in case of infinite allowance.\\n     * Revert if not enough allowance is available.\\n     *\\n     * Does not emit an {Approval} event.\\n     */\\n    function _spendAllowance(address owner, address spender, uint256 value) internal virtual {\\n        uint256 currentAllowance = allowance(owner, spender);\\n        if (currentAllowance != type(uint256).max) {\\n            if (currentAllowance < value) {\\n                revert ERC20InsufficientAllowance(spender, currentAllowance, value);\\n            }\\n            unchecked {\\n                _approve(owner, spender, currentAllowance - value, false);\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x9a1766b1921bf91b3e61eb53c7a6e70725254befd4bdcbbcd3af40bd9f66856f\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)\\n\\npragma solidity ^0.8.20;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n    function __Context_init() internal onlyInitializing {\\n    }\\n\\n    function __Context_init_unchained() internal onlyInitializing {\\n    }\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n\\n    function _contextSuffixLength() internal view virtual returns (uint256) {\\n        return 0;\\n    }\\n}\\n\",\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/Pausable.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {ContextUpgradeable} from \\\"../utils/ContextUpgradeable.sol\\\";\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Contract module which allows children to implement an emergency stop\\n * mechanism that can be triggered by an authorized account.\\n *\\n * This module is used through inheritance. It will make available the\\n * modifiers `whenNotPaused` and `whenPaused`, which can be applied to\\n * the functions of your contract. Note that they will not be pausable by\\n * simply including this module, only once the modifiers are put in place.\\n */\\nabstract contract PausableUpgradeable is Initializable, ContextUpgradeable {\\n    /// @custom:storage-location erc7201:openzeppelin.storage.Pausable\\n    struct PausableStorage {\\n        bool _paused;\\n    }\\n\\n    // keccak256(abi.encode(uint256(keccak256(\\\"openzeppelin.storage.Pausable\\\")) - 1)) & ~bytes32(uint256(0xff))\\n    bytes32 private constant PausableStorageLocation = 0xcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300;\\n\\n    function _getPausableStorage() private pure returns (PausableStorage storage $) {\\n        assembly {\\n            $.slot := PausableStorageLocation\\n        }\\n    }\\n\\n    /**\\n     * @dev Emitted when the pause is triggered by `account`.\\n     */\\n    event Paused(address account);\\n\\n    /**\\n     * @dev Emitted when the pause is lifted by `account`.\\n     */\\n    event Unpaused(address account);\\n\\n    /**\\n     * @dev The operation failed because the contract is paused.\\n     */\\n    error EnforcedPause();\\n\\n    /**\\n     * @dev The operation failed because the contract is not paused.\\n     */\\n    error ExpectedPause();\\n\\n    /**\\n     * @dev Initializes the contract in unpaused state.\\n     */\\n    function __Pausable_init() internal onlyInitializing {\\n        __Pausable_init_unchained();\\n    }\\n\\n    function __Pausable_init_unchained() internal onlyInitializing {\\n        PausableStorage storage $ = _getPausableStorage();\\n        $._paused = false;\\n    }\\n\\n    /**\\n     * @dev Modifier to make a function callable only when the contract is not paused.\\n     *\\n     * Requirements:\\n     *\\n     * - The contract must not be paused.\\n     */\\n    modifier whenNotPaused() {\\n        _requireNotPaused();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Modifier to make a function callable only when the contract is paused.\\n     *\\n     * Requirements:\\n     *\\n     * - The contract must be paused.\\n     */\\n    modifier whenPaused() {\\n        _requirePaused();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Returns true if the contract is paused, and false otherwise.\\n     */\\n    function paused() public view virtual returns (bool) {\\n        PausableStorage storage $ = _getPausableStorage();\\n        return $._paused;\\n    }\\n\\n    /**\\n     * @dev Throws if the contract is paused.\\n     */\\n    function _requireNotPaused() internal view virtual {\\n        if (paused()) {\\n            revert EnforcedPause();\\n        }\\n    }\\n\\n    /**\\n     * @dev Throws if the contract is not paused.\\n     */\\n    function _requirePaused() internal view virtual {\\n        if (!paused()) {\\n            revert ExpectedPause();\\n        }\\n    }\\n\\n    /**\\n     * @dev Triggers stopped state.\\n     *\\n     * Requirements:\\n     *\\n     * - The contract must not be paused.\\n     */\\n    function _pause() internal virtual whenNotPaused {\\n        PausableStorage storage $ = _getPausableStorage();\\n        $._paused = true;\\n        emit Paused(_msgSender());\\n    }\\n\\n    /**\\n     * @dev Returns to normal state.\\n     *\\n     * Requirements:\\n     *\\n     * - The contract must be paused.\\n     */\\n    function _unpause() internal virtual whenPaused {\\n        PausableStorage storage $ = _getPausableStorage();\\n        $._paused = false;\\n        emit Unpaused(_msgSender());\\n    }\\n}\\n\",\"keccak256\":\"0x92915b7f7f642c6be3f65bfd1522feb5d5b6ef25f755f4dbb51df32c868f2f97\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/ReentrancyGuard.sol)\\n\\npragma solidity ^0.8.20;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Contract module that helps prevent reentrant calls to a function.\\n *\\n * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier\\n * available, which can be applied to functions to make sure there are no nested\\n * (reentrant) calls to them.\\n *\\n * Note that because there is a single `nonReentrant` guard, functions marked as\\n * `nonReentrant` may not call one another. This can be worked around by making\\n * those functions `private`, and then adding `external` `nonReentrant` entry\\n * points to them.\\n *\\n * TIP: If you would like to learn more about reentrancy and alternative ways\\n * to protect against it, check out our blog post\\n * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].\\n */\\nabstract contract ReentrancyGuardUpgradeable is Initializable {\\n    // Booleans are more expensive than uint256 or any type that takes up a full\\n    // word because each write operation emits an extra SLOAD to first read the\\n    // slot's contents, replace the bits taken up by the boolean, and then write\\n    // back. This is the compiler's defense against contract upgrades and\\n    // pointer aliasing, and it cannot be disabled.\\n\\n    // The values being non-zero value makes deployment a bit more expensive,\\n    // but in exchange the refund on every call to nonReentrant will be lower in\\n    // amount. Since refunds are capped to a percentage of the total\\n    // transaction's gas, it is best to keep them low in cases like this one, to\\n    // increase the likelihood of the full refund coming into effect.\\n    uint256 private constant NOT_ENTERED = 1;\\n    uint256 private constant ENTERED = 2;\\n\\n    /// @custom:storage-location erc7201:openzeppelin.storage.ReentrancyGuard\\n    struct ReentrancyGuardStorage {\\n        uint256 _status;\\n    }\\n\\n    // keccak256(abi.encode(uint256(keccak256(\\\"openzeppelin.storage.ReentrancyGuard\\\")) - 1)) & ~bytes32(uint256(0xff))\\n    bytes32 private constant ReentrancyGuardStorageLocation = 0x9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00;\\n\\n    function _getReentrancyGuardStorage() private pure returns (ReentrancyGuardStorage storage $) {\\n        assembly {\\n            $.slot := ReentrancyGuardStorageLocation\\n        }\\n    }\\n\\n    /**\\n     * @dev Unauthorized reentrant call.\\n     */\\n    error ReentrancyGuardReentrantCall();\\n\\n    function __ReentrancyGuard_init() internal onlyInitializing {\\n        __ReentrancyGuard_init_unchained();\\n    }\\n\\n    function __ReentrancyGuard_init_unchained() internal onlyInitializing {\\n        ReentrancyGuardStorage storage $ = _getReentrancyGuardStorage();\\n        $._status = NOT_ENTERED;\\n    }\\n\\n    /**\\n     * @dev Prevents a contract from calling itself, directly or indirectly.\\n     * Calling a `nonReentrant` function from another `nonReentrant`\\n     * function is not supported. It is possible to prevent this from happening\\n     * by making the `nonReentrant` function external, and making it call a\\n     * `private` function that does the actual work.\\n     */\\n    modifier nonReentrant() {\\n        _nonReentrantBefore();\\n        _;\\n        _nonReentrantAfter();\\n    }\\n\\n    function _nonReentrantBefore() private {\\n        ReentrancyGuardStorage storage $ = _getReentrancyGuardStorage();\\n        // On the first call to nonReentrant, _status will be NOT_ENTERED\\n        if ($._status == ENTERED) {\\n            revert ReentrancyGuardReentrantCall();\\n        }\\n\\n        // Any calls to nonReentrant after this point will fail\\n        $._status = ENTERED;\\n    }\\n\\n    function _nonReentrantAfter() private {\\n        ReentrancyGuardStorage storage $ = _getReentrancyGuardStorage();\\n        // By storing the original value once again, a refund is triggered (see\\n        // https://eips.ethereum.org/EIPS/eip-2200)\\n        $._status = NOT_ENTERED;\\n    }\\n\\n    /**\\n     * @dev Returns true if the reentrancy guard is currently set to \\\"entered\\\", which indicates there is a\\n     * `nonReentrant` function in the call stack.\\n     */\\n    function _reentrancyGuardEntered() internal view returns (bool) {\\n        ReentrancyGuardStorage storage $ = _getReentrancyGuardStorage();\\n        return $._status == ENTERED;\\n    }\\n}\\n\",\"keccak256\":\"0xb44e086e941292cdc7f440de51478493894ef0b1aeccb0c4047445919f667f74\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n    /**\\n     * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n     * address.\\n     *\\n     * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n     * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n     * function revert if invoked through a proxy.\\n     */\\n    function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x2a1f9944df2015c081d89cd41ba22ffaf10aa6285969f0dc612b235cc448999c\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/draft-IERC6093.sol)\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Standard ERC20 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC20 tokens.\\n */\\ninterface IERC20Errors {\\n    /**\\n     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param balance Current balance for the interacting account.\\n     * @param needed Minimum amount required to perform a transfer.\\n     */\\n    error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC20InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC20InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\\n     * @param spender Address that may be allowed to operate on tokens without being their owner.\\n     * @param allowance Amount of tokens a `spender` is allowed to operate with.\\n     * @param needed Minimum amount required to perform a transfer.\\n     */\\n    error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC20InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `spender` to be approved. Used in approvals.\\n     * @param spender Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC20InvalidSpender(address spender);\\n}\\n\\n/**\\n * @dev Standard ERC721 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC721 tokens.\\n */\\ninterface IERC721Errors {\\n    /**\\n     * @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20.\\n     * Used in balance queries.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC721InvalidOwner(address owner);\\n\\n    /**\\n     * @dev Indicates a `tokenId` whose `owner` is the zero address.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC721NonexistentToken(uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates an error related to the ownership over a particular token. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param tokenId Identifier number of a token.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC721InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC721InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC721InsufficientApproval(address operator, uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC721InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC721InvalidOperator(address operator);\\n}\\n\\n/**\\n * @dev Standard ERC1155 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC1155 tokens.\\n */\\ninterface IERC1155Errors {\\n    /**\\n     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param balance Current balance for the interacting account.\\n     * @param needed Minimum amount required to perform a transfer.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC1155InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC1155InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC1155InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC1155MissingApprovalForAll(address operator, address owner);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC1155InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC1155InvalidOperator(address operator);\\n\\n    /**\\n     * @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\\n     * Used in batch transfers.\\n     * @param idsLength Length of the array of token identifiers\\n     * @param valuesLength Length of the array of token amounts\\n     */\\n    error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength);\\n}\\n\",\"keccak256\":\"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/ERC1967/ERC1967Utils.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IBeacon} from \\\"../beacon/IBeacon.sol\\\";\\nimport {Address} from \\\"../../utils/Address.sol\\\";\\nimport {StorageSlot} from \\\"../../utils/StorageSlot.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n */\\nlibrary ERC1967Utils {\\n    // We re-declare ERC-1967 events here because they can't be used directly from IERC1967.\\n    // This will be fixed in Solidity 0.8.21. At that point we should remove these events.\\n    /**\\n     * @dev Emitted when the implementation is upgraded.\\n     */\\n    event Upgraded(address indexed implementation);\\n\\n    /**\\n     * @dev Emitted when the admin account has changed.\\n     */\\n    event AdminChanged(address previousAdmin, address newAdmin);\\n\\n    /**\\n     * @dev Emitted when the beacon is changed.\\n     */\\n    event BeaconUpgraded(address indexed beacon);\\n\\n    /**\\n     * @dev Storage slot with the address of the current implementation.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1.\\n     */\\n    // solhint-disable-next-line private-vars-leading-underscore\\n    bytes32 internal constant IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n    /**\\n     * @dev The `implementation` of the proxy is invalid.\\n     */\\n    error ERC1967InvalidImplementation(address implementation);\\n\\n    /**\\n     * @dev The `admin` of the proxy is invalid.\\n     */\\n    error ERC1967InvalidAdmin(address admin);\\n\\n    /**\\n     * @dev The `beacon` of the proxy is invalid.\\n     */\\n    error ERC1967InvalidBeacon(address beacon);\\n\\n    /**\\n     * @dev An upgrade function sees `msg.value > 0` that may be lost.\\n     */\\n    error ERC1967NonPayable();\\n\\n    /**\\n     * @dev Returns the current implementation address.\\n     */\\n    function getImplementation() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(IMPLEMENTATION_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new address in the EIP1967 implementation slot.\\n     */\\n    function _setImplementation(address newImplementation) private {\\n        if (newImplementation.code.length == 0) {\\n            revert ERC1967InvalidImplementation(newImplementation);\\n        }\\n        StorageSlot.getAddressSlot(IMPLEMENTATION_SLOT).value = newImplementation;\\n    }\\n\\n    /**\\n     * @dev Performs implementation upgrade with additional setup call if data is nonempty.\\n     * This function is payable only if the setup call is performed, otherwise `msg.value` is rejected\\n     * to avoid stuck value in the contract.\\n     *\\n     * Emits an {IERC1967-Upgraded} event.\\n     */\\n    function upgradeToAndCall(address newImplementation, bytes memory data) internal {\\n        _setImplementation(newImplementation);\\n        emit Upgraded(newImplementation);\\n\\n        if (data.length > 0) {\\n            Address.functionDelegateCall(newImplementation, data);\\n        } else {\\n            _checkNonPayable();\\n        }\\n    }\\n\\n    /**\\n     * @dev Storage slot with the admin of the contract.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1.\\n     */\\n    // solhint-disable-next-line private-vars-leading-underscore\\n    bytes32 internal constant ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n    /**\\n     * @dev Returns the current admin.\\n     *\\n     * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using\\n     * the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\\n     * `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\\n     */\\n    function getAdmin() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(ADMIN_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new address in the EIP1967 admin slot.\\n     */\\n    function _setAdmin(address newAdmin) private {\\n        if (newAdmin == address(0)) {\\n            revert ERC1967InvalidAdmin(address(0));\\n        }\\n        StorageSlot.getAddressSlot(ADMIN_SLOT).value = newAdmin;\\n    }\\n\\n    /**\\n     * @dev Changes the admin of the proxy.\\n     *\\n     * Emits an {IERC1967-AdminChanged} event.\\n     */\\n    function changeAdmin(address newAdmin) internal {\\n        emit AdminChanged(getAdmin(), newAdmin);\\n        _setAdmin(newAdmin);\\n    }\\n\\n    /**\\n     * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.beacon\\\" subtracted by 1.\\n     */\\n    // solhint-disable-next-line private-vars-leading-underscore\\n    bytes32 internal constant BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n    /**\\n     * @dev Returns the current beacon.\\n     */\\n    function getBeacon() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(BEACON_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new beacon in the EIP1967 beacon slot.\\n     */\\n    function _setBeacon(address newBeacon) private {\\n        if (newBeacon.code.length == 0) {\\n            revert ERC1967InvalidBeacon(newBeacon);\\n        }\\n\\n        StorageSlot.getAddressSlot(BEACON_SLOT).value = newBeacon;\\n\\n        address beaconImplementation = IBeacon(newBeacon).implementation();\\n        if (beaconImplementation.code.length == 0) {\\n            revert ERC1967InvalidImplementation(beaconImplementation);\\n        }\\n    }\\n\\n    /**\\n     * @dev Change the beacon and trigger a setup call if data is nonempty.\\n     * This function is payable only if the setup call is performed, otherwise `msg.value` is rejected\\n     * to avoid stuck value in the contract.\\n     *\\n     * Emits an {IERC1967-BeaconUpgraded} event.\\n     *\\n     * CAUTION: Invoking this function has no effect on an instance of {BeaconProxy} since v5, since\\n     * it uses an immutable beacon without looking at the value of the ERC-1967 beacon slot for\\n     * efficiency.\\n     */\\n    function upgradeBeaconToAndCall(address newBeacon, bytes memory data) internal {\\n        _setBeacon(newBeacon);\\n        emit BeaconUpgraded(newBeacon);\\n\\n        if (data.length > 0) {\\n            Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\\n        } else {\\n            _checkNonPayable();\\n        }\\n    }\\n\\n    /**\\n     * @dev Reverts if `msg.value` is not zero. It can be used to avoid `msg.value` stuck in the contract\\n     * if an upgrade doesn't perform an initialization call.\\n     */\\n    function _checkNonPayable() private {\\n        if (msg.value > 0) {\\n            revert ERC1967NonPayable();\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x06a78f9b3ee3e6d0eb4e4cd635ba49960bea34cac1db8c0a27c75f2319f1fd65\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n    /**\\n     * @dev Must return an address that can be used as a delegate call target.\\n     *\\n     * {UpgradeableBeacon} will check that this address is a contract.\\n     */\\n    function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n    /**\\n     * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n     * another (`to`).\\n     *\\n     * Note that `value` may be zero.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n    /**\\n     * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n     * a call to {approve}. `value` is the new allowance.\\n     */\\n    event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n    /**\\n     * @dev Returns the value of tokens in existence.\\n     */\\n    function totalSupply() external view returns (uint256);\\n\\n    /**\\n     * @dev Returns the value of tokens owned by `account`.\\n     */\\n    function balanceOf(address account) external view returns (uint256);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from the caller's account to `to`.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transfer(address to, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Returns the remaining number of tokens that `spender` will be\\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n     * zero by default.\\n     *\\n     * This value changes when {approve} or {transferFrom} are called.\\n     */\\n    function allowance(address owner, address spender) external view returns (uint256);\\n\\n    /**\\n     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\\n     * caller's tokens.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n     * that someone may use both the old and the new allowance by unfortunate\\n     * transaction ordering. One possible solution to mitigate this race\\n     * condition is to first reduce the spender's allowance to 0 and set the\\n     * desired value afterwards:\\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address spender, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to` using the\\n     * allowance mechanism. `value` is then deducted from the caller's\\n     * allowance.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(address from, address to, uint256 value) external returns (bool);\\n}\\n\",\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/extensions/IERC20Metadata.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"../IERC20.sol\\\";\\n\\n/**\\n * @dev Interface for the optional metadata functions from the ERC20 standard.\\n */\\ninterface IERC20Metadata is IERC20 {\\n    /**\\n     * @dev Returns the name of the token.\\n     */\\n    function name() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the symbol of the token.\\n     */\\n    function symbol() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the decimals places of the token.\\n     */\\n    function decimals() external view returns (uint8);\\n}\\n\",\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n    /**\\n     * @dev The ETH balance of the account is not enough to perform the operation.\\n     */\\n    error AddressInsufficientBalance(address account);\\n\\n    /**\\n     * @dev There's no code at `target` (it is not a contract).\\n     */\\n    error AddressEmptyCode(address target);\\n\\n    /**\\n     * @dev A call to an address target failed. The target may have reverted.\\n     */\\n    error FailedInnerCall();\\n\\n    /**\\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n     * `recipient`, forwarding all available gas and reverting on errors.\\n     *\\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n     * imposed by `transfer`, making them unable to receive funds via\\n     * `transfer`. {sendValue} removes this limitation.\\n     *\\n     * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n     *\\n     * IMPORTANT: because control is transferred to `recipient`, care must be\\n     * taken to not create reentrancy vulnerabilities. Consider using\\n     * {ReentrancyGuard} or the\\n     * https://solidity.readthedocs.io/en/v0.8.20/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n     */\\n    function sendValue(address payable recipient, uint256 amount) internal {\\n        if (address(this).balance < amount) {\\n            revert AddressInsufficientBalance(address(this));\\n        }\\n\\n        (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n        if (!success) {\\n            revert FailedInnerCall();\\n        }\\n    }\\n\\n    /**\\n     * @dev Performs a Solidity function call using a low level `call`. A\\n     * plain `call` is an unsafe replacement for a function call: use this\\n     * function instead.\\n     *\\n     * If `target` reverts with a revert reason or custom error, it is bubbled\\n     * up by this function (like regular Solidity function calls). However, if\\n     * the call reverted with no returned reason, this function reverts with a\\n     * {FailedInnerCall} error.\\n     *\\n     * Returns the raw returned data. To convert to the expected return value,\\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n     *\\n     * Requirements:\\n     *\\n     * - `target` must be a contract.\\n     * - calling `target` with `data` must not revert.\\n     */\\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, 0);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but also transferring `value` wei to `target`.\\n     *\\n     * Requirements:\\n     *\\n     * - the calling contract must have an ETH balance of at least `value`.\\n     * - the called Solidity function must be `payable`.\\n     */\\n    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n        if (address(this).balance < value) {\\n            revert AddressInsufficientBalance(address(this));\\n        }\\n        (bool success, bytes memory returndata) = target.call{value: value}(data);\\n        return verifyCallResultFromTarget(target, success, returndata);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a static call.\\n     */\\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n        (bool success, bytes memory returndata) = target.staticcall(data);\\n        return verifyCallResultFromTarget(target, success, returndata);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a delegate call.\\n     */\\n    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n        (bool success, bytes memory returndata) = target.delegatecall(data);\\n        return verifyCallResultFromTarget(target, success, returndata);\\n    }\\n\\n    /**\\n     * @dev Tool to verify that a low level call to smart-contract was successful, and reverts if the target\\n     * was not a contract or bubbling up the revert reason (falling back to {FailedInnerCall}) in case of an\\n     * unsuccessful call.\\n     */\\n    function verifyCallResultFromTarget(\\n        address target,\\n        bool success,\\n        bytes memory returndata\\n    ) internal view returns (bytes memory) {\\n        if (!success) {\\n            _revert(returndata);\\n        } else {\\n            // only check if target is a contract if the call was successful and the return data is empty\\n            // otherwise we already know that it was a contract\\n            if (returndata.length == 0 && target.code.length == 0) {\\n                revert AddressEmptyCode(target);\\n            }\\n            return returndata;\\n        }\\n    }\\n\\n    /**\\n     * @dev Tool to verify that a low level call was successful, and reverts if it wasn't, either by bubbling the\\n     * revert reason or with a default {FailedInnerCall} error.\\n     */\\n    function verifyCallResult(bool success, bytes memory returndata) internal pure returns (bytes memory) {\\n        if (!success) {\\n            _revert(returndata);\\n        } else {\\n            return returndata;\\n        }\\n    }\\n\\n    /**\\n     * @dev Reverts with returndata if present. Otherwise reverts with {FailedInnerCall}.\\n     */\\n    function _revert(bytes memory returndata) private pure {\\n        // Look for revert reason and bubble it up if present\\n        if (returndata.length > 0) {\\n            // The easiest way to bubble the revert reason is using memory via assembly\\n            /// @solidity memory-safe-assembly\\n            assembly {\\n                let returndata_size := mload(returndata)\\n                revert(add(32, returndata), returndata_size)\\n            }\\n        } else {\\n            revert FailedInnerCall();\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n *     bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n *     function _getImplementation() internal view returns (address) {\\n *         return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n *     }\\n *\\n *     function _setImplementation(address newImplementation) internal {\\n *         require(newImplementation.code.length > 0);\\n *         StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n *     }\\n * }\\n * ```\\n */\\nlibrary StorageSlot {\\n    struct AddressSlot {\\n        address value;\\n    }\\n\\n    struct BooleanSlot {\\n        bool value;\\n    }\\n\\n    struct Bytes32Slot {\\n        bytes32 value;\\n    }\\n\\n    struct Uint256Slot {\\n        uint256 value;\\n    }\\n\\n    struct StringSlot {\\n        string value;\\n    }\\n\\n    struct BytesSlot {\\n        bytes value;\\n    }\\n\\n    /**\\n     * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n     */\\n    function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n     */\\n    function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n     */\\n    function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n     */\\n    function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n     */\\n    function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n     */\\n    function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := store.slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n     */\\n    function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n     */\\n    function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := store.slot\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418\",\"license\":\"MIT\"},\"contracts/interfaces/IBaluniV1Oracle.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\n\\r\\ninterface IBaluniV1Oracle {\\r\\n    function convert(address fromToken, address toToken, uint256 amount) external view returns (uint256 valuation);\\r\\n\\r\\n    function convertScaled(\\r\\n        address fromToken,\\r\\n        address toToken,\\r\\n        uint256 amount\\r\\n    ) external view returns (uint256 valuation);\\r\\n}\\r\\n\",\"keccak256\":\"0x2bc62f7640b15a1772de630216f6fe6aa7a719cb6cf0255befdde19ec8de785a\",\"license\":\"GNU AGPLv3\"},\"contracts/interfaces/IBaluniV1Registry.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\n\\r\\n/**\\r\\n * @title IBaluniV1Registry\\r\\n * @dev Interface for the BaluniV1Registry contract.\\r\\n */\\r\\ninterface IBaluniV1Registry {\\r\\n    function setUniswapFactory(address _uniswapFactory) external;\\r\\n\\r\\n    function setUniswapRouter(address _uniswapRouter) external;\\r\\n\\r\\n    function setUniswapQuoter(address _uniswapQuoter) external;\\r\\n\\r\\n    function setBaluniAgentFactory(address _baluniAgentFactory) external;\\r\\n\\r\\n    function setBaluniPoolPeriphery(address _baluniPoolPeriphery) external;\\r\\n\\r\\n    function setBaluniSwapper(address _baluniSwapper) external;\\r\\n\\r\\n    function setBaluniOracle(address _baluniOracle) external;\\r\\n\\r\\n    function setBaluniPoolRegistry(address _baluniPoolRegistry) external;\\r\\n\\r\\n    function setBaluniDCAVaultRegistry(address _baluniPoolRegistry) external;\\r\\n\\r\\n    function setBaluniRebalancer(address _baluniRebalancer) external;\\r\\n\\r\\n    function setBaluniRouter(address _baluniRouter) external;\\r\\n\\r\\n    function setBaluniRegistry(address _baluniRegistry) external;\\r\\n\\r\\n    function setWNATIVE(address _WNATIVE) external;\\r\\n\\r\\n    function setUSDC(address _USDC) external;\\r\\n\\r\\n    function setREBALANCE_THRESHOLD(uint256 _REBALANCE_THRESHOLD) external;\\r\\n\\r\\n    function setTreasury(address _treasury) external;\\r\\n\\r\\n    function set1inchSpotAgg(address __1inchSpotAgg) external;\\r\\n\\r\\n    function setBPS_FEE(uint256 __BPS_FEE) external;\\r\\n\\r\\n    function setBaluniYearnVaultRegistry(address _baluniYearnVaultRegistry) external;\\r\\n\\r\\n    function setBaluniPoolZap(address _baluniPoolZap) external;\\r\\n\\r\\n    function setBaluniHyperPoolZap(address _baluniHyperPoolZap) external;\\r\\n\\r\\n    function getUniswapQuoter() external view returns (address);\\r\\n\\r\\n    function getUniswapFactory() external view returns (address);\\r\\n\\r\\n    function getUniswapRouter() external view returns (address);\\r\\n\\r\\n    function getBaluniSwapper() external view returns (address);\\r\\n\\r\\n    function getBaluniOracle() external view returns (address);\\r\\n\\r\\n    function getBaluniAgentFactory() external view returns (address);\\r\\n\\r\\n    function getBaluniPoolPeriphery() external view returns (address);\\r\\n\\r\\n    function getBaluniDCAVaultRegistry() external view returns (address);\\r\\n\\r\\n    function getBaluniPoolRegistry() external view returns (address);\\r\\n\\r\\n    function getBaluniRebalancer() external view returns (address);\\r\\n\\r\\n    function getBaluniRouter() external view returns (address);\\r\\n\\r\\n    function getBaluniRegistry() external view returns (address);\\r\\n\\r\\n    function getWNATIVE() external view returns (address);\\r\\n\\r\\n    function getUSDC() external view returns (address);\\r\\n\\r\\n    function get1inchSpotAgg() external view returns (address);\\r\\n\\r\\n    function getBPS_FEE() external view returns (uint256);\\r\\n\\r\\n    function getMAX_BPS_FEE() external view returns (uint256);\\r\\n\\r\\n    function getBPS_BASE() external view returns (uint256);\\r\\n\\r\\n    function getREBALANCE_THRESHOLD() external view returns (uint256);\\r\\n\\r\\n    function getTreasury() external view returns (address);\\r\\n\\r\\n    function setStaticOracle(address _staticOracle) external;\\r\\n\\r\\n    function getStaticOracle() external view returns (address);\\r\\n\\r\\n    function getBaluniYearnVaultRegistry() external view returns (address);\\r\\n\\r\\n    function getBaluniPoolZap() external view returns (address);\\r\\n\\r\\n    function getBaluniHyperPoolZap() external view returns (address);\\r\\n}\\r\\n\",\"keccak256\":\"0x8a5269da114538f58ead83106d244cfbb01a4d6106694a90ffcca33ff1b56a5c\",\"license\":\"GNU AGPLv3\"},\"contracts/interfaces/IBaluniV1Swapper.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\n\\r\\ninterface IBaluniV1Swapper {\\r\\n    function singleSwap(\\r\\n        address token0,\\r\\n        address token1,\\r\\n        uint256 amount,\\r\\n        address receiver\\r\\n    ) external returns (uint256 amountOut);\\r\\n    function multiHopSwap(\\r\\n        address token0,\\r\\n        address token1,\\r\\n        address token2,\\r\\n        uint256 amount,\\r\\n        address receiver\\r\\n    ) external returns (uint256 amountOut);\\r\\n}\\r\\n\",\"keccak256\":\"0x8113df3342115499d21149fa3fe70412cb6bdbf79766870f929b3845e1d2a0fe\",\"license\":\"GNU AGPLv3\"},\"contracts/interfaces/IBaluniV1YearnVault.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\n\\r\\ninterface IBaluniV1YearnVault {\\r\\n    function baseAsset() external view returns (address);\\r\\n    function yearnVault() external view returns (address);\\r\\n    function quoteAsset() external view returns (address);\\r\\n    function registry() external view returns (address);\\r\\n    function lastDeposit() external view returns (uint256);\\r\\n    function deposit(uint256 amount, address to) external;\\r\\n    function withdraw(uint256 shares, address to) external;\\r\\n    function buy() external;\\r\\n    function pause() external;\\r\\n    function unpause() external;\\r\\n    function totalValuation() external view returns (uint256);\\r\\n    function unitPrice() external view returns (uint256);\\r\\n    function interestEarned() external view returns (uint256);\\r\\n}\\r\\n\",\"keccak256\":\"0x1bc913632491c1953bdd30cc0a35acc2b8987b2309495e18bd8756f235b3f614\",\"license\":\"GNU AGPLv3\"},\"contracts/interfaces/IYearnVault.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\r\\npragma solidity ^0.8.0;\\r\\n\\r\\ninterface IYearnVault {\\r\\n    function asset() external view returns (address);\\r\\n\\r\\n    function balanceOf(address owner) external view returns (uint256);\\r\\n\\r\\n    function maxDeposit(address receiver) external view returns (uint256);\\r\\n\\r\\n    function redeem(uint256 shares, address receiver, address owner) external returns (uint256);\\r\\n\\r\\n    function deposit(uint256 assets, address receiver) external returns (uint256);\\r\\n\\r\\n    function totalAssets() external view returns (uint256);\\r\\n\\r\\n    function convertToAssets(uint256 shares) external view returns (uint256);\\r\\n\\r\\n    function convertToShares(uint256 assets) external view returns (uint256);\\r\\n\\r\\n    function previewWithdraw(uint256 assets) external view returns (uint256);\\r\\n\\r\\n    function maxRedeem(address owner) external view returns (uint256);\\r\\n}\\r\\n\",\"keccak256\":\"0x32952c4cf75af24a48eb5ce8ca05358d527dba5532e6f19e4db12ef418b82ab8\",\"license\":\"MIT\"},\"contracts/vaults/BaluniV1YearnVault.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\n\\r\\nimport '@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol';\\r\\nimport '@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol';\\r\\nimport '@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol';\\r\\nimport '@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol';\\r\\nimport '@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol';\\r\\nimport '@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol';\\r\\n\\r\\nimport '../interfaces/IBaluniV1Registry.sol';\\r\\nimport '../interfaces/IYearnVault.sol';\\r\\nimport '../interfaces/IBaluniV1Swapper.sol';\\r\\nimport '../interfaces/IBaluniV1Oracle.sol';\\r\\nimport '../interfaces/IBaluniV1YearnVault.sol';\\r\\n\\r\\ncontract BaluniV1YearnVault is\\r\\n    Initializable,\\r\\n    UUPSUpgradeable,\\r\\n    OwnableUpgradeable,\\r\\n    ERC20Upgradeable,\\r\\n    ReentrancyGuardUpgradeable,\\r\\n    PausableUpgradeable,\\r\\n    IBaluniV1YearnVault\\r\\n{\\r\\n    address public baseAsset;\\r\\n    IYearnVault private _yearnVault;\\r\\n    address public quoteAsset;\\r\\n    IBaluniV1Registry private _registry;\\r\\n\\r\\n    uint256 public accumulatedAssetB;\\r\\n    uint256 public lastDeposit;\\r\\n    uint256 public allTimeInterest;\\r\\n\\r\\n    event Buy(address indexed sender, uint256 amount, uint256 interest);\\r\\n\\r\\n    function initialize(\\r\\n        string memory _name,\\r\\n        string memory _symbol,\\r\\n        address _assetA,\\r\\n        address _yearnVaultAddress,\\r\\n        address _assetB,\\r\\n        address _registryAddress\\r\\n    ) external initializer {\\r\\n        __Ownable_init(msg.sender);\\r\\n        __ERC20_init(_name, _symbol);\\r\\n        __UUPSUpgradeable_init();\\r\\n        __ReentrancyGuard_init();\\r\\n        __Pausable_init();\\r\\n\\r\\n        baseAsset = _assetA;\\r\\n        _yearnVault = IYearnVault(_yearnVaultAddress);\\r\\n        quoteAsset = _assetB;\\r\\n        _registry = IBaluniV1Registry(_registryAddress);\\r\\n\\r\\n        require(baseAsset != address(0), 'Invalid assetA address');\\r\\n        require(address(_yearnVault) != address(0), 'Invalid Yearn Vault address');\\r\\n        require(quoteAsset != address(0), 'Invalid assetB address');\\r\\n    }\\r\\n\\r\\n    function reinitialize(\\r\\n        string memory _name,\\r\\n        string memory _symbol,\\r\\n        address _assetA,\\r\\n        address _yearnVaultAddress,\\r\\n        address _assetB,\\r\\n        address _registryAddress,\\r\\n        uint64 _version\\r\\n    ) external reinitializer(_version) {\\r\\n        __Ownable_init(msg.sender);\\r\\n        __ERC20_init(_name, _symbol);\\r\\n        __UUPSUpgradeable_init();\\r\\n        __ReentrancyGuard_init();\\r\\n        __Pausable_init();\\r\\n\\r\\n        baseAsset = _assetA;\\r\\n        _yearnVault = IYearnVault(_yearnVaultAddress);\\r\\n        quoteAsset = _assetB;\\r\\n        _registry = IBaluniV1Registry(_registryAddress);\\r\\n\\r\\n        require(baseAsset != address(0), 'Invalid assetA address');\\r\\n        require(address(_yearnVault) != address(0), 'Invalid Yearn Vault address');\\r\\n        require(quoteAsset != address(0), 'Invalid assetB address');\\r\\n    }\\r\\n\\r\\n    function _authorizeUpgrade(address newImplementation) internal override onlyOwner {}\\r\\n\\r\\n    function deposit(uint256 amount, address to) external override nonReentrant whenNotPaused {\\r\\n        require(amount > 0, 'Amount must be greater than zero');\\r\\n\\r\\n        _processInterest();\\r\\n\\r\\n        IERC20(baseAsset).transferFrom(msg.sender, address(this), amount);\\r\\n\\r\\n        address baluniRouter = _registry.getBaluniRouter();\\r\\n        address treasury = _registry.getTreasury();\\r\\n\\r\\n        uint hairCut = _haircut(amount);\\r\\n        uint hairCut2 = _haircut(hairCut);\\r\\n\\r\\n        IERC20(baseAsset).transfer(baluniRouter, hairCut - hairCut2);\\r\\n        IERC20(baseAsset).transfer(treasury, hairCut2);\\r\\n\\r\\n        uint256 amountAfter = amount - hairCut;\\r\\n\\r\\n        IERC20(baseAsset).approve(address(_yearnVault), amountAfter);\\r\\n        _yearnVault.deposit(amountAfter, address(this));\\r\\n\\r\\n        uint8 baseDecimal = IERC20Metadata(baseAsset).decimals();\\r\\n        uint8 yearnDecimal = IERC20Metadata(address(_yearnVault)).decimals();\\r\\n\\r\\n        if (baseDecimal > yearnDecimal) {\\r\\n            amountAfter = amountAfter / 10 ** (baseDecimal - yearnDecimal);\\r\\n        } else {\\r\\n            amountAfter = amountAfter * 10 ** (yearnDecimal - baseDecimal);\\r\\n        }\\r\\n\\r\\n        uint256 amountScaled = amountAfter * 10 ** (18 - yearnDecimal);\\r\\n\\r\\n        _mint(to, amountScaled);\\r\\n\\r\\n        lastDeposit = _yearnVault.convertToAssets(_yearnVault.balanceOf(address(this)));\\r\\n\\r\\n        accumulatedAssetB = IERC20(quoteAsset).balanceOf(address(this));\\r\\n    }\\r\\n\\r\\n    function _buy() internal {\\r\\n        uint256 totalAssets = _yearnVault.convertToAssets(_yearnVault.balanceOf(address(this)));\\r\\n        uint256 interest = totalAssets > lastDeposit ? totalAssets - lastDeposit : 0;\\r\\n        require(interest > 0, 'BaluniV1yVault: No interest available');\\r\\n\\r\\n        uint256 sharesToRedeem = _yearnVault.convertToShares(interest);\\r\\n        uint256 amountOut = _yearnVault.redeem(sharesToRedeem, address(this), address(this));\\r\\n\\r\\n        require(amountOut > 0, 'BaluniV1yVault: Redeem Failed');\\r\\n\\r\\n        IBaluniV1Swapper swapper = IBaluniV1Swapper(_registry.getBaluniSwapper());\\r\\n\\r\\n        IERC20(baseAsset).approve(address(swapper), amountOut);\\r\\n\\r\\n        swapper.singleSwap(baseAsset, quoteAsset, amountOut, address(this));\\r\\n\\r\\n        emit Buy(msg.sender, amountOut, interest);\\r\\n    }\\r\\n\\r\\n    function buy() external override nonReentrant whenNotPaused {\\r\\n        _buy();\\r\\n    }\\r\\n\\r\\n    function _processInterest() internal {\\r\\n        uint256 totalAssets = _yearnVault.convertToAssets(_yearnVault.balanceOf(address(this)));\\r\\n        uint256 interest = totalAssets > lastDeposit ? totalAssets - lastDeposit : 0;\\r\\n        uint8 baseDecimal = IERC20Metadata(baseAsset).decimals();\\r\\n        uint limit = 1 * 10 ** (baseDecimal - 2);\\r\\n        if (interest > limit) {\\r\\n            _buy();\\r\\n        }\\r\\n\\r\\n        accumulatedAssetB = IERC20(quoteAsset).balanceOf(address(this));\\r\\n    }\\r\\n\\r\\n    function pause() external override onlyOwner {\\r\\n        _pause();\\r\\n    }\\r\\n\\r\\n    function unpause() external override onlyOwner {\\r\\n        _unpause();\\r\\n    }\\r\\n\\r\\n    function totalValuation() public view override returns (uint256) {\\r\\n        IBaluniV1Oracle oracle = IBaluniV1Oracle(_registry.getBaluniOracle());\\r\\n        address USDC = _registry.getUSDC();\\r\\n        uint256 valuation = 0;\\r\\n\\r\\n        uint yearnBalance = _yearnVault.balanceOf(address(this));\\r\\n        uint yearnBalanceConvert = _yearnVault.convertToAssets(yearnBalance);\\r\\n        uint balanceQuote = IERC20(quoteAsset).balanceOf(address(this));\\r\\n\\r\\n        if (baseAsset != USDC) valuation += oracle.convert(baseAsset, USDC, yearnBalanceConvert);\\r\\n        valuation += oracle.convert(quoteAsset, baseAsset, balanceQuote);\\r\\n        valuation += yearnBalanceConvert;\\r\\n\\r\\n        uint256 interest = interestEarned();\\r\\n\\r\\n        if (baseAsset != USDC) valuation += oracle.convert(baseAsset, USDC, interest);\\r\\n\\r\\n        valuation += interest;\\r\\n\\r\\n        return valuation;\\r\\n    }\\r\\n\\r\\n    function unitPrice() external view override returns (uint256) {\\r\\n        if (totalSupply() == 0) return 0;\\r\\n        address USDC = _registry.getUSDC();\\r\\n        uint8 decimals = IERC20Metadata(USDC).decimals();\\r\\n        uint256 factor = 10 ** (18 - decimals);\\r\\n        uint256 valuationScaledUp = totalValuation() * factor;\\r\\n        uint256 unitPriceScaled = (valuationScaledUp * 1e18) / totalSupply();\\r\\n        return unitPriceScaled;\\r\\n    }\\r\\n\\r\\n    function registry() external view override returns (address) {\\r\\n        return address(_registry);\\r\\n    }\\r\\n\\r\\n    function yearnVault() external view override returns (address) {\\r\\n        return address(_yearnVault);\\r\\n    }\\r\\n\\r\\n    function _haircut(uint256 amount) internal view returns (uint256) {\\r\\n        uint256 _BPS_FEE = _registry.getBPS_FEE();\\r\\n        uint256 _BPS_BASE = _registry.getBPS_BASE();\\r\\n        return (amount * _BPS_FEE) / _BPS_BASE;\\r\\n    }\\r\\n\\r\\n    function interestEarned() public view override returns (uint256) {\\r\\n        uint256 totalAssets = _yearnVault.convertToAssets(_yearnVault.balanceOf(address(this)));\\r\\n        uint256 interest = totalAssets > lastDeposit ? totalAssets - lastDeposit : 0;\\r\\n        return interest;\\r\\n    }\\r\\n\\r\\n    function withdraw(uint256 shares, address to) external override nonReentrant whenNotPaused {\\r\\n        require(shares > 0, 'Shares must be greater than zero');\\r\\n        require(balanceOf(msg.sender) >= shares, 'Insufficient balance');\\r\\n        require(totalSupply() > 0, \\\"Total supply cannot be zero\\\");\\r\\n\\r\\n        uint8 yearnDecimal = IERC20Metadata(address(_yearnVault)).decimals();\\r\\n        uint8 quoteDecimal = IERC20Metadata(quoteAsset).decimals();\\r\\n        \\r\\n        // Ottieni i saldi\\r\\n        uint256 balanceYearnVault = _yearnVault.balanceOf(address(this));\\r\\n        uint256 quoteBalance = IERC20(quoteAsset).balanceOf(address(this));\\r\\n        uint256 baseBalance = IERC20(baseAsset).balanceOf(address(this));\\r\\n\\r\\n        // Verifica che la moltiplicazione non causi overflow\\r\\n        require(balanceYearnVault <= type(uint256).max / (10 ** (18 - yearnDecimal)), \\r\\n            \\\"YearnVault balance scaling would overflow\\\");\\r\\n        require(quoteBalance <= type(uint256).max / (10 ** (18 - quoteDecimal)), \\r\\n            \\\"Quote balance scaling would overflow\\\");\\r\\n\\r\\n        // Scala i saldi\\r\\n        balanceYearnVault *= 10 ** (18 - yearnDecimal);\\r\\n        quoteBalance *= 10 ** (18 - quoteDecimal);\\r\\n\\r\\n        // Verifica che shares non causi overflow nella moltiplicazione\\r\\n        require(shares <= type(uint256).max / balanceYearnVault, \\\"Shares calculation would overflow\\\");\\r\\n        require(shares <= type(uint256).max / quoteBalance, \\\"Shares calculation would overflow\\\");\\r\\n\\r\\n        // Calcola gli importi da prelevare\\r\\n        uint256 withdrawAmountA = (shares * balanceYearnVault) / totalSupply();\\r\\n        uint256 withdrawAmountB = (shares * quoteBalance) / totalSupply();\\r\\n\\r\\n        _burn(msg.sender, shares);\\r\\n\\r\\n        // Riscala gli importi\\r\\n        withdrawAmountA /= 10 ** (18 - yearnDecimal);\\r\\n        withdrawAmountB /= 10 ** (18 - quoteDecimal);\\r\\n\\r\\n        // Verifica che ci siano abbastanza asset nel yearnVault\\r\\n        require(withdrawAmountA <= _yearnVault.convertToAssets(balanceYearnVault), \\r\\n            \\\"Insufficient assets in Yearn Vault\\\");\\r\\n\\r\\n        _yearnVault.redeem(withdrawAmountA, address(this), address(this));\\r\\n\\r\\n        uint256 baseBalanceAfter = IERC20(baseAsset).balanceOf(address(this));\\r\\n        require(baseBalanceAfter >= baseBalance, \\\"Base balance check failed\\\");\\r\\n        uint256 amountToSend = baseBalanceAfter - baseBalance;\\r\\n        address receiver = to;\\r\\n\\r\\n        if (amountToSend > 0) {\\r\\n            uint256 hairCut = _haircut(amountToSend);\\r\\n            require(hairCut <= amountToSend, \\\"Haircut exceeds amount\\\");\\r\\n            \\r\\n            uint256 amountAfterHaircut = amountToSend - hairCut;\\r\\n            uint256 hairCut2 = _haircut(hairCut);\\r\\n            require(hairCut2 <= hairCut, \\\"Secondary haircut exceeds primary haircut\\\");\\r\\n            \\r\\n            address baluniRouter = _registry.getBaluniRouter();\\r\\n            address treasury = _registry.getTreasury();\\r\\n            \\r\\n            IERC20(baseAsset).transfer(receiver, amountToSend - hairCut);\\r\\n            IERC20(baseAsset).transfer(baluniRouter, hairCut - hairCut2);\\r\\n            IERC20(baseAsset).transfer(treasury, hairCut2);\\r\\n        }\\r\\n\\r\\n        if (withdrawAmountB > 0) {\\r\\n            bool success = _handleWithdrawB(withdrawAmountB, receiver);\\r\\n            require(success, \\\"Failed to transfer quoteAsset\\\");\\r\\n        }\\r\\n\\r\\n        lastDeposit = _yearnVault.convertToAssets(_yearnVault.balanceOf(address(this)));\\r\\n    }\\r\\n\\r\\n    function _handleWithdrawB(uint256 withdrawAmountB, address receiver) internal returns (bool) {\\r\\n        require(withdrawAmountB <= IERC20(quoteAsset).balanceOf(address(this)), \\r\\n            \\\"Insufficient quote asset balance\\\");\\r\\n        \\r\\n        uint256 hairCut = _haircut(withdrawAmountB);\\r\\n        require(hairCut <= withdrawAmountB, \\\"Haircut exceeds withdrawal amount\\\");\\r\\n        \\r\\n        uint256 amountAfterHaircut = withdrawAmountB - hairCut;\\r\\n        uint256 hairCut2 = _haircut(hairCut);\\r\\n        require(hairCut2 <= hairCut, \\\"Secondary haircut exceeds primary haircut\\\");\\r\\n        \\r\\n        address baluniRouter = _registry.getBaluniRouter();\\r\\n        address treasury = _registry.getTreasury();\\r\\n        \\r\\n        IERC20(quoteAsset).transfer(receiver, amountAfterHaircut);\\r\\n        IERC20(quoteAsset).transfer(baluniRouter, hairCut - hairCut2);\\r\\n        IERC20(quoteAsset).transfer(treasury, hairCut2);\\r\\n        \\r\\n        return true;\\r\\n    }\\r\\n}\\r\\n\",\"keccak256\":\"0x855bd0ab105beb03f504b3899908e18c1c58f8c65cb180d0d8277319e06a795e\",\"license\":\"GNU AGPLv3\"}},\"version\":1}","storageLayout":{"storage":[{"astId":2985,"contract":"contracts/vaults/BaluniV1YearnVault.sol:BaluniV1YearnVault","label":"baseAsset","offset":0,"slot":"0","type":"t_address"},{"astId":2988,"contract":"contracts/vaults/BaluniV1YearnVault.sol:BaluniV1YearnVault","label":"_yearnVault","offset":0,"slot":"1","type":"t_contract(IYearnVault)2956"},{"astId":2990,"contract":"contracts/vaults/BaluniV1YearnVault.sol:BaluniV1YearnVault","label":"quoteAsset","offset":0,"slot":"2","type":"t_address"},{"astId":2993,"contract":"contracts/vaults/BaluniV1YearnVault.sol:BaluniV1YearnVault","label":"_registry","offset":0,"slot":"3","type":"t_contract(IBaluniV1Registry)2784"},{"astId":2995,"contract":"contracts/vaults/BaluniV1YearnVault.sol:BaluniV1YearnVault","label":"accumulatedAssetB","offset":0,"slot":"4","type":"t_uint256"},{"astId":2997,"contract":"contracts/vaults/BaluniV1YearnVault.sol:BaluniV1YearnVault","label":"lastDeposit","offset":0,"slot":"5","type":"t_uint256"},{"astId":2999,"contract":"contracts/vaults/BaluniV1YearnVault.sol:BaluniV1YearnVault","label":"allTimeInterest","offset":0,"slot":"6","type":"t_uint256"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_contract(IBaluniV1Registry)2784":{"encoding":"inplace","label":"contract IBaluniV1Registry","numberOfBytes":"20"},"t_contract(IYearnVault)2956":{"encoding":"inplace","label":"contract IYearnVault","numberOfBytes":"20"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"userdoc":{"kind":"user","methods":{},"version":1}}}}}}